staging: brcm80211: remove the rest of broadcom specific byte swapping routines
[cascardo/linux.git] / drivers / staging / brcm80211 / brcmsmac / phy / wlc_phy_n.c
1 /*
2  * Copyright (c) 2010 Broadcom Corporation
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
11  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
13  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
14  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16
17 #include <linux/kernel.h>
18 #include <linux/string.h>
19 #include <bcmdefs.h>
20 #include <wlc_cfg.h>
21 #include <linux/delay.h>
22 #include <linux/pci.h>
23 #include <osl.h>
24 #include <siutils.h>
25 #include <sbchipc.h>
26 #include <hndpmu.h>
27
28 #include <bcmdevs.h>
29 #include <sbhndpio.h>
30 #include <sbhnddma.h>
31
32 #include <wlc_phy_radio.h>
33 #include <wlc_phy_int.h>
34 #include <wlc_phyreg_n.h>
35 #include <wlc_phytbl_n.h>
36
37 #define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name) \
38         read_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
39         ((core == PHY_CORE_0) ? radio_type##_##jspace##0 : radio_type##_##jspace##1))
40 #define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value) \
41         write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
42         ((core == PHY_CORE_0) ? radio_type##_##jspace##0 : radio_type##_##jspace##1), value);
43 #define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
44         write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value);
45
46 #define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name) \
47         read_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##jspace##0##_##reg_name : \
48         radio_type##_##jspace##1##_##reg_name));
49 #define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value) \
50         write_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##jspace##0##_##reg_name : \
51         radio_type##_##jspace##1##_##reg_name), value);
52 #define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name) \
53         read_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##reg_name##_##jspace##0 : \
54         radio_type##_##reg_name##_##jspace##1));
55 #define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value) \
56         write_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##reg_name##_##jspace##0 : \
57         radio_type##_##reg_name##_##jspace##1), value);
58
59 #define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
60 #define NPHY_ACI_CHANNEL_DELTA 5
61 #define NPHY_ACI_CHANNEL_SKIP 4
62 #define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
63 #define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
64 #define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
65 #define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
66 #define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
67 #define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
68
69 #define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
70
71 #define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
72
73 #define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
74
75 #define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
76
77 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
78
79 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
80
81 #define NPHY_NOISE_NOASSOC_ENTER_TH  400
82
83 #define NPHY_NOISE_ASSOC_ENTER_TH  400
84
85 #define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH  400
86
87 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
88 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
89
90 #define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
91
92 #define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
93
94 #define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
95
96 #define NPHY_RSSICAL_MAXREAD 31
97
98 #define NPHY_RSSICAL_NPOLL 8
99 #define NPHY_RSSICAL_MAXD  (1<<20)
100 #define NPHY_MIN_RXIQ_PWR 2
101
102 #define NPHY_RSSICAL_W1_TARGET 25
103 #define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
104 #define NPHY_RSSICAL_NB_TARGET 0
105
106 #define NPHY_RSSICAL_W1_TARGET_REV3 29
107 #define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
108
109 #define NPHY_CALSANITY_RSSI_NB_MAX_POS  9
110 #define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
111 #define NPHY_CALSANITY_RSSI_W1_MAX_POS  12
112 #define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - NPHY_RSSICAL_MAXREAD)
113 #define NPHY_CALSANITY_RSSI_W2_MAX_POS  NPHY_CALSANITY_RSSI_W1_MAX_POS
114 #define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - NPHY_RSSICAL_MAXREAD)
115 #define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
116 #define NPHY_RSSI_NB_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
117                                ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
118 #define NPHY_RSSI_W1_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
119                                ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
120 #define NPHY_RSSI_W2_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
121                                ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
122
123 #define NPHY_IQCAL_NUMGAINS 9
124 #define NPHY_N_GCTL 0x66
125
126 #define NPHY_PAPD_EPS_TBL_SIZE 64
127 #define NPHY_PAPD_SCL_TBL_SIZE 64
128 #define NPHY_NUM_DIG_FILT_COEFFS 15
129
130 #define NPHY_PAPD_COMP_OFF 0
131 #define NPHY_PAPD_COMP_ON  1
132
133 #define NPHY_SROM_TEMPSHIFT             32
134 #define NPHY_SROM_MAXTEMPOFFSET         16
135 #define NPHY_SROM_MINTEMPOFFSET         -16
136
137 #define NPHY_CAL_MAXTEMPDELTA           64
138
139 #define NPHY_NOISEVAR_TBLLEN40 256
140 #define NPHY_NOISEVAR_TBLLEN20 128
141
142 #define NPHY_ANARXLPFBW_REDUCTIONFACT 7
143
144 #define NPHY_ADJUSTED_MINCRSPOWER 0x1e
145
146 typedef struct _nphy_iqcal_params {
147         u16 txlpf;
148         u16 txgm;
149         u16 pga;
150         u16 pad;
151         u16 ipa;
152         u16 cal_gain;
153         u16 ncorr[5];
154 } nphy_iqcal_params_t;
155
156 typedef struct _nphy_txiqcal_ladder {
157         u8 percent;
158         u8 g_env;
159 } nphy_txiqcal_ladder_t;
160
161 typedef struct {
162         nphy_txgains_t gains;
163         bool useindex;
164         u8 index;
165 } nphy_ipa_txcalgains_t;
166
167 typedef struct nphy_papd_restore_state_t {
168         u16 fbmix[2];
169         u16 vga_master[2];
170         u16 intpa_master[2];
171         u16 afectrl[2];
172         u16 afeoverride[2];
173         u16 pwrup[2];
174         u16 atten[2];
175         u16 mm;
176 } nphy_papd_restore_state;
177
178 typedef struct _nphy_ipa_txrxgain {
179         u16 hpvga;
180         u16 lpf_biq1;
181         u16 lpf_biq0;
182         u16 lna2;
183         u16 lna1;
184         s8 txpwrindex;
185 } nphy_ipa_txrxgain_t;
186
187 #define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
188
189 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_5GHz[] = { {0, 0, 0, 0, 0, 100},
190 {0, 0, 0, 0, 0, 50},
191 {0, 0, 0, 0, 0, -1},
192 {0, 0, 0, 3, 0, -1},
193 {0, 0, 3, 3, 0, -1},
194 {0, 2, 3, 3, 0, -1}
195 };
196
197 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_2GHz[] = { {0, 0, 0, 0, 0, 128},
198 {0, 0, 0, 0, 0, 70},
199 {0, 0, 0, 0, 0, 20},
200 {0, 0, 0, 3, 0, 20},
201 {0, 0, 3, 3, 0, 20},
202 {0, 2, 3, 3, 0, 20}
203 };
204
205 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = { {0, 0, 0, 0, 0, 100},
206 {0, 0, 0, 0, 0, 50},
207 {0, 0, 0, 0, 0, -1},
208 {0, 0, 0, 3, 0, -1},
209 {0, 0, 3, 3, 0, -1},
210 {0, 0, 5, 3, 0, -1}
211 };
212
213 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = { {0, 0, 0, 0, 0, 10},
214 {0, 0, 0, 1, 0, 10},
215 {0, 0, 1, 2, 0, 10},
216 {0, 0, 1, 3, 0, 10},
217 {0, 0, 4, 3, 0, 10},
218 {0, 0, 6, 3, 0, 10}
219 };
220
221 #define NPHY_RXCAL_TONEAMP 181
222 #define NPHY_RXCAL_TONEFREQ_40MHz 4000
223 #define NPHY_RXCAL_TONEFREQ_20MHz 2000
224
225 enum {
226         NPHY_RXCAL_GAIN_INIT = 0,
227         NPHY_RXCAL_GAIN_UP,
228         NPHY_RXCAL_GAIN_DOWN
229 };
230
231 #define wlc_phy_get_papd_nphy(pi) \
232         (read_phy_reg((pi), 0x1e7) & \
233                         ((0x1 << 15) | \
234                         (0x1 << 14) | \
235                         (0x1 << 13)))
236
237 #define TXFILT_SHAPING_OFDM20   0
238 #define TXFILT_SHAPING_OFDM40   1
239 #define TXFILT_SHAPING_CCK      2
240 #define TXFILT_DEFAULT_OFDM20   3
241 #define TXFILT_DEFAULT_OFDM40   4
242
243 u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
244         {-377, 137, -407, 208, -1527, 956, 93, 186, 93,
245          230, -44, 230, 201, -191, 201},
246         {-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
247          26, 34, -32, 34},
248         {-360, 164, -376, 164, -1533, 576, 308, -314, 308,
249          121, -73, 121, 91, 124, 91},
250         {-295, 200, -363, 142, -1391, 826, 151, 301, 151,
251          151, 301, 151, 602, -752, 602},
252         {-92, 58, -96, 49, -104, 44, 17, 35, 17,
253          12, 25, 12, 13, 27, 13},
254         {-375, 136, -399, 209, -1479, 949, 130, 260, 130,
255          230, -44, 230, 201, -191, 201},
256         {0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
257          0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
258 };
259
260 typedef struct _chan_info_nphy_2055 {
261         u16 chan;
262         u16 freq;
263         uint unknown;
264         u8 RF_pll_ref;
265         u8 RF_rf_pll_mod1;
266         u8 RF_rf_pll_mod0;
267         u8 RF_vco_cap_tail;
268         u8 RF_vco_cal1;
269         u8 RF_vco_cal2;
270         u8 RF_pll_lf_c1;
271         u8 RF_pll_lf_r1;
272         u8 RF_pll_lf_c2;
273         u8 RF_lgbuf_cen_buf;
274         u8 RF_lgen_tune1;
275         u8 RF_lgen_tune2;
276         u8 RF_core1_lgbuf_a_tune;
277         u8 RF_core1_lgbuf_g_tune;
278         u8 RF_core1_rxrf_reg1;
279         u8 RF_core1_tx_pga_pad_tn;
280         u8 RF_core1_tx_mx_bgtrim;
281         u8 RF_core2_lgbuf_a_tune;
282         u8 RF_core2_lgbuf_g_tune;
283         u8 RF_core2_rxrf_reg1;
284         u8 RF_core2_tx_pga_pad_tn;
285         u8 RF_core2_tx_mx_bgtrim;
286         u16 PHY_BW1a;
287         u16 PHY_BW2;
288         u16 PHY_BW3;
289         u16 PHY_BW4;
290         u16 PHY_BW5;
291         u16 PHY_BW6;
292 } chan_info_nphy_2055_t;
293
294 typedef struct _chan_info_nphy_radio205x {
295         u16 chan;
296         u16 freq;
297         u8 RF_SYN_pll_vcocal1;
298         u8 RF_SYN_pll_vcocal2;
299         u8 RF_SYN_pll_refdiv;
300         u8 RF_SYN_pll_mmd2;
301         u8 RF_SYN_pll_mmd1;
302         u8 RF_SYN_pll_loopfilter1;
303         u8 RF_SYN_pll_loopfilter2;
304         u8 RF_SYN_pll_loopfilter3;
305         u8 RF_SYN_pll_loopfilter4;
306         u8 RF_SYN_pll_loopfilter5;
307         u8 RF_SYN_reserved_addr27;
308         u8 RF_SYN_reserved_addr28;
309         u8 RF_SYN_reserved_addr29;
310         u8 RF_SYN_logen_VCOBUF1;
311         u8 RF_SYN_logen_MIXER2;
312         u8 RF_SYN_logen_BUF3;
313         u8 RF_SYN_logen_BUF4;
314         u8 RF_RX0_lnaa_tune;
315         u8 RF_RX0_lnag_tune;
316         u8 RF_TX0_intpaa_boost_tune;
317         u8 RF_TX0_intpag_boost_tune;
318         u8 RF_TX0_pada_boost_tune;
319         u8 RF_TX0_padg_boost_tune;
320         u8 RF_TX0_pgaa_boost_tune;
321         u8 RF_TX0_pgag_boost_tune;
322         u8 RF_TX0_mixa_boost_tune;
323         u8 RF_TX0_mixg_boost_tune;
324         u8 RF_RX1_lnaa_tune;
325         u8 RF_RX1_lnag_tune;
326         u8 RF_TX1_intpaa_boost_tune;
327         u8 RF_TX1_intpag_boost_tune;
328         u8 RF_TX1_pada_boost_tune;
329         u8 RF_TX1_padg_boost_tune;
330         u8 RF_TX1_pgaa_boost_tune;
331         u8 RF_TX1_pgag_boost_tune;
332         u8 RF_TX1_mixa_boost_tune;
333         u8 RF_TX1_mixg_boost_tune;
334         u16 PHY_BW1a;
335         u16 PHY_BW2;
336         u16 PHY_BW3;
337         u16 PHY_BW4;
338         u16 PHY_BW5;
339         u16 PHY_BW6;
340 } chan_info_nphy_radio205x_t;
341
342 typedef struct _chan_info_nphy_radio2057 {
343         u16 chan;
344         u16 freq;
345         u8 RF_vcocal_countval0;
346         u8 RF_vcocal_countval1;
347         u8 RF_rfpll_refmaster_sparextalsize;
348         u8 RF_rfpll_loopfilter_r1;
349         u8 RF_rfpll_loopfilter_c2;
350         u8 RF_rfpll_loopfilter_c1;
351         u8 RF_cp_kpd_idac;
352         u8 RF_rfpll_mmd0;
353         u8 RF_rfpll_mmd1;
354         u8 RF_vcobuf_tune;
355         u8 RF_logen_mx2g_tune;
356         u8 RF_logen_mx5g_tune;
357         u8 RF_logen_indbuf2g_tune;
358         u8 RF_logen_indbuf5g_tune;
359         u8 RF_txmix2g_tune_boost_pu_core0;
360         u8 RF_pad2g_tune_pus_core0;
361         u8 RF_pga_boost_tune_core0;
362         u8 RF_txmix5g_boost_tune_core0;
363         u8 RF_pad5g_tune_misc_pus_core0;
364         u8 RF_lna2g_tune_core0;
365         u8 RF_lna5g_tune_core0;
366         u8 RF_txmix2g_tune_boost_pu_core1;
367         u8 RF_pad2g_tune_pus_core1;
368         u8 RF_pga_boost_tune_core1;
369         u8 RF_txmix5g_boost_tune_core1;
370         u8 RF_pad5g_tune_misc_pus_core1;
371         u8 RF_lna2g_tune_core1;
372         u8 RF_lna5g_tune_core1;
373         u16 PHY_BW1a;
374         u16 PHY_BW2;
375         u16 PHY_BW3;
376         u16 PHY_BW4;
377         u16 PHY_BW5;
378         u16 PHY_BW6;
379 } chan_info_nphy_radio2057_t;
380
381 typedef struct _chan_info_nphy_radio2057_rev5 {
382         u16 chan;
383         u16 freq;
384         u8 RF_vcocal_countval0;
385         u8 RF_vcocal_countval1;
386         u8 RF_rfpll_refmaster_sparextalsize;
387         u8 RF_rfpll_loopfilter_r1;
388         u8 RF_rfpll_loopfilter_c2;
389         u8 RF_rfpll_loopfilter_c1;
390         u8 RF_cp_kpd_idac;
391         u8 RF_rfpll_mmd0;
392         u8 RF_rfpll_mmd1;
393         u8 RF_vcobuf_tune;
394         u8 RF_logen_mx2g_tune;
395         u8 RF_logen_indbuf2g_tune;
396         u8 RF_txmix2g_tune_boost_pu_core0;
397         u8 RF_pad2g_tune_pus_core0;
398         u8 RF_lna2g_tune_core0;
399         u8 RF_txmix2g_tune_boost_pu_core1;
400         u8 RF_pad2g_tune_pus_core1;
401         u8 RF_lna2g_tune_core1;
402         u16 PHY_BW1a;
403         u16 PHY_BW2;
404         u16 PHY_BW3;
405         u16 PHY_BW4;
406         u16 PHY_BW5;
407         u16 PHY_BW6;
408 } chan_info_nphy_radio2057_rev5_t;
409
410 typedef struct nphy_sfo_cfg {
411         u16 PHY_BW1a;
412         u16 PHY_BW2;
413         u16 PHY_BW3;
414         u16 PHY_BW4;
415         u16 PHY_BW5;
416         u16 PHY_BW6;
417 } nphy_sfo_cfg_t;
418
419 static chan_info_nphy_2055_t chan_info_nphy_2055[] = {
420         {
421          184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
422          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
423          0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
424         {
425          186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
426          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
427          0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
428         {
429          188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
430          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
431          0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
432         {
433          190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
434          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
435          0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
436         {
437          192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
438          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
439          0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
440         {
441          194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
442          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
443          0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
444         {
445          196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
446          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
447          0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
448         {
449          198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
450          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
451          0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
452         {
453          200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
454          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
455          0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
456         {
457          202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
458          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
459          0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
460         {
461          204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
462          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
463          0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
464         {
465          206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
466          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
467          0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
468         {
469          208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
470          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
471          0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
472         {
473          210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
474          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
475          0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
476         {
477          212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
478          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
479          0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
480         {
481          214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
482          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
483          0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
484         {
485          216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
486          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
487          0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
488         {
489          218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
490          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
491          0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
492         {
493          220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
494          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
495          0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
496         {
497          222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
498          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
499          0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
500         {
501          224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
502          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
503          0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
504         {
505          226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
506          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
507          0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
508         {
509          228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
510          0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
511          0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
512         {
513          32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
514          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
515          0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
516         {
517          34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
518          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
519          0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
520         {
521          36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
522          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
523          0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
524         {
525          38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
526          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
527          0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
528         {
529          40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
530          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
531          0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
532         {
533          42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
534          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
535          0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
536         {
537          44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
538          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
539          0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
540         {
541          46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
542          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
543          0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
544         {
545          48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
546          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
547          0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
548         {
549          50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
550          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
551          0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
552         {
553          52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
554          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
555          0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
556         {
557          54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
558          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
559          0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
560         {
561          56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
562          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
563          0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
564         {
565          58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
566          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
567          0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
568         {
569          60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
570          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
571          0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
572         {
573          62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
574          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
575          0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
576         {
577          64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
578          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
579          0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
580         {
581          66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
582          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
583          0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
584         {
585          68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
586          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
587          0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
588         {
589          70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
590          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
591          0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
592         {
593          72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
594          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
595          0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
596         {
597          74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
598          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
599          0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
600         {
601          76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
602          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
603          0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
604         {
605          78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
606          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
607          0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
608         {
609          80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
610          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
611          0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
612         {
613          82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
614          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
615          0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
616         {
617          84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
618          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
619          0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
620         {
621          86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
622          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
623          0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
624         {
625          88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
626          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
627          0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
628         {
629          90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
630          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
631          0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
632         {
633          92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
634          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
635          0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
636         {
637          94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
638          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
639          0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
640         {
641          96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
642          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
643          0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
644         {
645          98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
646          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
647          0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
648         {
649          100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
650          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
651          0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
652         {
653          102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
654          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
655          0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
656         {
657          104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
658          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
659          0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
660         {
661          106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
662          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
663          0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
664         {
665          108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
666          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
667          0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
668         {
669          110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
670          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
671          0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
672         {
673          112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
674          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
675          0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
676         {
677          114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
678          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
679          0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
680         {
681          116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
682          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
683          0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
684         {
685          118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
686          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
687          0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
688         {
689          120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
690          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
691          0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
692         {
693          122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
694          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
695          0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
696         {
697          124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
698          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
699          0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
700         {
701          126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
702          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
703          0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
704         {
705          128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
706          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
707          0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
708         {
709          130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
710          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
711          0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
712         {
713          132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
714          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
715          0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
716         {
717          134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
718          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
719          0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
720         {
721          136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
722          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
723          0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
724         {
725          138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
726          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
727          0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
728         {
729          140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
730          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
731          0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
732         {
733          142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
734          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
735          0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
736         {
737          144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
738          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
739          0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
740         {
741          145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
742          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
743          0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
744         {
745          146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
746          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
747          0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
748         {
749          147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
750          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
751          0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
752         {
753          148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
754          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
755          0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
756         {
757          149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
758          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
759          0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
760         {
761          150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
762          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
763          0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
764         {
765          151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
766          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
767          0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
768         {
769          152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
770          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
771          0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
772         {
773          153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
774          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
775          0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
776         {
777          154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
778          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
779          0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
780         {
781          155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
782          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
783          0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
784         {
785          156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
786          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
787          0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
788         {
789          157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
790          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
791          0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
792         {
793          158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
794          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
795          0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
796         {
797          159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
798          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
799          0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
800         {
801          160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
802          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
803          0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
804         {
805          161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
806          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
807          0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
808         {
809          162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
810          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
811          0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
812         {
813          163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
814          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
815          0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
816         {
817          164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
818          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
819          0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
820         {
821          165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
822          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
823          0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
824         {
825          166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
826          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
827          0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
828         {
829          168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
830          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
831          0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
832         {
833          170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
834          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
835          0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
836         {
837          172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
838          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
839          0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
840         {
841          174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
842          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
843          0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
844         {
845          176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
846          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
847          0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
848         {
849          178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
850          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
851          0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
852         {
853          180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
854          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
855          0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
856         {
857          182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
858          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
859          0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
860         {
861          1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
862          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
863          0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
864         {
865          2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
866          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
867          0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
868         {
869          3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
870          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
871          0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
872         {
873          4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
874          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
875          0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
876         {
877          5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
878          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
879          0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
880         {
881          6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
882          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
883          0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
884         {
885          7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
886          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
887          0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
888         {
889          8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
890          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
891          0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
892         {
893          9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
894          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
895          0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
896         {
897          10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
898          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
899          0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
900         {
901          11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
902          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
903          0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
904         {
905          12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
906          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
907          0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
908         {
909          13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
910          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
911          0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
912         {
913          14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
914          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
915          0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
916 };
917
918 static chan_info_nphy_radio205x_t chan_info_nphyrev3_2056[] = {
919         {
920          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
921          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
922          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
923          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
924         {
925          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
926          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
927          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
928          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
929         {
930          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
931          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
932          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
933          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
934         {
935          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
936          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
937          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
938          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
939         {
940          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
941          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
942          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
943          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
944         {
945          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
946          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
947          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
948          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
949         {
950          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
951          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
952          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
953          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
954         {
955          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
956          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
957          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
958          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
959         {
960          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
961          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
962          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
963          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
964         {
965          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
966          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
967          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
968          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
969         {
970          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
971          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
972          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
973          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
974         {
975          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
976          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
977          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
978          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
979         {
980          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
981          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
982          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
983          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
984         {
985          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
986          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
987          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
988          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
989         {
990          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
991          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
992          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
993          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
994         {
995          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
996          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
997          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
998          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
999         {
1000          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1001          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1002          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1003          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1004         {
1005          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1006          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1007          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1008          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1009         {
1010          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1011          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1012          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1013          0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1014         {
1015          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1016          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1017          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1018          0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1019         {
1020          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1021          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1022          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1023          0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1024         {
1025          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1026          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1027          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1028          0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1029         {
1030          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1031          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1032          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1033          0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1034         {
1035          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1036          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1037          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1038          0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1039         {
1040          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1041          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1042          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1043          0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1044         {
1045          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1046          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1047          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1048          0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1049         {
1050          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1051          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1052          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1053          0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1054         {
1055          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1056          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1057          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1058          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1059         {
1060          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1061          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1062          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1063          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1064         {
1065          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1066          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1067          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1068          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1069         {
1070          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1071          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1072          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1073          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1074         {
1075          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1076          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1077          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1078          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1079         {
1080          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1081          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1082          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1083          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1084         {
1085          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1086          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1087          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1088          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1089         {
1090          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1091          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1092          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1093          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1094         {
1095          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1096          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1097          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1098          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1099         {
1100          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1101          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1102          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1103          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1104         {
1105          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1106          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1107          0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1108          0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1109         {
1110          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1111          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1112          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1113          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1114         {
1115          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1116          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1117          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1118          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1119         {
1120          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1121          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1122          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1123          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1124         {
1125          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1126          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1127          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1128          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1129         {
1130          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1131          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1132          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1133          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1134         {
1135          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1136          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1137          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1138          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1139         {
1140          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1141          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1142          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1143          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1144         {
1145          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1146          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1147          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1148          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1149         {
1150          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1151          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1152          0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1153          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1154         {
1155          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1156          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1157          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1158          0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1159         {
1160          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1161          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1162          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1163          0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1164         {
1165          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1166          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1167          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1168          0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1169         {
1170          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1171          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1172          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1173          0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1174         {
1175          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1176          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1177          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1178          0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1179         {
1180          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1181          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1182          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1183          0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1184         {
1185          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1186          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1187          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1188          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1189         {
1190          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1191          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1192          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1193          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1194         {
1195          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1196          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1197          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1198          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1199         {
1200          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1201          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1202          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1203          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1204         {
1205          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1206          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1207          0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1208          0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1209         {
1210          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1211          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1212          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1213          0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1214         {
1215          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1216          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1217          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1218          0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1219         {
1220          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1221          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1222          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1223          0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1224         {
1225          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1226          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1227          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1228          0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1229         {
1230          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1231          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1232          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1233          0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1234         {
1235          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1236          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1237          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1238          0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1239         {
1240          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1241          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1242          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1243          0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1244         {
1245          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1246          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1247          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1248          0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1249         {
1250          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1251          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1252          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1253          0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1254         {
1255          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1256          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1257          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1258          0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1259         {
1260          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1261          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1262          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1263          0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1264         {
1265          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1266          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1267          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1268          0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1269         {
1270          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1271          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1272          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1273          0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1274         {
1275          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1276          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1277          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1278          0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1279         {
1280          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1281          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1282          0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1283          0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1284         {
1285          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1286          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1287          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1288          0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1289         {
1290          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1291          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1292          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1293          0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1294         {
1295          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1296          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1297          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1298          0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1299         {
1300          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1301          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1302          0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1303          0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1304         {
1305          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1306          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1307          0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1308          0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1309         {
1310          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1311          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1312          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1313          0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1314         {
1315          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1316          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1317          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1318          0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1319         {
1320          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1321          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1322          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1323          0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1324         {
1325          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1326          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1327          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1328          0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1329         {
1330          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1331          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1332          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1333          0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1334         {
1335          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1336          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1337          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1338          0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1339         {
1340          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1341          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1342          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1343          0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1344         {
1345          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1346          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1347          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1348          0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1349         {
1350          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1351          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1352          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1353          0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1354         {
1355          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1356          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1357          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1358          0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1359         {
1360          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1361          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1362          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1363          0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1364         {
1365          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1366          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1367          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1368          0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1369         {
1370          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1371          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1372          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1373          0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1374         {
1375          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1376          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1377          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1378          0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1379         {
1380          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1381          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1382          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1383          0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1384         {
1385          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1386          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1387          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1388          0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1389         {
1390          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1391          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1392          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1393          0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1394         {
1395          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1396          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1397          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1398          0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1399         {
1400          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1401          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1402          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1403          0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1404         {
1405          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1406          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1407          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1408          0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1409         {
1410          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1411          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1412          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1413          0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1414         {
1415          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1416          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1417          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1418          0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1419         {
1420          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1421          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1422          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1423          0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1424         {
1425          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1426          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1427          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1428          0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1429         {
1430          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1431          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1432          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1433          0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1434         {
1435          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1436          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1437          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1438          0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1439         {
1440          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1441          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1442          0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1443          0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1444         {
1445          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1446          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1447          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1448          0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1449         {
1450          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1451          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1452          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1453          0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1454         {
1455          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1456          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1457          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1458          0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1459         {
1460          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1461          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1462          0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1463          0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1464         {
1465          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1466          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1467          0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1468          0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1469         {
1470          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1471          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1472          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1473          0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1474         {
1475          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1476          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1477          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1478          0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1479         {
1480          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1481          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1482          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1483          0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1484         {
1485          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1486          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1487          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1488          0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1489         {
1490          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1491          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1492          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1493          0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1494         {
1495          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1496          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1497          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1498          0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1499         {
1500          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1501          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1502          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1503          0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1504         {
1505          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1506          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1507          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1508          0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1509         {
1510          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1511          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1512          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1513          0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1514         {
1515          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1516          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1517          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1518          0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1519         {
1520          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1521          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1522          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1523          0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1524         {
1525          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1526          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1527          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1528          0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1529         {
1530          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1531          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1532          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1533          0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1534         {
1535          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1536          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1537          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1538          0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1539 };
1540
1541 static chan_info_nphy_radio205x_t chan_info_nphyrev4_2056_A1[] = {
1542         {
1543          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1544          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1545          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1546          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1547         {
1548          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1549          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1550          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1551          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1552         {
1553          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1554          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1555          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1556          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1557         {
1558          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1559          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1560          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1561          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1562         {
1563          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1564          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1565          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1566          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1567         {
1568          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1569          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1570          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1571          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1572         {
1573          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1574          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1575          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1576          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1577         {
1578          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1579          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1580          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1581          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1582         {
1583          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1584          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1585          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1586          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1587         {
1588          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1589          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1590          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1591          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1592         {
1593          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1594          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1595          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1596          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1597         {
1598          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1599          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1600          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1601          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1602         {
1603          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1604          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1605          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1606          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1607         {
1608          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1609          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1610          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1611          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1612         {
1613          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1614          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1615          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1616          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1617         {
1618          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1619          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1620          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1621          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1622         {
1623          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1624          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1625          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1626          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1627         {
1628          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1629          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1630          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1631          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1632         {
1633          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1634          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1635          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1636          0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1637         {
1638          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1639          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1640          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1641          0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1642         {
1643          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1644          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1645          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1646          0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1647         {
1648          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1649          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1650          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1651          0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1652         {
1653          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1654          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1655          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1656          0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1657         {
1658          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1659          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1660          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1661          0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1662         {
1663          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1664          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1665          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1666          0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1667         {
1668          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1669          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1670          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1671          0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1672         {
1673          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1674          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1675          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1676          0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1677         {
1678          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1679          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1680          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1681          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1682         {
1683          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1684          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1685          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1686          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1687         {
1688          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1689          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1690          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1691          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1692         {
1693          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1694          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1695          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1696          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1697         {
1698          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1699          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1700          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1701          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1702         {
1703          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1704          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1705          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1706          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1707         {
1708          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1709          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1710          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1711          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1712         {
1713          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1714          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1715          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1716          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1717         {
1718          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1719          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1720          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1721          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1722         {
1723          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1724          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1725          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1726          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1727         {
1728          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1729          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1730          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1731          0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1732         {
1733          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1734          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1735          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1736          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1737         {
1738          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1739          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1740          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1741          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1742         {
1743          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1744          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1745          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1746          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1747         {
1748          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1749          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1750          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1751          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1752         {
1753          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1754          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1755          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1756          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1757         {
1758          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1759          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1760          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1761          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1762         {
1763          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1764          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1765          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1766          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1767         {
1768          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1769          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1770          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1771          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1772         {
1773          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1774          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1775          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1776          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1777         {
1778          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1779          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1780          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1781          0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1782         {
1783          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1784          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1785          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1786          0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1787         {
1788          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1789          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1790          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1791          0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1792         {
1793          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1794          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1795          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1796          0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1797         {
1798          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1799          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1800          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1801          0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1802         {
1803          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1804          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1805          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1806          0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1807         {
1808          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1809          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1810          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1811          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1812         {
1813          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1814          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1815          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1816          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1817         {
1818          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1819          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1820          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1821          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1822         {
1823          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1824          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1825          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1826          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1827         {
1828          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1829          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1830          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1831          0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1832         {
1833          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1834          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1835          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1836          0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1837         {
1838          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1839          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1840          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1841          0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1842         {
1843          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1844          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1845          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1846          0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1847         {
1848          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1849          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1850          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1851          0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1852         {
1853          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1854          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1855          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1856          0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1857         {
1858          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1859          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1860          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1861          0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1862         {
1863          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1864          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1865          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1866          0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1867         {
1868          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1869          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1870          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1871          0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1872         {
1873          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1874          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1875          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1876          0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1877         {
1878          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1879          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1880          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1881          0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1882         {
1883          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1884          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1885          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1886          0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1887         {
1888          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1889          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1890          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1891          0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1892         {
1893          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1894          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1895          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1896          0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1897         {
1898          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1899          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1900          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1901          0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1902         {
1903          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1904          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1905          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1906          0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1907         {
1908          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1909          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1910          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1911          0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1912         {
1913          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1914          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1915          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1916          0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1917         {
1918          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1919          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1920          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1921          0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1922         {
1923          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1924          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1925          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1926          0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1927         {
1928          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1929          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1930          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1931          0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1932         {
1933          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1934          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1935          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1936          0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1937         {
1938          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1939          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1940          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1941          0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1942         {
1943          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1944          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1945          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1946          0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1947         {
1948          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1949          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1950          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1951          0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1952         {
1953          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1954          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1955          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1956          0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1957         {
1958          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1959          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1960          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1961          0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1962         {
1963          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1964          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1965          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1966          0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1967         {
1968          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1969          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1970          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1971          0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1972         {
1973          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1974          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1975          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1976          0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1977         {
1978          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1979          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1980          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1981          0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1982         {
1983          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1984          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1985          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1986          0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1987         {
1988          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1989          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1990          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1991          0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1992         {
1993          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1994          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1995          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1996          0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1997         {
1998          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1999          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2000          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2001          0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2002         {
2003          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2004          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2005          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2006          0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2007         {
2008          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2009          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2010          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2011          0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2012         {
2013          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2014          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2015          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2016          0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2017         {
2018          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2019          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2020          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2021          0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2022         {
2023          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2024          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2025          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2026          0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2027         {
2028          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2029          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2030          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2031          0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2032         {
2033          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2034          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2035          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2036          0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2037         {
2038          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2039          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2040          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2041          0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2042         {
2043          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2044          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2045          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2046          0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2047         {
2048          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2049          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2050          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2051          0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2052         {
2053          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2054          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2055          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2056          0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2057         {
2058          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2059          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2060          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2061          0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2062         {
2063          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2064          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2065          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2066          0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2067         {
2068          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2069          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2070          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2071          0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2072         {
2073          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2074          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2075          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2076          0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2077         {
2078          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2079          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2080          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2081          0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2082         {
2083          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2084          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2085          0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2086          0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2087         {
2088          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2089          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2090          0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2091          0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2092         {
2093          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2094          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2095          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2096          0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2097         {
2098          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2099          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2100          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2101          0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2102         {
2103          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2104          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2105          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2106          0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2107         {
2108          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2109          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2110          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2111          0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2112         {
2113          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2114          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2115          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2116          0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2117         {
2118          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2119          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2120          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2121          0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2122         {
2123          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2124          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2125          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2126          0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2127         {
2128          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2129          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2130          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2131          0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2132         {
2133          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2134          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2135          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2136          0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2137         {
2138          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2139          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2140          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2141          0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2142         {
2143          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2144          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2145          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2146          0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2147         {
2148          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2149          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2150          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2151          0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2152         {
2153          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2154          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2155          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2156          0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2157         {
2158          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2159          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2160          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2161          0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2162 };
2163
2164 static chan_info_nphy_radio205x_t chan_info_nphyrev5_2056v5[] = {
2165         {
2166          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2167          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2168          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2169          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2170         {
2171          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2172          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2173          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2174          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2175         {
2176          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2177          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2178          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2179          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2180         {
2181          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2182          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2183          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2184          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2185         {
2186          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2187          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2188          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2189          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2190         {
2191          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2192          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2193          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2194          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2195         {
2196          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2197          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2198          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2199          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2200         {
2201          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2202          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2203          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2204          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2205         {
2206          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2207          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2208          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2209          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2210         {
2211          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2212          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2213          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2214          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2215         {
2216          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2217          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2218          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2219          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2220         {
2221          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2222          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2223          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2224          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2225         {
2226          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2227          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2228          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2229          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2230         {
2231          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2232          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2233          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2234          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2235         {
2236          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2237          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2238          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2239          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2240         {
2241          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2242          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2243          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2244          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2245         {
2246          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2247          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2248          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2249          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2250         {
2251          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2252          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2253          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2254          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2255         {
2256          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2257          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2258          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2259          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2260         {
2261          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2262          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2263          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2264          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2265         {
2266          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2267          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2268          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2269          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2270         {
2271          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2272          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2273          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2274          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2275         {
2276          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2277          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2278          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2279          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2280         {
2281          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2282          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2283          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2284          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2285         {
2286          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2287          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2288          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2289          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2290         {
2291          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2292          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2293          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2294          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2295         {
2296          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2297          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2298          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2299          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2300         {
2301          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2302          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2303          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2304          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2305         {
2306          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2307          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2308          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2309          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2310         {
2311          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2312          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2313          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2314          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2315         {
2316          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2317          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2318          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2319          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2320         {
2321          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2322          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2323          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2324          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2325         {
2326          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2327          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2328          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2329          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2330         {
2331          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2332          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2333          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2334          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2335         {
2336          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2337          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2338          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2339          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2340         {
2341          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2342          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2343          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2344          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2345         {
2346          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2347          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2348          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2349          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2350         {
2351          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2352          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2353          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2354          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2355         {
2356          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2357          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2358          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2359          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2360         {
2361          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2362          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2363          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2364          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2365         {
2366          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2367          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2368          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2369          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2370         {
2371          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2372          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2373          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2374          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2375         {
2376          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2377          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2378          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2379          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2380         {
2381          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2382          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2383          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2384          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2385         {
2386          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2387          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2388          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2389          0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2390         {
2391          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2392          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2393          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2394          0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2395         {
2396          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2397          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2398          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2399          0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2400         {
2401          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2402          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2403          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2404          0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2405         {
2406          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2407          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2408          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2409          0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2410         {
2411          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2412          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2413          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2414          0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2415         {
2416          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2417          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2418          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2419          0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2420         {
2421          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2422          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2423          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2424          0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2425         {
2426          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2427          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2428          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2429          0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2430         {
2431          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2432          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2433          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2434          0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2435         {
2436          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2437          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2438          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2439          0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2440         {
2441          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2442          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2443          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2444          0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2445         {
2446          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2447          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2448          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2449          0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2450         {
2451          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2452          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2453          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2454          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2455         {
2456          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2457          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2458          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2459          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2460         {
2461          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2462          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2463          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2464          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2465         {
2466          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2467          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2468          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2469          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2470         {
2471          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2472          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2473          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2474          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2475         {
2476          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2477          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2478          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2479          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2480         {
2481          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2482          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2483          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2484          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2485         {
2486          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2487          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2488          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2489          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2490         {
2491          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2492          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2493          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2494          0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2495         {
2496          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2497          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2498          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2499          0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2500         {
2501          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2502          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2503          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2504          0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2505         {
2506          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2507          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2508          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2509          0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2510         {
2511          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2512          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2513          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2514          0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2515         {
2516          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2517          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2518          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2519          0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2520         {
2521          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2522          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2523          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2524          0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2525         {
2526          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2527          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2528          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2529          0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2530         {
2531          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2532          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2533          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2534          0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2535         {
2536          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2537          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2538          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2539          0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2540         {
2541          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2542          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2543          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2544          0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2545         {
2546          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2547          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2548          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2549          0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2550         {
2551          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2552          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2553          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2554          0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2555         {
2556          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2557          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2558          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2559          0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2560         {
2561          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2562          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2563          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2564          0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2565         {
2566          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2567          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2568          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2569          0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2570         {
2571          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2572          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2573          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2574          0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2575         {
2576          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2577          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2578          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2579          0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2580         {
2581          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2582          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2583          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2584          0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2585         {
2586          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2587          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2588          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2589          0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2590         {
2591          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2592          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2593          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2594          0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2595         {
2596          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2597          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2598          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2599          0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2600         {
2601          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2602          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2603          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2604          0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2605         {
2606          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2607          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2608          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2609          0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2610         {
2611          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2612          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2613          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2614          0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2615         {
2616          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2617          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2618          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2619          0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2620         {
2621          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2622          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2623          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2624          0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2625         {
2626          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2627          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2628          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2629          0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2630         {
2631          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2632          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2633          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2634          0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2635         {
2636          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2637          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2638          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2639          0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2640         {
2641          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2642          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2643          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2644          0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2645         {
2646          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2647          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2648          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2649          0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2650         {
2651          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2652          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2653          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2654          0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2655         {
2656          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2657          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2658          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2659          0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2660         {
2661          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2662          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2663          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2664          0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2665         {
2666          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2667          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2668          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2669          0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2670         {
2671          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2672          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2673          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2674          0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2675         {
2676          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2677          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2678          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2679          0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2680         {
2681          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2682          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2683          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2684          0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2685         {
2686          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2687          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2688          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2689          0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2690         {
2691          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2692          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2693          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2694          0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2695         {
2696          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2697          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2698          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2699          0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2700         {
2701          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2702          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2703          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2704          0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2705         {
2706          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2707          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2708          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2709          0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2710         {
2711          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2712          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2713          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2714          0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2715         {
2716          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2717          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2718          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2719          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2720         {
2721          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2722          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2723          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2724          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2725         {
2726          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2727          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2728          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2729          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2730         {
2731          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2732          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2733          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2734          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2735         {
2736          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2737          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2738          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2739          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2740         {
2741          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2742          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2743          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2744          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2745         {
2746          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2747          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2748          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2749          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2750         {
2751          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2752          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2753          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2754          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2755         {
2756          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2757          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2758          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2759          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2760         {
2761          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2762          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2763          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2764          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2765         {
2766          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2767          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2768          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2769          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2770         {
2771          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2772          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2773          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2774          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2775         {
2776          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2777          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2778          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2779          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2780         {
2781          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2782          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2783          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2784          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2785 };
2786
2787 static chan_info_nphy_radio205x_t chan_info_nphyrev6_2056v6[] = {
2788         {
2789          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2790          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2791          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2792          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2793         {
2794          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2795          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2796          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2797          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2798         {
2799          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2800          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2801          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2802          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2803         {
2804          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2805          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2806          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2807          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2808         {
2809          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2810          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2811          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2812          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2813         {
2814          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2815          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2816          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2817          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2818         {
2819          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2820          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2821          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2822          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2823         {
2824          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2825          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2826          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2827          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2828         {
2829          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2830          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2831          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2832          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2833         {
2834          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2835          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2836          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2837          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2838         {
2839          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2840          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2841          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2842          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2843         {
2844          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2845          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2846          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2847          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2848         {
2849          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2850          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2851          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2852          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2853         {
2854          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2855          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2856          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2857          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2858         {
2859          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2860          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2861          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2862          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2863         {
2864          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2865          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2866          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2867          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2868         {
2869          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2870          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2871          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2872          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2873         {
2874          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2875          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2876          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2877          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2878         {
2879          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2880          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2881          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2882          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2883         {
2884          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2885          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2886          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2887          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2888         {
2889          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2890          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2891          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2892          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2893         {
2894          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2895          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2896          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2897          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2898         {
2899          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2900          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2901          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2902          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2903         {
2904          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2905          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2906          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2907          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2908         {
2909          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2910          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2911          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2912          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2913         {
2914          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2915          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2916          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2917          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2918         {
2919          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2920          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2921          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2922          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2923         {
2924          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2925          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2926          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2927          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2928         {
2929          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2930          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2931          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2932          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2933         {
2934          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2935          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2936          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2937          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2938         {
2939          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2940          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2941          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2942          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2943         {
2944          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2945          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2946          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2947          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2948         {
2949          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2950          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2951          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2952          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2953         {
2954          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2955          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2956          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2957          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2958         {
2959          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2960          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2961          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2962          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2963         {
2964          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2965          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2966          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2967          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2968         {
2969          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2970          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2971          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2972          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2973         {
2974          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2975          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2976          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2977          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2978         {
2979          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2980          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2981          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2982          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2983         {
2984          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2985          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
2986          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2987          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2988         {
2989          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2990          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
2991          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
2992          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2993         {
2994          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2995          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
2996          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
2997          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2998         {
2999          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3000          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3001          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3002          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3003         {
3004          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3005          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3006          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3007          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3008         {
3009          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3010          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3011          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3012          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3013         {
3014          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3015          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3016          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3017          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3018         {
3019          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3020          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3021          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3022          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3023         {
3024          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3025          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3026          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3027          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3028         {
3029          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3030          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3031          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3032          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3033         {
3034          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3035          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3036          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3037          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3038         {
3039          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3040          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3041          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3042          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3043         {
3044          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3045          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3046          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3047          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3048         {
3049          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3050          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3051          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3052          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3053         {
3054          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3055          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3056          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3057          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3058         {
3059          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3060          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3061          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3062          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3063         {
3064          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3065          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3066          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3067          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3068         {
3069          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3070          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3071          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3072          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3073         {
3074          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3075          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3076          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3077          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3078         {
3079          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3080          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3081          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3082          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3083         {
3084          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3085          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3086          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3087          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3088         {
3089          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3090          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3091          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3092          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3093         {
3094          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3095          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3096          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3097          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3098         {
3099          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3100          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3101          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3102          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3103         {
3104          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3105          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3106          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3107          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3108         {
3109          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3110          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3111          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3112          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3113         {
3114          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3115          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3116          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3117          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3118         {
3119          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3120          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3121          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3122          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3123         {
3124          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3125          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3126          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3127          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3128         {
3129          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3130          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3131          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3132          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3133         {
3134          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3135          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3136          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3137          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3138         {
3139          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3140          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3141          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3142          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3143         {
3144          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3145          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3146          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3147          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3148         {
3149          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3150          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3151          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3152          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3153         {
3154          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3155          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3156          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3157          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3158         {
3159          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3160          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3161          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3162          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3163         {
3164          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3165          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3166          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3167          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3168         {
3169          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3170          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3171          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3172          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3173         {
3174          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3175          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3176          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3177          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3178         {
3179          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3180          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3181          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3182          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3183         {
3184          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3185          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3186          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3187          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3188         {
3189          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3190          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3191          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3192          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3193         {
3194          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3195          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3196          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3197          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3198         {
3199          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3200          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3201          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3202          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3203         {
3204          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3205          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3206          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3207          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3208         {
3209          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3210          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3211          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3212          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3213         {
3214          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3215          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3216          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3217          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3218         {
3219          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3220          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3221          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3222          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3223         {
3224          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3225          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3226          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3227          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3228         {
3229          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3230          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3231          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3232          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3233         {
3234          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3235          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3236          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3237          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3238         {
3239          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3240          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3241          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3242          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3243         {
3244          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3245          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3246          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3247          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3248         {
3249          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3250          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3251          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3252          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3253         {
3254          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3255          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3256          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3257          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3258         {
3259          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3260          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3261          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3262          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3263         {
3264          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3265          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3266          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3267          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3268         {
3269          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3270          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3271          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3272          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3273         {
3274          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3275          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3276          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3277          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3278         {
3279          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3280          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3281          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3282          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3283         {
3284          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3285          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3286          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3287          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3288         {
3289          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3290          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3291          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3292          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3293         {
3294          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3295          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3296          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3297          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3298         {
3299          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3300          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3301          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3302          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3303         {
3304          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3305          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3306          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3307          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3308         {
3309          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3310          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3311          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3312          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3313         {
3314          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3315          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3316          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3317          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3318         {
3319          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3320          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3321          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3322          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3323         {
3324          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3325          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3326          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3327          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3328         {
3329          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3330          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3331          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3332          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3333         {
3334          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3335          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3336          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3337          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3338         {
3339          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3340          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3341          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3342          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3343         {
3344          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3345          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3346          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3347          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3348         {
3349          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3350          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3351          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3352          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3353         {
3354          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3355          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3356          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3357          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3358         {
3359          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3360          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3361          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3362          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3363         {
3364          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3365          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3366          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3367          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3368         {
3369          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3370          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3371          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3372          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3373         {
3374          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3375          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3376          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3377          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3378         {
3379          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3380          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3381          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3382          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3383         {
3384          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3385          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3386          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3387          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3388         {
3389          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3390          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3391          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3392          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3393         {
3394          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3395          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3396          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3397          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3398         {
3399          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3400          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3401          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3402          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3403         {
3404          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3405          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3406          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3407          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3408 };
3409
3410 static chan_info_nphy_radio205x_t chan_info_nphyrev5n6_2056v7[] = {
3411         {
3412          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3413          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3414          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3415          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3416         {
3417          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3418          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3419          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3420          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3421         {
3422          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3423          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3424          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3425          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3426         {
3427          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3428          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3429          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3430          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3431         {
3432          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3433          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3434          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3435          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3436         {
3437          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3438          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3439          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3440          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3441         {
3442          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3443          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3444          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3445          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3446         {
3447          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3448          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3449          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3450          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3451         {
3452          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3453          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3454          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3455          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3456         {
3457          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3458          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3459          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3460          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3461         {
3462          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3463          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3464          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3465          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3466         {
3467          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3468          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3469          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3470          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3471         {
3472          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3473          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3474          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3475          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3476         {
3477          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3478          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3479          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3480          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3481         {
3482          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3483          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3484          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3485          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3486         {
3487          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3488          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3489          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3490          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3491         {
3492          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3493          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3494          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3495          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3496         {
3497          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3498          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3499          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3500          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3501         {
3502          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3503          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3504          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3505          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3506         {
3507          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3508          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3509          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3510          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3511         {
3512          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3513          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3514          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3515          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3516         {
3517          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3518          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3519          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3520          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3521         {
3522          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3523          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3524          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3525          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3526         {
3527          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3528          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3529          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3530          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3531         {
3532          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3533          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3534          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3535          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3536         {
3537          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3538          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3539          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3540          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3541         {
3542          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3543          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3544          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3545          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3546         {
3547          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3548          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3549          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3550          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3551         {
3552          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3553          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3554          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3555          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3556         {
3557          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3558          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3559          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3560          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3561         {
3562          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3563          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3564          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3565          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3566         {
3567          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3568          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3569          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3570          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3571         {
3572          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3573          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3574          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3575          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3576         {
3577          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3578          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3579          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3580          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3581         {
3582          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3583          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3584          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3585          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3586         {
3587          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3588          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3589          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3590          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3591         {
3592          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3593          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3594          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3595          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3596         {
3597          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3598          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3599          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3600          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3601         {
3602          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3603          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3604          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3605          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3606         {
3607          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3608          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3609          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3610          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3611         {
3612          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3613          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3614          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3615          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3616         {
3617          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3618          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3619          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3620          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3621         {
3622          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3623          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3624          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3625          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3626         {
3627          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3628          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3629          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3630          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3631         {
3632          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3633          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3634          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3635          0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3636         {
3637          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3638          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3639          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3640          0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3641         {
3642          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3643          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3644          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3645          0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3646         {
3647          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3648          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3649          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3650          0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3651         {
3652          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3653          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3654          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3655          0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3656         {
3657          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3658          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3659          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3660          0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3661         {
3662          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3663          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3664          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3665          0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3666         {
3667          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3668          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3669          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3670          0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3671         {
3672          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3673          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3674          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3675          0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3676         {
3677          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3678          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3679          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3680          0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3681         {
3682          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3683          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3684          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3685          0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3686         {
3687          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3688          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3689          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3690          0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3691         {
3692          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3693          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3694          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3695          0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3696         {
3697          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3698          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3699          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3700          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3701         {
3702          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3703          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3704          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3705          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3706         {
3707          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3708          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3709          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3710          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3711         {
3712          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3713          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3714          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3715          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3716         {
3717          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3718          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3719          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3720          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3721         {
3722          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3723          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3724          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3725          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3726         {
3727          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3728          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3729          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3730          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3731         {
3732          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3733          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3734          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3735          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3736         {
3737          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3738          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3739          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3740          0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3741         {
3742          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3743          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3744          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3745          0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3746         {
3747          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3748          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3749          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3750          0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3751         {
3752          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3753          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3754          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3755          0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3756         {
3757          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3758          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3759          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3760          0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3761         {
3762          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3763          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3764          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3765          0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3766         {
3767          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3768          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3769          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3770          0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3771         {
3772          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3773          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3774          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3775          0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3776         {
3777          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3778          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3779          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3780          0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3781         {
3782          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3783          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3784          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3785          0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3786         {
3787          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3788          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3789          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3790          0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3791         {
3792          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3793          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3794          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3795          0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3796         {
3797          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3798          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3799          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3800          0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3801         {
3802          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3803          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3804          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3805          0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3806         {
3807          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3808          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3809          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3810          0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3811         {
3812          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3813          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3814          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3815          0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3816         {
3817          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3818          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3819          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3820          0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3821         {
3822          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3823          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3824          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3825          0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3826         {
3827          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3828          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3829          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3830          0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3831         {
3832          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3833          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3834          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3835          0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3836         {
3837          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3838          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3839          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3840          0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3841         {
3842          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3843          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3844          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3845          0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3846         {
3847          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3848          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3849          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3850          0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3851         {
3852          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3853          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3854          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3855          0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3856         {
3857          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3858          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3859          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3860          0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3861         {
3862          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3863          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3864          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3865          0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3866         {
3867          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3868          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3869          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3870          0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3871         {
3872          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3873          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3874          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3875          0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3876         {
3877          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3878          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3879          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3880          0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3881         {
3882          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3883          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3884          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3885          0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3886         {
3887          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3888          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3889          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3890          0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3891         {
3892          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3893          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3894          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3895          0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3896         {
3897          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3898          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3899          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3900          0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3901         {
3902          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3903          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3904          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3905          0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3906         {
3907          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3908          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3909          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3910          0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3911         {
3912          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3913          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3914          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3915          0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3916         {
3917          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3918          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3919          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3920          0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3921         {
3922          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3923          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3924          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3925          0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3926         {
3927          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3928          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3929          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3930          0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3931         {
3932          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3933          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3934          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3935          0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3936         {
3937          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3938          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3939          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3940          0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3941         {
3942          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3943          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3944          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3945          0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3946         {
3947          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3948          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3949          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3950          0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3951         {
3952          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3953          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3954          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3955          0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3956         {
3957          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3958          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3959          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3960          0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3961         {
3962          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3963          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3964          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3965          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3966         {
3967          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3968          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3969          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3970          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3971         {
3972          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3973          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3974          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3975          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3976         {
3977          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3978          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3979          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3980          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3981         {
3982          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3983          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
3984          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
3985          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3986         {
3987          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3988          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
3989          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
3990          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3991         {
3992          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3993          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
3994          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
3995          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3996         {
3997          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3998          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
3999          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4000          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4001         {
4002          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4003          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4004          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4005          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4006         {
4007          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4008          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4009          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4010          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4011         {
4012          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4013          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4014          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4015          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4016         {
4017          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4018          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4019          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4020          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4021         {
4022          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4023          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4024          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4025          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4026         {
4027          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4028          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4029          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4030          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4031 };
4032
4033 static chan_info_nphy_radio205x_t chan_info_nphyrev6_2056v8[] = {
4034         {
4035          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4036          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4037          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4038          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4039         {
4040          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4041          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4042          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4043          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4044         {
4045          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4046          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4047          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4048          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4049         {
4050          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4051          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4052          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4053          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4054         {
4055          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4056          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4057          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4058          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4059         {
4060          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4061          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4062          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4063          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4064         {
4065          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4066          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4067          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4068          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4069         {
4070          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4071          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4072          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4073          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4074         {
4075          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4076          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4077          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4078          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4079         {
4080          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4081          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4082          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4083          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4084         {
4085          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4086          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4087          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4088          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4089         {
4090          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4091          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4092          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4093          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4094         {
4095          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4096          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4097          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4098          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4099         {
4100          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4101          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4102          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4103          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4104         {
4105          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4106          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4107          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4108          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4109         {
4110          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4111          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4112          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4113          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4114         {
4115          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4116          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4117          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4118          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4119         {
4120          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4121          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4122          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4123          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4124         {
4125          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4126          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4127          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4128          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4129         {
4130          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4131          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4132          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4133          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4134         {
4135          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4136          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4137          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4138          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4139         {
4140          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4141          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4142          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4143          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4144         {
4145          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4146          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4147          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4148          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4149         {
4150          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4151          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4152          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4153          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4154         {
4155          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4156          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4157          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4158          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4159         {
4160          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4161          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4162          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4163          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4164         {
4165          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4166          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4167          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4168          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4169         {
4170          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4171          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4172          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4173          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4174         {
4175          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4176          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4177          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4178          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4179         {
4180          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4181          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4182          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4183          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4184         {
4185          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4186          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4187          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4188          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4189         {
4190          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4191          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4192          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4193          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4194         {
4195          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4196          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4197          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4198          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4199         {
4200          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4201          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4202          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4203          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4204         {
4205          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4206          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4207          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4208          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4209         {
4210          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4211          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4212          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4213          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4214         {
4215          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4216          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4217          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4218          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4219         {
4220          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4221          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4222          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4223          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4224         {
4225          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4226          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4227          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4228          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4229         {
4230          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4231          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4232          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4233          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4234         {
4235          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4236          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4237          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4238          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4239         {
4240          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4241          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4242          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4243          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4244         {
4245          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4246          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4247          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4248          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4249         {
4250          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4251          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4252          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4253          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4254         {
4255          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4256          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4257          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4258          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4259         {
4260          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4261          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4262          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4263          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4264         {
4265          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4266          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4267          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4268          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4269         {
4270          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4271          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4272          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4273          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4274         {
4275          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4276          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4277          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4278          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4279         {
4280          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4281          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4282          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4283          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4284         {
4285          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4286          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4287          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4288          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4289         {
4290          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4291          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4292          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4293          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4294         {
4295          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4296          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4297          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4298          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4299         {
4300          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4301          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4302          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4303          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4304         {
4305          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4306          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4307          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4308          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4309         {
4310          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4311          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4312          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4313          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4314         {
4315          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4316          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4317          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4318          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4319         {
4320          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4321          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4322          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4323          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4324         {
4325          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4326          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4327          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4328          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4329         {
4330          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4331          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4332          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4333          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4334         {
4335          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4336          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4337          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4338          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4339         {
4340          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4341          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4342          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4343          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4344         {
4345          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4346          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4347          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4348          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4349         {
4350          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4351          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4352          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4353          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4354         {
4355          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4356          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4357          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4358          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4359         {
4360          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4361          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4362          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4363          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4364         {
4365          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4366          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4367          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4368          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4369         {
4370          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4371          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4372          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4373          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4374         {
4375          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4376          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4377          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4378          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4379         {
4380          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4381          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4382          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4383          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4384         {
4385          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4386          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4387          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4388          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4389         {
4390          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4391          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4392          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4393          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4394         {
4395          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4396          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4397          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4398          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4399         {
4400          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4401          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4402          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4403          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4404         {
4405          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4406          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4407          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4408          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4409         {
4410          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4411          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4412          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4413          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4414         {
4415          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4416          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4417          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4418          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4419         {
4420          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4421          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4422          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4423          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4424         {
4425          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4426          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4427          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4428          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4429         {
4430          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4431          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4432          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4433          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4434         {
4435          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4436          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4437          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4438          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4439         {
4440          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4441          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4442          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4443          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4444         {
4445          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4446          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4447          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4448          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4449         {
4450          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4451          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4452          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4453          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4454         {
4455          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4456          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4457          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4458          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4459         {
4460          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4461          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4462          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4463          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4464         {
4465          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4466          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4467          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4468          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4469         {
4470          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4471          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4472          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4473          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4474         {
4475          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4476          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4477          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4478          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4479         {
4480          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4481          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4482          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4483          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4484         {
4485          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4486          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4487          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4488          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4489         {
4490          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4491          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4492          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4493          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4494         {
4495          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4496          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4497          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4498          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4499         {
4500          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4501          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4502          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4503          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4504         {
4505          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4506          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4507          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4508          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4509         {
4510          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4511          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4512          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4513          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4514         {
4515          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4516          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4517          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4518          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4519         {
4520          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4521          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4522          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4523          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4524         {
4525          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4526          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4527          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4528          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4529         {
4530          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4531          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4532          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4533          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4534         {
4535          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4536          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4537          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4538          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4539         {
4540          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4541          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4542          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4543          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4544         {
4545          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4546          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4547          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4548          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4549         {
4550          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4551          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4552          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4553          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4554         {
4555          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4556          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4557          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4558          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4559         {
4560          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4561          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4562          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4563          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4564         {
4565          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4566          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4567          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4568          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4569         {
4570          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4571          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4572          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4573          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4574         {
4575          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4576          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4577          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4578          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4579         {
4580          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4581          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4582          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4583          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4584         {
4585          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4586          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4587          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4588          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4589         {
4590          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4591          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4592          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4593          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4594         {
4595          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4596          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4597          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4598          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4599         {
4600          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4601          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4602          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4603          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4604         {
4605          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4606          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4607          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4608          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4609         {
4610          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4611          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4612          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4613          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4614         {
4615          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4616          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4617          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4618          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4619         {
4620          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4621          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4622          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4623          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4624         {
4625          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4626          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4627          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4628          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4629         {
4630          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4631          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4632          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4633          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4634         {
4635          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4636          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4637          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4638          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4639         {
4640          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4641          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4642          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4643          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4644         {
4645          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4646          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4647          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4648          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4649         {
4650          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4651          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4652          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4653          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4654 };
4655
4656 static chan_info_nphy_radio205x_t chan_info_nphyrev6_2056v11[] = {
4657         {
4658          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4659          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4660          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4661          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4662         {
4663          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4664          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4665          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4666          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4667         {
4668          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4669          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4670          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4671          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4672         {
4673          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4674          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4675          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4676          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4677         {
4678          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4679          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4680          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4681          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4682         {
4683          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4684          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4685          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4686          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4687         {
4688          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4689          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4690          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4691          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4692         {
4693          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4694          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4695          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4696          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4697         {
4698          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4699          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4700          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4701          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4702         {
4703          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4704          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4705          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4706          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4707         {
4708          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4709          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4710          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4711          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4712         {
4713          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4714          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4715          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4716          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4717         {
4718          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4719          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4720          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4721          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4722         {
4723          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4724          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4725          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4726          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4727         {
4728          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4729          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4730          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4731          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4732         {
4733          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4734          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4735          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4736          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4737         {
4738          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4739          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4740          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4741          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4742         {
4743          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4744          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4745          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4746          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4747         {
4748          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4749          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4750          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4751          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4752         {
4753          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4754          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4755          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4756          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4757         {
4758          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4759          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4760          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4761          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4762         {
4763          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4764          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4765          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4766          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4767         {
4768          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4769          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4770          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4771          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4772         {
4773          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4774          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4775          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4776          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4777         {
4778          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4779          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4780          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4781          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4782         {
4783          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4784          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4785          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4786          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4787         {
4788          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4789          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4790          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4791          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4792         {
4793          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4794          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4795          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4796          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4797         {
4798          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4799          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4800          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4801          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4802         {
4803          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4804          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4805          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4806          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4807         {
4808          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4809          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4810          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4811          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4812         {
4813          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4814          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4815          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4816          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4817         {
4818          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4819          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4820          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4821          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4822         {
4823          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4824          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4825          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4826          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4827         {
4828          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4829          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4830          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4831          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4832         {
4833          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4834          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4835          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4836          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4837         {
4838          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4839          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4840          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4841          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4842         {
4843          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4844          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4845          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4846          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4847         {
4848          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4849          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4850          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4851          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4852         {
4853          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4854          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4855          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4856          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4857         {
4858          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4859          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4860          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4861          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4862         {
4863          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4864          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4865          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4866          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4867         {
4868          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4869          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4870          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4871          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4872         {
4873          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4874          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4875          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4876          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4877         {
4878          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4879          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4880          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4881          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4882         {
4883          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4884          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4885          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4886          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4887         {
4888          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4889          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4890          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4891          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4892         {
4893          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4894          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4895          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4896          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4897         {
4898          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4899          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4900          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4901          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4902         {
4903          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4904          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4905          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4906          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4907         {
4908          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4909          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4910          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4911          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4912         {
4913          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4914          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4915          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4916          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4917         {
4918          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4919          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4920          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4921          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4922         {
4923          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4924          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4925          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4926          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4927         {
4928          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4929          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4930          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4931          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4932         {
4933          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4934          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4935          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4936          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4937         {
4938          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4939          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4940          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4941          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4942         {
4943          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4944          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4945          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4946          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4947         {
4948          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4949          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4950          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4951          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4952         {
4953          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4954          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4955          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4956          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4957         {
4958          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4959          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4960          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4961          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4962         {
4963          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4964          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4965          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4966          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4967         {
4968          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4969          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4970          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4971          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4972         {
4973          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4974          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4975          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4976          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4977         {
4978          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4979          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4980          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4981          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4982         {
4983          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4984          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4985          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4986          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4987         {
4988          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4989          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4990          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4991          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4992         {
4993          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
4994          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4995          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4996          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4997         {
4998          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
4999          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5000          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5001          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
5002         {
5003          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5004          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5005          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5006          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5007         {
5008          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5009          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5010          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5011          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5012         {
5013          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5014          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5015          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5016          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5017         {
5018          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5019          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5020          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5021          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5022         {
5023          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5024          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5025          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5026          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5027         {
5028          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5029          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5030          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5031          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5032         {
5033          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5034          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5035          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5036          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5037         {
5038          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5039          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5040          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5041          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5042         {
5043          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5044          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5045          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5046          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5047         {
5048          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5049          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5050          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5051          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5052         {
5053          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5054          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5055          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5056          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5057         {
5058          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5059          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5060          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5061          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5062         {
5063          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5064          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5065          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5066          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5067         {
5068          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5069          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5070          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5071          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5072         {
5073          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5074          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5075          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5076          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5077         {
5078          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5079          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5080          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5081          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5082         {
5083          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5084          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5085          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5086          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5087         {
5088          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5089          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5090          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5091          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5092         {
5093          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5094          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5095          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5096          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5097         {
5098          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5099          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5100          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5101          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5102         {
5103          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5104          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5105          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5106          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5107         {
5108          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5109          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5110          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5111          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5112         {
5113          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5114          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5115          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5116          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5117         {
5118          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5119          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5120          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5121          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5122         {
5123          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5124          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5125          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5126          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5127         {
5128          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5129          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5130          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5131          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5132         {
5133          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5134          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5135          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5136          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5137         {
5138          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5139          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5140          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5141          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5142         {
5143          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5144          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5145          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5146          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5147         {
5148          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5149          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5150          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5151          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5152         {
5153          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5154          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5155          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5156          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5157         {
5158          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5159          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5160          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5161          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5162         {
5163          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5164          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5165          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5166          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5167         {
5168          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5169          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5170          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5171          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5172         {
5173          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5174          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5175          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5176          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5177         {
5178          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5179          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5180          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5181          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5182         {
5183          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5184          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5185          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5186          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5187         {
5188          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5189          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5190          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5191          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5192         {
5193          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5194          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5195          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5196          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5197         {
5198          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5199          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5200          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5201          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5202         {
5203          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5204          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5205          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5206          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5207         {
5208          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5209          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5210          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5211          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5212         {
5213          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5214          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5215          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5216          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5217         {
5218          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5219          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5220          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5221          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5222         {
5223          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5224          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5225          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5226          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5227         {
5228          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5229          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5230          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5231          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5232         {
5233          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5234          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5235          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5236          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5237         {
5238          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5239          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5240          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5241          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5242         {
5243          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5244          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5245          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5246          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5247         {
5248          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5249          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5250          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5251          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5252         {
5253          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5254          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5255          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5256          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5257         {
5258          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5259          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5260          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5261          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5262         {
5263          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5264          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5265          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5266          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5267         {
5268          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5269          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5270          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5271          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5272         {
5273          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5274          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5275          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5276          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5277 };
5278
5279 static chan_info_nphy_radio2057_t chan_info_nphyrev7_2057_rev4[] = {
5280         {
5281          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5282          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5283          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5284          0x0215,
5285          0x0216,
5286          },
5287         {
5288          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5289          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5290          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5291          0x0214,
5292          0x0215,
5293          },
5294         {
5295          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5296          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5297          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5298          0x0213,
5299          0x0214,
5300          },
5301         {
5302          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5303          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5304          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5305          0x0212,
5306          0x0213,
5307          },
5308         {
5309          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5310          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5311          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5312          0x0211,
5313          0x0212,
5314          },
5315         {
5316          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5317          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5318          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5319          0x020f,
5320          0x0211,
5321          },
5322         {
5323          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5324          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5325          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5326          0x020e,
5327          0x020f,
5328          },
5329         {
5330          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5331          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5332          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5333          0x020d,
5334          0x020e,
5335          },
5336         {
5337          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5338          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5339          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5340          0x020c,
5341          0x020d,
5342          },
5343         {
5344          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5345          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5346          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5347          0x020b,
5348          0x020c,
5349          },
5350         {
5351          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5352          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5353          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5354          0x020a,
5355          0x020b,
5356          },
5357         {
5358          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5359          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5360          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5361          0x0209,
5362          0x020a,
5363          },
5364         {
5365          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5366          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5367          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5368          0x0208,
5369          0x0209,
5370          },
5371         {
5372          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5373          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5374          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5375          0x0207,
5376          0x0208,
5377          },
5378         {
5379          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5380          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5381          0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5382          0x0206,
5383          0x0207,
5384          },
5385         {
5386          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5387          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5388          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5389          0x0205,
5390          0x0206,
5391          },
5392         {
5393          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5394          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5395          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5396          0x0204,
5397          0x0205,
5398          },
5399         {
5400          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5401          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5402          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5403          0x0203,
5404          0x0204,
5405          },
5406         {
5407          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5408          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5409          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5410          0x0202,
5411          0x0203,
5412          },
5413         {
5414          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5415          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5416          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5417          0x0201,
5418          0x0202,
5419          },
5420         {
5421          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5422          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5423          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5424          0x0200,
5425          0x0201,
5426          },
5427         {
5428          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5429          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5430          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5431          0x01ff,
5432          0x0200,
5433          },
5434         {
5435          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5436          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5437          0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5438          0x01fe,
5439          0x01ff,
5440          },
5441         {
5442          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5443          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5444          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5445          0x01fc,
5446          0x01fd,
5447          },
5448         {
5449          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5450          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5451          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5452          0x01fb,
5453          0x01fc,
5454          },
5455         {
5456          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5457          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5458          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5459          0x01fa,
5460          0x01fb,
5461          },
5462         {
5463          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5464          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5465          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5466          0x01f9,
5467          0x01fa,
5468          },
5469         {
5470          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5471          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5472          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5473          0x01f8,
5474          0x01f9,
5475          },
5476         {
5477          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5478          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5479          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5480          0x01f7,
5481          0x01f8,
5482          },
5483         {
5484          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5485          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5486          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5487          0x01f6,
5488          0x01f7,
5489          },
5490         {
5491          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5492          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5493          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5494          0x01f5,
5495          0x01f6,
5496          },
5497         {
5498          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5499          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5500          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5501          0x01f4,
5502          0x01f5,
5503          },
5504         {
5505          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5506          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5507          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5508          0x01f3,
5509          0x01f4,
5510          },
5511         {
5512          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5513          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5514          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5515          0x01f2,
5516          0x01f3,
5517          },
5518         {
5519          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5520          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5521          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5522          0x01f1,
5523          0x01f2,
5524          },
5525         {
5526          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5527          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5528          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5529          0x01f0,
5530          0x01f1,
5531          },
5532         {
5533          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5534          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5535          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5536          0x01f0,
5537          0x01f0,
5538          },
5539         {
5540          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5541          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5542          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5543          0x01ef,
5544          0x01f0,
5545          },
5546         {
5547          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5548          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5549          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5550          0x01ee,
5551          0x01ef,
5552          },
5553         {
5554          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5555          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5556          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5557          0x01ed,
5558          0x01ee,
5559          },
5560         {
5561          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5562          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5563          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5564          0x01ec,
5565          0x01ed,
5566          },
5567         {
5568          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5569          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5570          0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5571          0x01eb,
5572          0x01ec,
5573          },
5574         {
5575          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5576          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5577          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5578          0x01ea,
5579          0x01eb,
5580          },
5581         {
5582          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5583          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5584          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5585          0x01e9,
5586          0x01ea,
5587          },
5588         {
5589          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5590          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5591          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5592          0x01e8,
5593          0x01e9,
5594          },
5595         {
5596          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5597          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5598          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5599          0x01e7,
5600          0x01e8,
5601          },
5602         {
5603          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5604          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5605          0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5606          0x01e6,
5607          0x01e7,
5608          },
5609         {
5610          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5611          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5612          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5613          0x01e5,
5614          0x01e6,
5615          },
5616         {
5617          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5618          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5619          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5620          0x01e5,
5621          0x01e5,
5622          },
5623         {
5624          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5625          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5626          0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5627          0x01e4,
5628          0x01e5,
5629          },
5630         {
5631          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5632          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5633          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5634          0x01e3,
5635          0x01e4,
5636          },
5637         {
5638          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5639          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5640          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5641          0x01e2,
5642          0x01e3,
5643          },
5644         {
5645          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5646          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5647          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5648          0x01e1,
5649          0x01e2,
5650          },
5651         {
5652          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5653          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5654          0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5655          0x01e0,
5656          0x01e1,
5657          },
5658         {
5659          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5660          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5661          0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5662          0x01df,
5663          0x01e0,
5664          },
5665         {
5666          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5667          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5668          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5669          0x01de,
5670          0x01df,
5671          },
5672         {
5673          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5674          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5675          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5676          0x01dd,
5677          0x01de,
5678          },
5679         {
5680          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5681          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5682          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5683          0x01dd,
5684          0x01dd,
5685          },
5686         {
5687          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5688          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5689          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5690          0x01dc,
5691          0x01dd,
5692          },
5693         {
5694          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5695          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5696          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5697          0x01db,
5698          0x01dc,
5699          },
5700         {
5701          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5702          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5703          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5704          0x01da,
5705          0x01db,
5706          },
5707         {
5708          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5709          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5710          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5711          0x01d9,
5712          0x01da,
5713          },
5714         {
5715          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5716          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5717          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5718          0x01d8,
5719          0x01d9,
5720          },
5721         {
5722          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5723          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5724          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5725          0x01d7,
5726          0x01d8,
5727          },
5728         {
5729          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5730          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5731          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5732          0x01d7,
5733          0x01d7,
5734          },
5735         {
5736          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5737          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5738          0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5739          0x01d6,
5740          0x01d7,
5741          },
5742         {
5743          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5744          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5745          0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5746          0x01d5,
5747          0x01d6,
5748          },
5749         {
5750          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5751          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5752          0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5753          0x01d4,
5754          0x01d5,
5755          },
5756         {
5757          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5758          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5759          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5760          0x01d3,
5761          0x01d4,
5762          },
5763         {
5764          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5765          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5766          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5767          0x01d2,
5768          0x01d3,
5769          },
5770         {
5771          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5772          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5773          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5774          0x01d2,
5775          0x01d2,
5776          },
5777         {
5778          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5779          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5780          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5781          0x01d1,
5782          0x01d2,
5783          },
5784         {
5785          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5786          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5787          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5788          0x01d0,
5789          0x01d1,
5790          },
5791         {
5792          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5793          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5794          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5795          0x01cf,
5796          0x01d0,
5797          },
5798         {
5799          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5800          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5801          0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5802          0x01ce,
5803          0x01cf,
5804          },
5805         {
5806          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5807          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5808          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5809          0x01ce,
5810          0x01ce,
5811          },
5812         {
5813          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5814          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5815          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5816          0x01cd,
5817          0x01ce,
5818          },
5819         {
5820          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5821          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5822          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5823          0x01cc,
5824          0x01cd,
5825          },
5826         {
5827          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5828          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5829          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5830          0x01cb,
5831          0x01cc,
5832          },
5833         {
5834          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5835          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5836          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5837          0x01ca,
5838          0x01cb,
5839          },
5840         {
5841          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5842          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5843          0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5844          0x01ca,
5845          0x01cb,
5846          },
5847         {
5848          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5849          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5850          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5851          0x01c9,
5852          0x01ca,
5853          },
5854         {
5855          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5856          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5857          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5858          0x01c9,
5859          0x01ca,
5860          },
5861         {
5862          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5863          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5864          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5865          0x01c9,
5866          0x01c9,
5867          },
5868         {
5869          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5870          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5871          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5872          0x01c8,
5873          0x01c9,
5874          },
5875         {
5876          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5877          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5878          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5879          0x01c8,
5880          0x01c9,
5881          },
5882         {
5883          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5884          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5885          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5886          0x01c8,
5887          0x01c8,
5888          },
5889         {
5890          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5891          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5892          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5893          0x01c7,
5894          0x01c8,
5895          },
5896         {
5897          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5898          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5899          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5900          0x01c7,
5901          0x01c8,
5902          },
5903         {
5904          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5905          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5906          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5907          0x01c6,
5908          0x01c7,
5909          },
5910         {
5911          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5912          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5913          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5914          0x01c6,
5915          0x01c7,
5916          },
5917         {
5918          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5919          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5920          0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5921          0x01c6,
5922          0x01c6,
5923          },
5924         {
5925          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5926          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5927          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5928          0x01c5,
5929          0x01c6,
5930          },
5931         {
5932          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5933          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5934          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5935          0x01c5,
5936          0x01c6,
5937          },
5938         {
5939          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5940          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5941          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5942          0x01c4,
5943          0x01c5,
5944          },
5945         {
5946          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5947          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5948          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5949          0x01c4,
5950          0x01c5,
5951          },
5952         {
5953          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5954          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5955          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5956          0x01c4,
5957          0x01c4,
5958          },
5959         {
5960          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5961          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5962          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5963          0x01c3,
5964          0x01c4,
5965          },
5966         {
5967          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5968          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5969          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
5970          0x01c3,
5971          0x01c4,
5972          },
5973         {
5974          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
5975          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5976          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
5977          0x01c2,
5978          0x01c3,
5979          },
5980         {
5981          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
5982          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5983          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
5984          0x01c2,
5985          0x01c3,
5986          },
5987         {
5988          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
5989          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5990          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
5991          0x01c2,
5992          0x01c2,
5993          },
5994         {
5995          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
5996          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5997          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
5998          0x01c1,
5999          0x01c2,
6000          },
6001         {
6002          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6003          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6004          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6005          0x01c0,
6006          0x01c1,
6007          },
6008         {
6009          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6010          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6011          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6012          0x01bf,
6013          0x01c0,
6014          },
6015         {
6016          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6017          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6018          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6019          0x01bf,
6020          0x01bf,
6021          },
6022         {
6023          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6024          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6025          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6026          0x01be,
6027          0x01bf,
6028          },
6029         {
6030          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6031          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6032          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6033          0x01bd,
6034          0x01be,
6035          },
6036         {
6037          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6038          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6039          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6040          0x01bc,
6041          0x01bd,
6042          },
6043         {
6044          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6045          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6046          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6047          0x043f,
6048          0x0443,
6049          },
6050         {
6051          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6052          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6053          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6054          0x043d,
6055          0x0441,
6056          },
6057         {
6058          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6059          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6060          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6061          0x043a,
6062          0x043f,
6063          },
6064         {
6065          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6066          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6067          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6068          0x0438,
6069          0x043d,
6070          },
6071         {
6072          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6073          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6074          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6075          0x0436,
6076          0x043a,
6077          },
6078         {
6079          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6080          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6081          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6082          0x0434,
6083          0x0438,
6084          },
6085         {
6086          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6087          0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6088          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6089          0x0431,
6090          0x0436,
6091          },
6092         {
6093          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6094          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6095          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6096          0x042f,
6097          0x0434,
6098          },
6099         {
6100          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6101          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6102          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6103          0x042d,
6104          0x0431,
6105          },
6106         {
6107          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6108          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6109          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6110          0x042b,
6111          0x042f,
6112          },
6113         {
6114          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6115          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6116          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6117          0x0429,
6118          0x042d,
6119          },
6120         {
6121          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6122          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6123          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6124          0x0427,
6125          0x042b,
6126          },
6127         {
6128          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6129          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6130          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6131          0x0424,
6132          0x0429,
6133          },
6134         {
6135          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6136          0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6137          0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6138          0x041f,
6139          0x0424}
6140 };
6141
6142 static chan_info_nphy_radio2057_rev5_t chan_info_nphyrev8_2057_rev5[] = {
6143         {
6144          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6145          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6146          0x043a, 0x043f, 0x0443},
6147         {
6148          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6149          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6150          0x0438, 0x043d, 0x0441},
6151         {
6152          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6153          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6154          0x0436, 0x043a, 0x043f},
6155         {
6156          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6157          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6158          0x0434, 0x0438, 0x043d},
6159         {
6160          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6161          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6162          0x0431, 0x0436, 0x043a},
6163         {
6164          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6165          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6166          0x042f, 0x0434, 0x0438},
6167         {
6168          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6169          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6170          0x042d, 0x0431, 0x0436},
6171         {
6172          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6173          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6174          0x042b, 0x042f, 0x0434},
6175         {
6176          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6177          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6178          0x0429, 0x042d, 0x0431},
6179         {
6180          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6181          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6182          0x0427, 0x042b, 0x042f},
6183         {
6184          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6185          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6186          0x0424, 0x0429, 0x042d},
6187         {
6188          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6189          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6190          0x0422, 0x0427, 0x042b},
6191         {
6192          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6193          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6194          0x0420, 0x0424, 0x0429},
6195         {
6196          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6197          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6198          0x041b, 0x041f, 0x0424}
6199 };
6200
6201 static chan_info_nphy_radio2057_rev5_t chan_info_nphyrev9_2057_rev5v1[] = {
6202         {
6203          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6204          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6205          0x043a, 0x043f, 0x0443},
6206         {
6207          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6208          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6209          0x0438, 0x043d, 0x0441},
6210         {
6211          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6212          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6213          0x0436, 0x043a, 0x043f},
6214         {
6215          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6216          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6217          0x0434, 0x0438, 0x043d},
6218         {
6219          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6220          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6221          0x0431, 0x0436, 0x043a},
6222         {
6223          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6224          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6225          0x042f, 0x0434, 0x0438},
6226         {
6227          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6228          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6229          0x042d, 0x0431, 0x0436},
6230         {
6231          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6232          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6233          0x042b, 0x042f, 0x0434},
6234         {
6235          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6236          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6237          0x0429, 0x042d, 0x0431},
6238         {
6239          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6240          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6241          0x0427, 0x042b, 0x042f},
6242         {
6243          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6244          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6245          0x0424, 0x0429, 0x042d},
6246         {
6247          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6248          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6249          0x0422, 0x0427, 0x042b},
6250         {
6251          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6252          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6253          0x0420, 0x0424, 0x0429},
6254         {
6255          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6256          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6257          0x041b, 0x041f, 0x0424}
6258 };
6259
6260 static chan_info_nphy_radio2057_t chan_info_nphyrev8_2057_rev7[] = {
6261         {
6262          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6263          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6264          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6265          0x0215,
6266          0x0216},
6267         {
6268          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6269          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6270          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6271          0x0214,
6272          0x0215},
6273         {
6274          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6275          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6276          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6277          0x0213,
6278          0x0214},
6279         {
6280          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6281          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6282          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6283          0x0212,
6284          0x0213},
6285         {
6286          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6287          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6288          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6289          0x0211,
6290          0x0212},
6291         {
6292          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6293          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6294          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6295          0x020f,
6296          0x0211},
6297         {
6298          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6299          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6300          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6301          0x020e,
6302          0x020f},
6303         {
6304          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6305          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6306          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6307          0x020d,
6308          0x020e},
6309         {
6310          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6311          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6312          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6313          0x020c,
6314          0x020d},
6315         {
6316          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6317          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6318          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6319          0x020b,
6320          0x020c},
6321         {
6322          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6323          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6324          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6325          0x020a,
6326          0x020b},
6327         {
6328          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6329          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6330          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6331          0x0209,
6332          0x020a},
6333         {
6334          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6335          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6336          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6337          0x0208,
6338          0x0209},
6339         {
6340          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6341          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6342          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6343          0x0207,
6344          0x0208},
6345         {
6346          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6347          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6348          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6349          0x0206,
6350          0x0207},
6351         {
6352          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6353          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6354          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6355          0x0205,
6356          0x0206},
6357         {
6358          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6359          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6360          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6361          0x0204,
6362          0x0205},
6363         {
6364          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6365          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6366          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6367          0x0203,
6368          0x0204},
6369         {
6370          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6371          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6372          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6373          0x0202,
6374          0x0203},
6375         {
6376          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6377          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6378          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6379          0x0201,
6380          0x0202},
6381         {
6382          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6383          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6384          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6385          0x0200,
6386          0x0201},
6387         {
6388          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6389          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6390          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6391          0x01ff,
6392          0x0200},
6393         {
6394          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6395          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6396          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6397          0x01fe,
6398          0x01ff},
6399         {
6400          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6401          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6402          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6403          0x01fc,
6404          0x01fd},
6405         {
6406          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6407          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6408          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6409          0x01fb,
6410          0x01fc},
6411         {
6412          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6413          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6414          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6415          0x01fa,
6416          0x01fb},
6417         {
6418          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6419          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6420          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6421          0x01f9,
6422          0x01fa},
6423         {
6424          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6425          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6426          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6427          0x01f8,
6428          0x01f9},
6429         {
6430          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6431          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6432          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6433          0x01f7,
6434          0x01f8},
6435         {
6436          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6437          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6438          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6439          0x01f6,
6440          0x01f7},
6441         {
6442          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6443          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6444          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6445          0x01f5,
6446          0x01f6},
6447         {
6448          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6449          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6450          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6451          0x01f4,
6452          0x01f5},
6453         {
6454          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6455          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6456          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6457          0x01f3,
6458          0x01f4},
6459         {
6460          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6461          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6462          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6463          0x01f2,
6464          0x01f3},
6465         {
6466          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6467          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6468          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6469          0x01f1,
6470          0x01f2},
6471         {
6472          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6473          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6474          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6475          0x01f0,
6476          0x01f1},
6477         {
6478          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6479          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6480          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6481          0x01f0,
6482          0x01f0},
6483         {
6484          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6485          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6486          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6487          0x01ef,
6488          0x01f0},
6489         {
6490          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6491          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6492          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6493          0x01ee,
6494          0x01ef},
6495         {
6496          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6497          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6498          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6499          0x01ed,
6500          0x01ee},
6501         {
6502          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6503          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6504          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6505          0x01ec,
6506          0x01ed},
6507         {
6508          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6509          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6510          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6511          0x01eb,
6512          0x01ec},
6513         {
6514          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6515          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6516          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6517          0x01ea,
6518          0x01eb},
6519         {
6520          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6521          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6522          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6523          0x01e9,
6524          0x01ea},
6525         {
6526          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6527          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6528          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6529          0x01e8,
6530          0x01e9},
6531         {
6532          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6533          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6534          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6535          0x01e7,
6536          0x01e8},
6537         {
6538          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6539          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6540          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6541          0x01e6,
6542          0x01e7},
6543         {
6544          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6545          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6546          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6547          0x01e5,
6548          0x01e6},
6549         {
6550          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6551          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6552          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6553          0x01e5,
6554          0x01e5},
6555         {
6556          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6557          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6558          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6559          0x01e4,
6560          0x01e5},
6561         {
6562          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6563          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6564          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6565          0x01e3,
6566          0x01e4},
6567         {
6568          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6569          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6570          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6571          0x01e2,
6572          0x01e3},
6573         {
6574          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6575          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6576          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6577          0x01e1,
6578          0x01e2},
6579         {
6580          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6581          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6582          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6583          0x01e0,
6584          0x01e1},
6585         {
6586          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6587          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6588          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6589          0x01df,
6590          0x01e0},
6591         {
6592          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6593          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6594          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6595          0x01de,
6596          0x01df},
6597         {
6598          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6599          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6600          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6601          0x01dd,
6602          0x01de},
6603         {
6604          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6605          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6606          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6607          0x01dd,
6608          0x01dd},
6609         {
6610          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6611          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6612          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6613          0x01dc,
6614          0x01dd},
6615         {
6616          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6617          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6618          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6619          0x01db,
6620          0x01dc},
6621         {
6622          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6623          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6624          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6625          0x01da,
6626          0x01db},
6627         {
6628          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6629          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6630          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6631          0x01d9,
6632          0x01da},
6633         {
6634          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6635          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6636          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6637          0x01d8,
6638          0x01d9},
6639         {
6640          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6641          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6642          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6643          0x01d7,
6644          0x01d8},
6645         {
6646          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6647          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6648          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6649          0x01d7,
6650          0x01d7},
6651         {
6652          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6653          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6654          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6655          0x01d6,
6656          0x01d7},
6657         {
6658          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6659          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6660          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6661          0x01d5,
6662          0x01d6},
6663         {
6664          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6665          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6666          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6667          0x01d4,
6668          0x01d5},
6669         {
6670          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6671          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6672          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6673          0x01d3,
6674          0x01d4},
6675         {
6676          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6677          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6678          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6679          0x01d2,
6680          0x01d3},
6681         {
6682          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6683          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6684          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6685          0x01d2,
6686          0x01d2},
6687         {
6688          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6689          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6690          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6691          0x01d1,
6692          0x01d2},
6693         {
6694          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6695          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6696          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6697          0x01d0,
6698          0x01d1},
6699         {
6700          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6701          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6702          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6703          0x01cf,
6704          0x01d0},
6705         {
6706          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6707          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6708          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6709          0x01ce,
6710          0x01cf},
6711         {
6712          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6713          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6714          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6715          0x01ce,
6716          0x01ce},
6717         {
6718          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6719          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6720          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6721          0x01cd,
6722          0x01ce},
6723         {
6724          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6725          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6726          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6727          0x01cc,
6728          0x01cd},
6729         {
6730          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6731          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6732          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6733          0x01cb,
6734          0x01cc},
6735         {
6736          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6737          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6738          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6739          0x01ca,
6740          0x01cb},
6741         {
6742          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6743          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6744          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6745          0x01ca,
6746          0x01cb},
6747         {
6748          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6749          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6750          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6751          0x01c9,
6752          0x01ca},
6753         {
6754          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6755          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6756          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6757          0x01c9,
6758          0x01ca},
6759         {
6760          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6761          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6762          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6763          0x01c9,
6764          0x01c9},
6765         {
6766          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6767          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6768          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6769          0x01c8,
6770          0x01c9},
6771         {
6772          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6773          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6774          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6775          0x01c8,
6776          0x01c9},
6777         {
6778          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6779          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6780          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6781          0x01c8,
6782          0x01c8},
6783         {
6784          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6785          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6786          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6787          0x01c7,
6788          0x01c8},
6789         {
6790          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6791          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6792          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6793          0x01c7,
6794          0x01c8},
6795         {
6796          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6797          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6798          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6799          0x01c6,
6800          0x01c7},
6801         {
6802          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6803          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6804          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6805          0x01c6,
6806          0x01c7},
6807         {
6808          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6809          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6810          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6811          0x01c6,
6812          0x01c6},
6813         {
6814          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6815          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6816          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6817          0x01c5,
6818          0x01c6},
6819         {
6820          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6821          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6822          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6823          0x01c5,
6824          0x01c6},
6825         {
6826          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6827          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6828          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6829          0x01c4,
6830          0x01c5},
6831         {
6832          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6833          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6834          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6835          0x01c4,
6836          0x01c5},
6837         {
6838          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6839          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6840          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6841          0x01c4,
6842          0x01c4},
6843         {
6844          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6845          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6846          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6847          0x01c3,
6848          0x01c4},
6849         {
6850          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6851          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6852          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6853          0x01c3,
6854          0x01c4},
6855         {
6856          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6857          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6858          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6859          0x01c2,
6860          0x01c3},
6861         {
6862          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6863          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6864          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6865          0x01c2,
6866          0x01c3},
6867         {
6868          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6869          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6870          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6871          0x01c2,
6872          0x01c2},
6873         {
6874          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6875          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6876          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6877          0x01c1,
6878          0x01c2},
6879         {
6880          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6881          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6882          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6883          0x01c0,
6884          0x01c1},
6885         {
6886          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6887          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6888          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6889          0x01bf,
6890          0x01c0},
6891         {
6892          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6893          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6894          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6895          0x01bf,
6896          0x01bf},
6897         {
6898          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6899          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6900          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6901          0x01be,
6902          0x01bf},
6903         {
6904          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6905          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6906          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6907          0x01bd,
6908          0x01be},
6909         {
6910          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6911          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6912          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6913          0x01bc,
6914          0x01bd},
6915         {
6916          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6917          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6918          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6919          0x043f,
6920          0x0443},
6921         {
6922          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6923          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6924          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6925          0x043d,
6926          0x0441},
6927         {
6928          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6929          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6930          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6931          0x043a,
6932          0x043f},
6933         {
6934          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6935          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6936          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6937          0x0438,
6938          0x043d},
6939         {
6940          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6941          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6942          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6943          0x0436,
6944          0x043a},
6945         {
6946          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6947          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6948          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6949          0x0434,
6950          0x0438},
6951         {
6952          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6953          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6954          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6955          0x0431,
6956          0x0436},
6957         {
6958          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6959          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6960          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6961          0x042f,
6962          0x0434},
6963         {
6964          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6965          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6966          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6967          0x042d,
6968          0x0431},
6969         {
6970          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6971          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6972          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6973          0x042b,
6974          0x042f},
6975         {
6976          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6977          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6978          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6979          0x0429,
6980          0x042d},
6981         {
6982          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6983          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6984          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6985          0x0427,
6986          0x042b},
6987         {
6988          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6989          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6990          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6991          0x0424,
6992          0x0429},
6993         {
6994          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6995          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
6996          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6997          0x041f,
6998          0x0424}
6999 };
7000
7001 static chan_info_nphy_radio2057_t chan_info_nphyrev8_2057_rev8[] = {
7002         {
7003          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7004          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7005          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7006          0x0214,
7007          0x0215},
7008         {
7009          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7010          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7011          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7012          0x0213,
7013          0x0214},
7014         {
7015          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7016          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7017          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7018          0x0212,
7019          0x0213},
7020         {
7021          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7022          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7023          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7024          0x0211,
7025          0x0212},
7026         {
7027          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7028          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7029          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7030          0x020f,
7031          0x0211},
7032         {
7033          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7034          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7035          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7036          0x020e,
7037          0x020f},
7038         {
7039          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7040          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7041          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7042          0x020d,
7043          0x020e},
7044         {
7045          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7046          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7047          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7048          0x020c,
7049          0x020d},
7050         {
7051          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7052          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7053          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7054          0x020b,
7055          0x020c},
7056         {
7057          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7058          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7059          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7060          0x020a,
7061          0x020b},
7062         {
7063          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7064          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7065          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7066          0x0209,
7067          0x020a},
7068         {
7069          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7070          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7071          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7072          0x0208,
7073          0x0209},
7074         {
7075          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7076          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7077          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7078          0x0207,
7079          0x0208},
7080         {
7081          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7082          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7083          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7084          0x0206,
7085          0x0207},
7086         {
7087          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7088          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7089          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7090          0x0205,
7091          0x0206},
7092         {
7093          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7094          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7095          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7096          0x0204,
7097          0x0205},
7098         {
7099          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7100          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7101          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7102          0x0203,
7103          0x0204},
7104         {
7105          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7106          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7107          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7108          0x0202,
7109          0x0203},
7110         {
7111          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7112          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7113          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7114          0x0201,
7115          0x0202},
7116         {
7117          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7118          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7119          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7120          0x0200,
7121          0x0201},
7122         {
7123          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7124          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7125          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7126          0x01ff,
7127          0x0200},
7128         {
7129          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7130          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7131          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7132          0x01fe,
7133          0x01ff},
7134         {
7135          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7136          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7137          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7138          0x01fc,
7139          0x01fd},
7140         {
7141          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7142          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7143          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7144          0x01fb,
7145          0x01fc},
7146         {
7147          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7148          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7149          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7150          0x01fa,
7151          0x01fb},
7152         {
7153          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7154          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7155          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7156          0x01f9,
7157          0x01fa},
7158         {
7159          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7160          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7161          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7162          0x01f8,
7163          0x01f9},
7164         {
7165          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7166          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7167          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7168          0x01f7,
7169          0x01f8},
7170         {
7171          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7172          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7173          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7174          0x01f6,
7175          0x01f7},
7176         {
7177          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7178          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7179          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7180          0x01f5,
7181          0x01f6},
7182         {
7183          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7184          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7185          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7186          0x01f4,
7187          0x01f5},
7188         {
7189          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7190          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7191          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7192          0x01f3,
7193          0x01f4},
7194         {
7195          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7196          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7197          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7198          0x01f2,
7199          0x01f3},
7200         {
7201          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7202          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7203          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7204          0x01f1,
7205          0x01f2},
7206         {
7207          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7208          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7209          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7210          0x01f0,
7211          0x01f1},
7212         {
7213          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7214          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7215          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7216          0x01f0,
7217          0x01f0},
7218         {
7219          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7220          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7221          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7222          0x01ef,
7223          0x01f0},
7224         {
7225          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7226          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7227          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7228          0x01ee,
7229          0x01ef},
7230         {
7231          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7232          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7233          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7234          0x01ed,
7235          0x01ee},
7236         {
7237          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7238          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7239          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7240          0x01ec,
7241          0x01ed},
7242         {
7243          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7244          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7245          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7246          0x01eb,
7247          0x01ec},
7248         {
7249          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7250          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7251          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7252          0x01ea,
7253          0x01eb},
7254         {
7255          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7256          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7257          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7258          0x01e9,
7259          0x01ea},
7260         {
7261          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7262          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7263          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7264          0x01e8,
7265          0x01e9},
7266         {
7267          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7268          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7269          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7270          0x01e7,
7271          0x01e8},
7272         {
7273          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7274          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7275          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7276          0x01e6,
7277          0x01e7},
7278         {
7279          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7280          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7281          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7282          0x01e5,
7283          0x01e6},
7284         {
7285          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7286          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7287          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7288          0x01e5,
7289          0x01e5},
7290         {
7291          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7292          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7293          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7294          0x01e4,
7295          0x01e5},
7296         {
7297          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7298          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7299          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7300          0x01e3,
7301          0x01e4},
7302         {
7303          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7304          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7305          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7306          0x01e2,
7307          0x01e3},
7308         {
7309          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7310          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7311          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7312          0x01e1,
7313          0x01e2},
7314         {
7315          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7316          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7317          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7318          0x01e0,
7319          0x01e1},
7320         {
7321          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7322          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7323          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7324          0x01df,
7325          0x01e0},
7326         {
7327          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7328          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7329          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7330          0x01de,
7331          0x01df},
7332         {
7333          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7334          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7335          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7336          0x01dd,
7337          0x01de},
7338         {
7339          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7340          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7341          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7342          0x01dd,
7343          0x01dd},
7344         {
7345          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7346          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7347          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7348          0x01dc,
7349          0x01dd},
7350         {
7351          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7352          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7353          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7354          0x01db,
7355          0x01dc},
7356         {
7357          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7358          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7359          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7360          0x01da,
7361          0x01db},
7362         {
7363          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7364          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7365          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7366          0x01d9,
7367          0x01da},
7368         {
7369          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7370          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7371          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7372          0x01d8,
7373          0x01d9},
7374         {
7375          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7376          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7377          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7378          0x01d7,
7379          0x01d8},
7380         {
7381          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7382          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7383          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7384          0x01d7,
7385          0x01d7},
7386         {
7387          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7388          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7389          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7390          0x01d6,
7391          0x01d7},
7392         {
7393          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7394          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7395          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7396          0x01d5,
7397          0x01d6},
7398         {
7399          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7400          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7401          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7402          0x01d4,
7403          0x01d5},
7404         {
7405          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7406          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7407          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7408          0x01d3,
7409          0x01d4},
7410         {
7411          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7412          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7413          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7414          0x01d2,
7415          0x01d3},
7416         {
7417          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7418          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7419          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7420          0x01d2,
7421          0x01d2},
7422         {
7423          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7424          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7425          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7426          0x01d1,
7427          0x01d2},
7428         {
7429          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7430          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7431          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7432          0x01d0,
7433          0x01d1},
7434         {
7435          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7436          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7437          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7438          0x01cf,
7439          0x01d0},
7440         {
7441          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7442          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7443          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7444          0x01ce,
7445          0x01cf},
7446         {
7447          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7448          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7449          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7450          0x01ce,
7451          0x01ce},
7452         {
7453          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7454          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7455          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7456          0x01cd,
7457          0x01ce},
7458         {
7459          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7460          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7461          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7462          0x01cc,
7463          0x01cd},
7464         {
7465          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7466          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7467          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7468          0x01cb,
7469          0x01cc},
7470         {
7471          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7472          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7473          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7474          0x01ca,
7475          0x01cb},
7476         {
7477          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7478          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7479          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7480          0x01ca,
7481          0x01cb},
7482         {
7483          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7484          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7485          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7486          0x01c9,
7487          0x01ca},
7488         {
7489          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7490          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7491          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7492          0x01c9,
7493          0x01ca},
7494         {
7495          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7496          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7497          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7498          0x01c9,
7499          0x01c9},
7500         {
7501          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7502          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7503          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7504          0x01c8,
7505          0x01c9},
7506         {
7507          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7508          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7509          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7510          0x01c8,
7511          0x01c9},
7512         {
7513          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7514          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7515          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7516          0x01c8,
7517          0x01c8},
7518         {
7519          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7520          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7521          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7522          0x01c7,
7523          0x01c8},
7524         {
7525          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7526          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7527          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7528          0x01c7,
7529          0x01c8},
7530         {
7531          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7532          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7533          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7534          0x01c6,
7535          0x01c7},
7536         {
7537          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7538          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7539          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7540          0x01c6,
7541          0x01c7},
7542         {
7543          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7544          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7545          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7546          0x01c6,
7547          0x01c6},
7548         {
7549          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7550          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7551          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7552          0x01c5,
7553          0x01c6},
7554         {
7555          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7556          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7557          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7558          0x01c5,
7559          0x01c6},
7560         {
7561          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7562          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7563          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7564          0x01c4,
7565          0x01c5},
7566         {
7567          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7568          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7569          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7570          0x01c4,
7571          0x01c5},
7572         {
7573          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7574          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7575          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7576          0x01c4,
7577          0x01c4},
7578         {
7579          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7580          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7581          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7582          0x01c3,
7583          0x01c4},
7584         {
7585          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7586          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7587          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7588          0x01c3,
7589          0x01c4},
7590         {
7591          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7592          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7593          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7594          0x01c2,
7595          0x01c3},
7596         {
7597          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7598          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7599          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7600          0x01c2,
7601          0x01c3},
7602         {
7603          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7604          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7605          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7606          0x01c2,
7607          0x01c2},
7608         {
7609          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7610          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7611          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7612          0x01c1,
7613          0x01c2},
7614         {
7615          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7616          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7617          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7618          0x01c0,
7619          0x01c1},
7620         {
7621          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7622          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7623          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7624          0x01bf,
7625          0x01c0},
7626         {
7627          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7628          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7629          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7630          0x01bf,
7631          0x01bf},
7632         {
7633          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7634          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7635          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7636          0x01be,
7637          0x01bf},
7638         {
7639          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7640          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7641          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7642          0x01bd,
7643          0x01be},
7644         {
7645          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7646          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7647          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7648          0x01bc,
7649          0x01bd},
7650         {
7651          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7652          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7653          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7654          0x043f,
7655          0x0443},
7656         {
7657          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7658          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7659          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7660          0x043d,
7661          0x0441},
7662         {
7663          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7664          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7665          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7666          0x043a,
7667          0x043f},
7668         {
7669          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7670          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7671          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7672          0x0438,
7673          0x043d},
7674         {
7675          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7676          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7677          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7678          0x0436,
7679          0x043a},
7680         {
7681          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7682          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7683          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7684          0x0434,
7685          0x0438},
7686         {
7687          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7688          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7689          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7690          0x0431,
7691          0x0436},
7692         {
7693          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7694          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7695          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7696          0x042f,
7697          0x0434},
7698         {
7699          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7700          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7701          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7702          0x042d,
7703          0x0431},
7704         {
7705          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7706          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7707          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7708          0x042b,
7709          0x042f},
7710         {
7711          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7712          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7713          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7714          0x0429,
7715          0x042d},
7716         {
7717          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7718          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7719          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7720          0x0427,
7721          0x042b},
7722         {
7723          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7724          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7725          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7726          0x0424,
7727          0x0429},
7728         {
7729          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7730          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7731          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7732          0x041f,
7733          0x0424}
7734 };
7735
7736 radio_regs_t regs_2055[] = {
7737         {0x02, 0x80, 0x80, 0, 0},
7738         {0x03, 0, 0, 0, 0},
7739         {0x04, 0x27, 0x27, 0, 0},
7740         {0x05, 0, 0, 0, 0},
7741         {0x06, 0x27, 0x27, 0, 0},
7742         {0x07, 0x7f, 0x7f, 1, 1},
7743         {0x08, 0x7, 0x7, 1, 1},
7744         {0x09, 0x7f, 0x7f, 1, 1},
7745         {0x0A, 0x7, 0x7, 1, 1},
7746         {0x0B, 0x15, 0x15, 0, 0},
7747         {0x0C, 0x15, 0x15, 0, 0},
7748         {0x0D, 0x4f, 0x4f, 1, 1},
7749         {0x0E, 0x5, 0x5, 1, 1},
7750         {0x0F, 0x4f, 0x4f, 1, 1},
7751         {0x10, 0x5, 0x5, 1, 1},
7752         {0x11, 0xd0, 0xd0, 0, 0},
7753         {0x12, 0x2, 0x2, 0, 0},
7754         {0x13, 0, 0, 0, 0},
7755         {0x14, 0x40, 0x40, 0, 0},
7756         {0x15, 0, 0, 0, 0},
7757         {0x16, 0, 0, 0, 0},
7758         {0x17, 0, 0, 0, 0},
7759         {0x18, 0, 0, 0, 0},
7760         {0x19, 0, 0, 0, 0},
7761         {0x1A, 0, 0, 0, 0},
7762         {0x1B, 0, 0, 0, 0},
7763         {0x1C, 0, 0, 0, 0},
7764         {0x1D, 0xc0, 0xc0, 0, 0},
7765         {0x1E, 0xff, 0xff, 0, 0},
7766         {0x1F, 0xc0, 0xc0, 0, 0},
7767         {0x20, 0xff, 0xff, 0, 0},
7768         {0x21, 0xc0, 0xc0, 0, 0},
7769         {0x22, 0, 0, 0, 0},
7770         {0x23, 0x2c, 0x2c, 0, 0},
7771         {0x24, 0, 0, 0, 0},
7772         {0x25, 0, 0, 0, 0},
7773         {0x26, 0, 0, 0, 0},
7774         {0x27, 0, 0, 0, 0},
7775         {0x28, 0, 0, 0, 0},
7776         {0x29, 0, 0, 0, 0},
7777         {0x2A, 0, 0, 0, 0},
7778         {0x2B, 0, 0, 0, 0},
7779         {0x2C, 0, 0, 0, 0},
7780         {0x2D, 0xa4, 0xa4, 0, 0},
7781         {0x2E, 0x38, 0x38, 0, 0},
7782         {0x2F, 0, 0, 0, 0},
7783         {0x30, 0x4, 0x4, 1, 1},
7784         {0x31, 0, 0, 0, 0},
7785         {0x32, 0xa, 0xa, 0, 0},
7786         {0x33, 0x87, 0x87, 0, 0},
7787         {0x34, 0x9, 0x9, 0, 0},
7788         {0x35, 0x70, 0x70, 0, 0},
7789         {0x36, 0x11, 0x11, 0, 0},
7790         {0x37, 0x18, 0x18, 1, 1},
7791         {0x38, 0x6, 0x6, 0, 0},
7792         {0x39, 0x4, 0x4, 1, 1},
7793         {0x3A, 0x6, 0x6, 0, 0},
7794         {0x3B, 0x9e, 0x9e, 0, 0},
7795         {0x3C, 0x9, 0x9, 0, 0},
7796         {0x3D, 0xc8, 0xc8, 1, 1},
7797         {0x3E, 0x88, 0x88, 0, 0},
7798         {0x3F, 0, 0, 0, 0},
7799         {0x40, 0, 0, 0, 0},
7800         {0x41, 0, 0, 0, 0},
7801         {0x42, 0x1, 0x1, 0, 0},
7802         {0x43, 0x2, 0x2, 0, 0},
7803         {0x44, 0x96, 0x96, 0, 0},
7804         {0x45, 0x3e, 0x3e, 0, 0},
7805         {0x46, 0x3e, 0x3e, 0, 0},
7806         {0x47, 0x13, 0x13, 0, 0},
7807         {0x48, 0x2, 0x2, 0, 0},
7808         {0x49, 0x15, 0x15, 0, 0},
7809         {0x4A, 0x7, 0x7, 0, 0},
7810         {0x4B, 0, 0, 0, 0},
7811         {0x4C, 0, 0, 0, 0},
7812         {0x4D, 0, 0, 0, 0},
7813         {0x4E, 0, 0, 0, 0},
7814         {0x4F, 0, 0, 0, 0},
7815         {0x50, 0x8, 0x8, 0, 0},
7816         {0x51, 0x8, 0x8, 0, 0},
7817         {0x52, 0x6, 0x6, 0, 0},
7818         {0x53, 0x84, 0x84, 1, 1},
7819         {0x54, 0xc3, 0xc3, 0, 0},
7820         {0x55, 0x8f, 0x8f, 0, 0},
7821         {0x56, 0xff, 0xff, 0, 0},
7822         {0x57, 0xff, 0xff, 0, 0},
7823         {0x58, 0x88, 0x88, 0, 0},
7824         {0x59, 0x88, 0x88, 0, 0},
7825         {0x5A, 0, 0, 0, 0},
7826         {0x5B, 0xcc, 0xcc, 0, 0},
7827         {0x5C, 0x6, 0x6, 0, 0},
7828         {0x5D, 0x80, 0x80, 0, 0},
7829         {0x5E, 0x80, 0x80, 0, 0},
7830         {0x5F, 0xf8, 0xf8, 0, 0},
7831         {0x60, 0x88, 0x88, 0, 0},
7832         {0x61, 0x88, 0x88, 0, 0},
7833         {0x62, 0x88, 0x8, 1, 1},
7834         {0x63, 0x88, 0x88, 0, 0},
7835         {0x64, 0, 0, 0, 0},
7836         {0x65, 0x1, 0x1, 1, 1},
7837         {0x66, 0x8a, 0x8a, 0, 0},
7838         {0x67, 0x8, 0x8, 0, 0},
7839         {0x68, 0x83, 0x83, 0, 0},
7840         {0x69, 0x6, 0x6, 0, 0},
7841         {0x6A, 0xa0, 0xa0, 0, 0},
7842         {0x6B, 0xa, 0xa, 0, 0},
7843         {0x6C, 0x87, 0x87, 1, 1},
7844         {0x6D, 0x2a, 0x2a, 0, 0},
7845         {0x6E, 0x2a, 0x2a, 0, 0},
7846         {0x6F, 0x2a, 0x2a, 0, 0},
7847         {0x70, 0x2a, 0x2a, 0, 0},
7848         {0x71, 0x18, 0x18, 0, 0},
7849         {0x72, 0x6a, 0x6a, 1, 1},
7850         {0x73, 0xab, 0xab, 1, 1},
7851         {0x74, 0x13, 0x13, 1, 1},
7852         {0x75, 0xc1, 0xc1, 1, 1},
7853         {0x76, 0xaa, 0xaa, 1, 1},
7854         {0x77, 0x87, 0x87, 1, 1},
7855         {0x78, 0, 0, 0, 0},
7856         {0x79, 0x6, 0x6, 0, 0},
7857         {0x7A, 0x7, 0x7, 0, 0},
7858         {0x7B, 0x7, 0x7, 0, 0},
7859         {0x7C, 0x15, 0x15, 0, 0},
7860         {0x7D, 0x55, 0x55, 0, 0},
7861         {0x7E, 0x97, 0x97, 1, 1},
7862         {0x7F, 0x8, 0x8, 0, 0},
7863         {0x80, 0x14, 0x14, 1, 1},
7864         {0x81, 0x33, 0x33, 0, 0},
7865         {0x82, 0x88, 0x88, 0, 0},
7866         {0x83, 0x6, 0x6, 0, 0},
7867         {0x84, 0x3, 0x3, 1, 1},
7868         {0x85, 0xa, 0xa, 0, 0},
7869         {0x86, 0x3, 0x3, 1, 1},
7870         {0x87, 0x2a, 0x2a, 0, 0},
7871         {0x88, 0xa4, 0xa4, 0, 0},
7872         {0x89, 0x18, 0x18, 0, 0},
7873         {0x8A, 0x28, 0x28, 0, 0},
7874         {0x8B, 0, 0, 0, 0},
7875         {0x8C, 0x4a, 0x4a, 0, 0},
7876         {0x8D, 0, 0, 0, 0},
7877         {0x8E, 0xf8, 0xf8, 0, 0},
7878         {0x8F, 0x88, 0x88, 0, 0},
7879         {0x90, 0x88, 0x88, 0, 0},
7880         {0x91, 0x88, 0x8, 1, 1},
7881         {0x92, 0x88, 0x88, 0, 0},
7882         {0x93, 0, 0, 0, 0},
7883         {0x94, 0x1, 0x1, 1, 1},
7884         {0x95, 0x8a, 0x8a, 0, 0},
7885         {0x96, 0x8, 0x8, 0, 0},
7886         {0x97, 0x83, 0x83, 0, 0},
7887         {0x98, 0x6, 0x6, 0, 0},
7888         {0x99, 0xa0, 0xa0, 0, 0},
7889         {0x9A, 0xa, 0xa, 0, 0},
7890         {0x9B, 0x87, 0x87, 1, 1},
7891         {0x9C, 0x2a, 0x2a, 0, 0},
7892         {0x9D, 0x2a, 0x2a, 0, 0},
7893         {0x9E, 0x2a, 0x2a, 0, 0},
7894         {0x9F, 0x2a, 0x2a, 0, 0},
7895         {0xA0, 0x18, 0x18, 0, 0},
7896         {0xA1, 0x6a, 0x6a, 1, 1},
7897         {0xA2, 0xab, 0xab, 1, 1},
7898         {0xA3, 0x13, 0x13, 1, 1},
7899         {0xA4, 0xc1, 0xc1, 1, 1},
7900         {0xA5, 0xaa, 0xaa, 1, 1},
7901         {0xA6, 0x87, 0x87, 1, 1},
7902         {0xA7, 0, 0, 0, 0},
7903         {0xA8, 0x6, 0x6, 0, 0},
7904         {0xA9, 0x7, 0x7, 0, 0},
7905         {0xAA, 0x7, 0x7, 0, 0},
7906         {0xAB, 0x15, 0x15, 0, 0},
7907         {0xAC, 0x55, 0x55, 0, 0},
7908         {0xAD, 0x97, 0x97, 1, 1},
7909         {0xAE, 0x8, 0x8, 0, 0},
7910         {0xAF, 0x14, 0x14, 1, 1},
7911         {0xB0, 0x33, 0x33, 0, 0},
7912         {0xB1, 0x88, 0x88, 0, 0},
7913         {0xB2, 0x6, 0x6, 0, 0},
7914         {0xB3, 0x3, 0x3, 1, 1},
7915         {0xB4, 0xa, 0xa, 0, 0},
7916         {0xB5, 0x3, 0x3, 1, 1},
7917         {0xB6, 0x2a, 0x2a, 0, 0},
7918         {0xB7, 0xa4, 0xa4, 0, 0},
7919         {0xB8, 0x18, 0x18, 0, 0},
7920         {0xB9, 0x28, 0x28, 0, 0},
7921         {0xBA, 0, 0, 0, 0},
7922         {0xBB, 0x4a, 0x4a, 0, 0},
7923         {0xBC, 0, 0, 0, 0},
7924         {0xBD, 0x71, 0x71, 0, 0},
7925         {0xBE, 0x72, 0x72, 0, 0},
7926         {0xBF, 0x73, 0x73, 0, 0},
7927         {0xC0, 0x74, 0x74, 0, 0},
7928         {0xC1, 0x75, 0x75, 0, 0},
7929         {0xC2, 0x76, 0x76, 0, 0},
7930         {0xC3, 0x77, 0x77, 0, 0},
7931         {0xC4, 0x78, 0x78, 0, 0},
7932         {0xC5, 0x79, 0x79, 0, 0},
7933         {0xC6, 0x7a, 0x7a, 0, 0},
7934         {0xC7, 0, 0, 0, 0},
7935         {0xC8, 0, 0, 0, 0},
7936         {0xC9, 0, 0, 0, 0},
7937         {0xCA, 0, 0, 0, 0},
7938         {0xCB, 0, 0, 0, 0},
7939         {0xCC, 0, 0, 0, 0},
7940         {0xCD, 0, 0, 0, 0},
7941         {0xCE, 0x6, 0x6, 0, 0},
7942         {0xCF, 0, 0, 0, 0},
7943         {0xD0, 0, 0, 0, 0},
7944         {0xD1, 0x18, 0x18, 0, 0},
7945         {0xD2, 0x88, 0x88, 0, 0},
7946         {0xD3, 0, 0, 0, 0},
7947         {0xD4, 0, 0, 0, 0},
7948         {0xD5, 0, 0, 0, 0},
7949         {0xD6, 0, 0, 0, 0},
7950         {0xD7, 0, 0, 0, 0},
7951         {0xD8, 0, 0, 0, 0},
7952         {0xD9, 0, 0, 0, 0},
7953         {0xDA, 0x6, 0x6, 0, 0},
7954         {0xDB, 0, 0, 0, 0},
7955         {0xDC, 0, 0, 0, 0},
7956         {0xDD, 0x18, 0x18, 0, 0},
7957         {0xDE, 0x88, 0x88, 0, 0},
7958         {0xDF, 0, 0, 0, 0},
7959         {0xE0, 0, 0, 0, 0},
7960         {0xE1, 0, 0, 0, 0},
7961         {0xE2, 0, 0, 0, 0},
7962         {0xFFFF, 0, 0, 0, 0},
7963 };
7964
7965 radio_regs_t regs_SYN_2056[] = {
7966         {0x02, 0, 0, 0, 0},
7967         {0x03, 0, 0, 0, 0},
7968         {0x04, 0, 0, 0, 0},
7969         {0x05, 0, 0, 0, 0},
7970         {0x06, 0, 0, 0, 0},
7971         {0x07, 0, 0, 0, 0},
7972         {0x08, 0, 0, 0, 0},
7973         {0x09, 0x1, 0x1, 0, 0},
7974         {0x0A, 0, 0, 0, 0},
7975         {0x0B, 0, 0, 0, 0},
7976         {0x0C, 0, 0, 0, 0},
7977         {0x0D, 0, 0, 0, 0},
7978         {0x0E, 0, 0, 0, 0},
7979         {0x0F, 0, 0, 0, 0},
7980         {0x10, 0, 0, 0, 0},
7981         {0x11, 0, 0, 0, 0},
7982         {0x12, 0, 0, 0, 0},
7983         {0x13, 0, 0, 0, 0},
7984         {0x14, 0, 0, 0, 0},
7985         {0x15, 0, 0, 0, 0},
7986         {0x16, 0, 0, 0, 0},
7987         {0x17, 0, 0, 0, 0},
7988         {0x18, 0, 0, 0, 0},
7989         {0x19, 0, 0, 0, 0},
7990         {0x1A, 0, 0, 0, 0},
7991         {0x1B, 0, 0, 0, 0},
7992         {0x1C, 0, 0, 0, 0},
7993         {0x1D, 0, 0, 0, 0},
7994         {0x1E, 0, 0, 0, 0},
7995         {0x1F, 0, 0, 0, 0},
7996         {0x20, 0, 0, 0, 0},
7997         {0x21, 0, 0, 0, 0},
7998         {0x22, 0x60, 0x60, 0, 0},
7999         {0x23, 0x6, 0x6, 0, 0},
8000         {0x24, 0xc, 0xc, 0, 0},
8001         {0x25, 0, 0, 0, 0},
8002         {0x26, 0, 0, 0, 0},
8003         {0x27, 0, 0, 0, 0},
8004         {0x28, 0x1, 0x1, 0, 0},
8005         {0x29, 0, 0, 0, 0},
8006         {0x2A, 0, 0, 0, 0},
8007         {0x2B, 0, 0, 0, 0},
8008         {0x2C, 0, 0, 0, 0},
8009         {0x2D, 0, 0, 0, 0},
8010         {0x2E, 0xd, 0xd, 0, 0},
8011         {0x2F, 0x1f, 0x1f, 0, 0},
8012         {0x30, 0x15, 0x15, 0, 0},
8013         {0x31, 0xf, 0xf, 0, 0},
8014         {0x32, 0, 0, 0, 0},
8015         {0x33, 0, 0, 0, 0},
8016         {0x34, 0, 0, 0, 0},
8017         {0x35, 0, 0, 0, 0},
8018         {0x36, 0, 0, 0, 0},
8019         {0x37, 0, 0, 0, 0},
8020         {0x38, 0, 0, 0, 0},
8021         {0x39, 0, 0, 0, 0},
8022         {0x3A, 0, 0, 0, 0},
8023         {0x3B, 0, 0, 0, 0},
8024         {0x3C, 0x13, 0x13, 0, 0},
8025         {0x3D, 0xf, 0xf, 0, 0},
8026         {0x3E, 0x18, 0x18, 0, 0},
8027         {0x3F, 0, 0, 0, 0},
8028         {0x40, 0, 0, 0, 0},
8029         {0x41, 0x20, 0x20, 0, 0},
8030         {0x42, 0x20, 0x20, 0, 0},
8031         {0x43, 0, 0, 0, 0},
8032         {0x44, 0x77, 0x77, 0, 0},
8033         {0x45, 0x7, 0x7, 0, 0},
8034         {0x46, 0x1, 0x1, 0, 0},
8035         {0x47, 0x4, 0x4, 0, 0},
8036         {0x48, 0xf, 0xf, 0, 0},
8037         {0x49, 0x30, 0x30, 0, 0},
8038         {0x4A, 0x32, 0x32, 0, 0},
8039         {0x4B, 0xd, 0xd, 0, 0},
8040         {0x4C, 0xd, 0xd, 0, 0},
8041         {0x4D, 0x4, 0x4, 0, 0},
8042         {0x4E, 0x6, 0x6, 0, 0},
8043         {0x4F, 0x1, 0x1, 0, 0},
8044         {0x50, 0x1c, 0x1c, 0, 0},
8045         {0x51, 0x2, 0x2, 0, 0},
8046         {0x52, 0x2, 0x2, 0, 0},
8047         {0x53, 0xf7, 0xf7, 1, 1},
8048         {0x54, 0xb4, 0xb4, 0, 0},
8049         {0x55, 0xd2, 0xd2, 0, 0},
8050         {0x56, 0, 0, 0, 0},
8051         {0x57, 0, 0, 0, 0},
8052         {0x58, 0x4, 0x4, 0, 0},
8053         {0x59, 0x96, 0x96, 0, 0},
8054         {0x5A, 0x3e, 0x3e, 0, 0},
8055         {0x5B, 0x3e, 0x3e, 0, 0},
8056         {0x5C, 0x13, 0x13, 0, 0},
8057         {0x5D, 0x2, 0x2, 0, 0},
8058         {0x5E, 0, 0, 0, 0},
8059         {0x5F, 0x7, 0x7, 0, 0},
8060         {0x60, 0x7, 0x7, 1, 1},
8061         {0x61, 0x8, 0x8, 0, 0},
8062         {0x62, 0x3, 0x3, 0, 0},
8063         {0x63, 0, 0, 0, 0},
8064         {0x64, 0, 0, 0, 0},
8065         {0x65, 0, 0, 0, 0},
8066         {0x66, 0, 0, 0, 0},
8067         {0x67, 0, 0, 0, 0},
8068         {0x68, 0x40, 0x40, 0, 0},
8069         {0x69, 0, 0, 0, 0},
8070         {0x6A, 0, 0, 0, 0},
8071         {0x6B, 0, 0, 0, 0},
8072         {0x6C, 0, 0, 0, 0},
8073         {0x6D, 0x1, 0x1, 0, 0},
8074         {0x6E, 0, 0, 0, 0},
8075         {0x6F, 0, 0, 0, 0},
8076         {0x70, 0x60, 0x60, 0, 0},
8077         {0x71, 0x66, 0x66, 0, 0},
8078         {0x72, 0xc, 0xc, 0, 0},
8079         {0x73, 0x66, 0x66, 0, 0},
8080         {0x74, 0x8f, 0x8f, 1, 1},
8081         {0x75, 0, 0, 0, 0},
8082         {0x76, 0xcc, 0xcc, 0, 0},
8083         {0x77, 0x1, 0x1, 0, 0},
8084         {0x78, 0x66, 0x66, 0, 0},
8085         {0x79, 0x66, 0x66, 0, 0},
8086         {0x7A, 0, 0, 0, 0},
8087         {0x7B, 0, 0, 0, 0},
8088         {0x7C, 0, 0, 0, 0},
8089         {0x7D, 0, 0, 0, 0},
8090         {0x7E, 0, 0, 0, 0},
8091         {0x7F, 0, 0, 0, 0},
8092         {0x80, 0, 0, 0, 0},
8093         {0x81, 0, 0, 0, 0},
8094         {0x82, 0, 0, 0, 0},
8095         {0x83, 0, 0, 0, 0},
8096         {0x84, 0, 0, 0, 0},
8097         {0x85, 0xff, 0xff, 0, 0},
8098         {0x86, 0, 0, 0, 0},
8099         {0x87, 0, 0, 0, 0},
8100         {0x88, 0, 0, 0, 0},
8101         {0x89, 0, 0, 0, 0},
8102         {0x8A, 0, 0, 0, 0},
8103         {0x8B, 0, 0, 0, 0},
8104         {0x8C, 0, 0, 0, 0},
8105         {0x8D, 0, 0, 0, 0},
8106         {0x8E, 0, 0, 0, 0},
8107         {0x8F, 0, 0, 0, 0},
8108         {0x90, 0, 0, 0, 0},
8109         {0x91, 0, 0, 0, 0},
8110         {0x92, 0, 0, 0, 0},
8111         {0x93, 0, 0, 0, 0},
8112         {0x94, 0, 0, 0, 0},
8113         {0x95, 0, 0, 0, 0},
8114         {0x96, 0, 0, 0, 0},
8115         {0x97, 0, 0, 0, 0},
8116         {0x98, 0, 0, 0, 0},
8117         {0x99, 0, 0, 0, 0},
8118         {0x9A, 0, 0, 0, 0},
8119         {0x9B, 0, 0, 0, 0},
8120         {0x9C, 0, 0, 0, 0},
8121         {0x9D, 0, 0, 0, 0},
8122         {0x9E, 0, 0, 0, 0},
8123         {0x9F, 0x6, 0x6, 0, 0},
8124         {0xA0, 0x66, 0x66, 0, 0},
8125         {0xA1, 0x66, 0x66, 0, 0},
8126         {0xA2, 0x66, 0x66, 0, 0},
8127         {0xA3, 0x66, 0x66, 0, 0},
8128         {0xA4, 0x66, 0x66, 0, 0},
8129         {0xA5, 0x66, 0x66, 0, 0},
8130         {0xA6, 0x66, 0x66, 0, 0},
8131         {0xA7, 0x66, 0x66, 0, 0},
8132         {0xA8, 0x66, 0x66, 0, 0},
8133         {0xA9, 0x66, 0x66, 0, 0},
8134         {0xAA, 0x66, 0x66, 0, 0},
8135         {0xAB, 0x66, 0x66, 0, 0},
8136         {0xAC, 0x66, 0x66, 0, 0},
8137         {0xAD, 0x66, 0x66, 0, 0},
8138         {0xAE, 0x66, 0x66, 0, 0},
8139         {0xAF, 0x66, 0x66, 0, 0},
8140         {0xB0, 0x66, 0x66, 0, 0},
8141         {0xB1, 0x66, 0x66, 0, 0},
8142         {0xB2, 0x66, 0x66, 0, 0},
8143         {0xB3, 0xa, 0xa, 0, 0},
8144         {0xB4, 0, 0, 0, 0},
8145         {0xB5, 0, 0, 0, 0},
8146         {0xB6, 0, 0, 0, 0},
8147         {0xFFFF, 0, 0, 0, 0}
8148 };
8149
8150 radio_regs_t regs_TX_2056[] = {
8151         {0x02, 0, 0, 0, 0},
8152         {0x03, 0, 0, 0, 0},
8153         {0x04, 0, 0, 0, 0},
8154         {0x05, 0, 0, 0, 0},
8155         {0x06, 0, 0, 0, 0},
8156         {0x07, 0, 0, 0, 0},
8157         {0x08, 0, 0, 0, 0},
8158         {0x09, 0, 0, 0, 0},
8159         {0x0A, 0, 0, 0, 0},
8160         {0x0B, 0, 0, 0, 0},
8161         {0x0C, 0, 0, 0, 0},
8162         {0x0D, 0, 0, 0, 0},
8163         {0x0E, 0, 0, 0, 0},
8164         {0x0F, 0, 0, 0, 0},
8165         {0x10, 0, 0, 0, 0},
8166         {0x11, 0, 0, 0, 0},
8167         {0x12, 0, 0, 0, 0},
8168         {0x13, 0, 0, 0, 0},
8169         {0x14, 0, 0, 0, 0},
8170         {0x15, 0, 0, 0, 0},
8171         {0x16, 0, 0, 0, 0},
8172         {0x17, 0, 0, 0, 0},
8173         {0x18, 0, 0, 0, 0},
8174         {0x19, 0, 0, 0, 0},
8175         {0x1A, 0, 0, 0, 0},
8176         {0x1B, 0, 0, 0, 0},
8177         {0x1C, 0, 0, 0, 0},
8178         {0x1D, 0, 0, 0, 0},
8179         {0x1E, 0, 0, 0, 0},
8180         {0x1F, 0, 0, 0, 0},
8181         {0x20, 0, 0, 0, 0},
8182         {0x21, 0x88, 0x88, 0, 0},
8183         {0x22, 0x88, 0x88, 0, 0},
8184         {0x23, 0x88, 0x88, 0, 0},
8185         {0x24, 0x88, 0x88, 0, 0},
8186         {0x25, 0xc, 0xc, 0, 0},
8187         {0x26, 0, 0, 0, 0},
8188         {0x27, 0x3, 0x3, 0, 0},
8189         {0x28, 0, 0, 0, 0},
8190         {0x29, 0x3, 0x3, 0, 0},
8191         {0x2A, 0x37, 0x37, 0, 0},
8192         {0x2B, 0x3, 0x3, 0, 0},
8193         {0x2C, 0, 0, 0, 0},
8194         {0x2D, 0, 0, 0, 0},
8195         {0x2E, 0x1, 0x1, 0, 0},
8196         {0x2F, 0x1, 0x1, 0, 0},
8197         {0x30, 0, 0, 0, 0},
8198         {0x31, 0, 0, 0, 0},
8199         {0x32, 0, 0, 0, 0},
8200         {0x33, 0x11, 0x11, 0, 0},
8201         {0x34, 0x11, 0x11, 0, 0},
8202         {0x35, 0, 0, 0, 0},
8203         {0x36, 0, 0, 0, 0},
8204         {0x37, 0x3, 0x3, 0, 0},
8205         {0x38, 0xf, 0xf, 0, 0},
8206         {0x39, 0, 0, 0, 0},
8207         {0x3A, 0x2d, 0x2d, 0, 0},
8208         {0x3B, 0, 0, 0, 0},
8209         {0x3C, 0x6e, 0x6e, 0, 0},
8210         {0x3D, 0xf0, 0xf0, 1, 1},
8211         {0x3E, 0, 0, 0, 0},
8212         {0x3F, 0, 0, 0, 0},
8213         {0x40, 0, 0, 0, 0},
8214         {0x41, 0x3, 0x3, 0, 0},
8215         {0x42, 0x3, 0x3, 0, 0},
8216         {0x43, 0, 0, 0, 0},
8217         {0x44, 0x1e, 0x1e, 0, 0},
8218         {0x45, 0, 0, 0, 0},
8219         {0x46, 0x6e, 0x6e, 0, 0},
8220         {0x47, 0xf0, 0xf0, 1, 1},
8221         {0x48, 0, 0, 0, 0},
8222         {0x49, 0x2, 0x2, 0, 0},
8223         {0x4A, 0xff, 0xff, 1, 1},
8224         {0x4B, 0xc, 0xc, 0, 0},
8225         {0x4C, 0, 0, 0, 0},
8226         {0x4D, 0x38, 0x38, 0, 0},
8227         {0x4E, 0x70, 0x70, 1, 1},
8228         {0x4F, 0x2, 0x2, 0, 0},
8229         {0x50, 0x88, 0x88, 0, 0},
8230         {0x51, 0xc, 0xc, 0, 0},
8231         {0x52, 0, 0, 0, 0},
8232         {0x53, 0x8, 0x8, 0, 0},
8233         {0x54, 0x70, 0x70, 1, 1},
8234         {0x55, 0x2, 0x2, 0, 0},
8235         {0x56, 0xff, 0xff, 1, 1},
8236         {0x57, 0, 0, 0, 0},
8237         {0x58, 0x83, 0x83, 0, 0},
8238         {0x59, 0x77, 0x77, 1, 1},
8239         {0x5A, 0, 0, 0, 0},
8240         {0x5B, 0x2, 0x2, 0, 0},
8241         {0x5C, 0x88, 0x88, 0, 0},
8242         {0x5D, 0, 0, 0, 0},
8243         {0x5E, 0x8, 0x8, 0, 0},
8244         {0x5F, 0x77, 0x77, 1, 1},
8245         {0x60, 0x1, 0x1, 0, 0},
8246         {0x61, 0, 0, 0, 0},
8247         {0x62, 0x7, 0x7, 0, 0},
8248         {0x63, 0, 0, 0, 0},
8249         {0x64, 0x7, 0x7, 0, 0},
8250         {0x65, 0, 0, 0, 0},
8251         {0x66, 0, 0, 0, 0},
8252         {0x67, 0x74, 0x74, 1, 1},
8253         {0x68, 0, 0, 0, 0},
8254         {0x69, 0xa, 0xa, 0, 0},
8255         {0x6A, 0, 0, 0, 0},
8256         {0x6B, 0, 0, 0, 0},
8257         {0x6C, 0, 0, 0, 0},
8258         {0x6D, 0, 0, 0, 0},
8259         {0x6E, 0, 0, 0, 0},
8260         {0x6F, 0, 0, 0, 0},
8261         {0x70, 0, 0, 0, 0},
8262         {0x71, 0x2, 0x2, 0, 0},
8263         {0x72, 0, 0, 0, 0},
8264         {0x73, 0, 0, 0, 0},
8265         {0x74, 0xe, 0xe, 0, 0},
8266         {0x75, 0xe, 0xe, 0, 0},
8267         {0x76, 0xe, 0xe, 0, 0},
8268         {0x77, 0x13, 0x13, 0, 0},
8269         {0x78, 0x13, 0x13, 0, 0},
8270         {0x79, 0x1b, 0x1b, 0, 0},
8271         {0x7A, 0x1b, 0x1b, 0, 0},
8272         {0x7B, 0x55, 0x55, 0, 0},
8273         {0x7C, 0x5b, 0x5b, 0, 0},
8274         {0x7D, 0, 0, 0, 0},
8275         {0x7E, 0, 0, 0, 0},
8276         {0x7F, 0, 0, 0, 0},
8277         {0x80, 0, 0, 0, 0},
8278         {0x81, 0, 0, 0, 0},
8279         {0x82, 0, 0, 0, 0},
8280         {0x83, 0, 0, 0, 0},
8281         {0x84, 0, 0, 0, 0},
8282         {0x85, 0, 0, 0, 0},
8283         {0x86, 0, 0, 0, 0},
8284         {0x87, 0, 0, 0, 0},
8285         {0x88, 0, 0, 0, 0},
8286         {0x89, 0, 0, 0, 0},
8287         {0x8A, 0, 0, 0, 0},
8288         {0x8B, 0, 0, 0, 0},
8289         {0x8C, 0, 0, 0, 0},
8290         {0x8D, 0, 0, 0, 0},
8291         {0x8E, 0, 0, 0, 0},
8292         {0x8F, 0, 0, 0, 0},
8293         {0x90, 0, 0, 0, 0},
8294         {0x91, 0, 0, 0, 0},
8295         {0x92, 0, 0, 0, 0},
8296         {0xFFFF, 0, 0, 0, 0}
8297 };
8298
8299 radio_regs_t regs_RX_2056[] = {
8300         {0x02, 0, 0, 0, 0},
8301         {0x03, 0, 0, 0, 0},
8302         {0x04, 0, 0, 0, 0},
8303         {0x05, 0, 0, 0, 0},
8304         {0x06, 0, 0, 0, 0},
8305         {0x07, 0, 0, 0, 0},
8306         {0x08, 0, 0, 0, 0},
8307         {0x09, 0, 0, 0, 0},
8308         {0x0A, 0, 0, 0, 0},
8309         {0x0B, 0, 0, 0, 0},
8310         {0x0C, 0, 0, 0, 0},
8311         {0x0D, 0, 0, 0, 0},
8312         {0x0E, 0, 0, 0, 0},
8313         {0x0F, 0, 0, 0, 0},
8314         {0x10, 0, 0, 0, 0},
8315         {0x11, 0, 0, 0, 0},
8316         {0x12, 0, 0, 0, 0},
8317         {0x13, 0, 0, 0, 0},
8318         {0x14, 0, 0, 0, 0},
8319         {0x15, 0, 0, 0, 0},
8320         {0x16, 0, 0, 0, 0},
8321         {0x17, 0, 0, 0, 0},
8322         {0x18, 0, 0, 0, 0},
8323         {0x19, 0, 0, 0, 0},
8324         {0x1A, 0, 0, 0, 0},
8325         {0x1B, 0, 0, 0, 0},
8326         {0x1C, 0, 0, 0, 0},
8327         {0x1D, 0, 0, 0, 0},
8328         {0x1E, 0, 0, 0, 0},
8329         {0x1F, 0, 0, 0, 0},
8330         {0x20, 0x3, 0x3, 0, 0},
8331         {0x21, 0, 0, 0, 0},
8332         {0x22, 0, 0, 0, 0},
8333         {0x23, 0x90, 0x90, 0, 0},
8334         {0x24, 0x55, 0x55, 0, 0},
8335         {0x25, 0x15, 0x15, 0, 0},
8336         {0x26, 0x5, 0x5, 0, 0},
8337         {0x27, 0x15, 0x15, 0, 0},
8338         {0x28, 0x5, 0x5, 0, 0},
8339         {0x29, 0x20, 0x20, 0, 0},
8340         {0x2A, 0x11, 0x11, 0, 0},
8341         {0x2B, 0x90, 0x90, 0, 0},
8342         {0x2C, 0, 0, 0, 0},
8343         {0x2D, 0x88, 0x88, 0, 0},
8344         {0x2E, 0x32, 0x32, 0, 0},
8345         {0x2F, 0x77, 0x77, 0, 0},
8346         {0x30, 0x17, 0x17, 1, 1},
8347         {0x31, 0xff, 0xff, 1, 1},
8348         {0x32, 0x20, 0x20, 0, 0},
8349         {0x33, 0, 0, 0, 0},
8350         {0x34, 0x88, 0x88, 0, 0},
8351         {0x35, 0x32, 0x32, 0, 0},
8352         {0x36, 0x77, 0x77, 0, 0},
8353         {0x37, 0x17, 0x17, 1, 1},
8354         {0x38, 0xf0, 0xf0, 1, 1},
8355         {0x39, 0x20, 0x20, 0, 0},
8356         {0x3A, 0x8, 0x8, 0, 0},
8357         {0x3B, 0x99, 0x99, 0, 0},
8358         {0x3C, 0, 0, 0, 0},
8359         {0x3D, 0x44, 0x44, 1, 1},
8360         {0x3E, 0, 0, 0, 0},
8361         {0x3F, 0x44, 0x44, 0, 0},
8362         {0x40, 0xf, 0xf, 1, 1},
8363         {0x41, 0x6, 0x6, 0, 0},
8364         {0x42, 0x4, 0x4, 0, 0},
8365         {0x43, 0x50, 0x50, 1, 1},
8366         {0x44, 0x8, 0x8, 0, 0},
8367         {0x45, 0x99, 0x99, 0, 0},
8368         {0x46, 0, 0, 0, 0},
8369         {0x47, 0x11, 0x11, 0, 0},
8370         {0x48, 0, 0, 0, 0},
8371         {0x49, 0x44, 0x44, 0, 0},
8372         {0x4A, 0x7, 0x7, 0, 0},
8373         {0x4B, 0x6, 0x6, 0, 0},
8374         {0x4C, 0x4, 0x4, 0, 0},
8375         {0x4D, 0, 0, 0, 0},
8376         {0x4E, 0, 0, 0, 0},
8377         {0x4F, 0x66, 0x66, 0, 0},
8378         {0x50, 0x66, 0x66, 0, 0},
8379         {0x51, 0x57, 0x57, 0, 0},
8380         {0x52, 0x57, 0x57, 0, 0},
8381         {0x53, 0x44, 0x44, 0, 0},
8382         {0x54, 0, 0, 0, 0},
8383         {0x55, 0, 0, 0, 0},
8384         {0x56, 0x8, 0x8, 0, 0},
8385         {0x57, 0x8, 0x8, 0, 0},
8386         {0x58, 0x7, 0x7, 0, 0},
8387         {0x59, 0x22, 0x22, 0, 0},
8388         {0x5A, 0x22, 0x22, 0, 0},
8389         {0x5B, 0x2, 0x2, 0, 0},
8390         {0x5C, 0x23, 0x23, 0, 0},
8391         {0x5D, 0x7, 0x7, 0, 0},
8392         {0x5E, 0x55, 0x55, 0, 0},
8393         {0x5F, 0x23, 0x23, 0, 0},
8394         {0x60, 0x41, 0x41, 0, 0},
8395         {0x61, 0x1, 0x1, 0, 0},
8396         {0x62, 0xa, 0xa, 0, 0},
8397         {0x63, 0, 0, 0, 0},
8398         {0x64, 0, 0, 0, 0},
8399         {0x65, 0, 0, 0, 0},
8400         {0x66, 0, 0, 0, 0},
8401         {0x67, 0, 0, 0, 0},
8402         {0x68, 0, 0, 0, 0},
8403         {0x69, 0, 0, 0, 0},
8404         {0x6A, 0, 0, 0, 0},
8405         {0x6B, 0xc, 0xc, 0, 0},
8406         {0x6C, 0, 0, 0, 0},
8407         {0x6D, 0, 0, 0, 0},
8408         {0x6E, 0, 0, 0, 0},
8409         {0x6F, 0, 0, 0, 0},
8410         {0x70, 0, 0, 0, 0},
8411         {0x71, 0, 0, 0, 0},
8412         {0x72, 0x22, 0x22, 0, 0},
8413         {0x73, 0x22, 0x22, 0, 0},
8414         {0x74, 0x2, 0x2, 0, 0},
8415         {0x75, 0xa, 0xa, 0, 0},
8416         {0x76, 0x1, 0x1, 0, 0},
8417         {0x77, 0x22, 0x22, 0, 0},
8418         {0x78, 0x30, 0x30, 0, 0},
8419         {0x79, 0, 0, 0, 0},
8420         {0x7A, 0, 0, 0, 0},
8421         {0x7B, 0, 0, 0, 0},
8422         {0x7C, 0, 0, 0, 0},
8423         {0x7D, 0, 0, 0, 0},
8424         {0x7E, 0, 0, 0, 0},
8425         {0x7F, 0, 0, 0, 0},
8426         {0x80, 0, 0, 0, 0},
8427         {0x81, 0, 0, 0, 0},
8428         {0x82, 0, 0, 0, 0},
8429         {0x83, 0, 0, 0, 0},
8430         {0x84, 0, 0, 0, 0},
8431         {0x85, 0, 0, 0, 0},
8432         {0x86, 0, 0, 0, 0},
8433         {0x87, 0, 0, 0, 0},
8434         {0x88, 0, 0, 0, 0},
8435         {0x89, 0, 0, 0, 0},
8436         {0x8A, 0, 0, 0, 0},
8437         {0x8B, 0, 0, 0, 0},
8438         {0x8C, 0, 0, 0, 0},
8439         {0x8D, 0, 0, 0, 0},
8440         {0x8E, 0, 0, 0, 0},
8441         {0x8F, 0, 0, 0, 0},
8442         {0x90, 0, 0, 0, 0},
8443         {0x91, 0, 0, 0, 0},
8444         {0x92, 0, 0, 0, 0},
8445         {0x93, 0, 0, 0, 0},
8446         {0x94, 0, 0, 0, 0},
8447         {0xFFFF, 0, 0, 0, 0}
8448 };
8449
8450 radio_regs_t regs_SYN_2056_A1[] = {
8451         {0x02, 0, 0, 0, 0},
8452         {0x03, 0, 0, 0, 0},
8453         {0x04, 0, 0, 0, 0},
8454         {0x05, 0, 0, 0, 0},
8455         {0x06, 0, 0, 0, 0},
8456         {0x07, 0, 0, 0, 0},
8457         {0x08, 0, 0, 0, 0},
8458         {0x09, 0x1, 0x1, 0, 0},
8459         {0x0A, 0, 0, 0, 0},
8460         {0x0B, 0, 0, 0, 0},
8461         {0x0C, 0, 0, 0, 0},
8462         {0x0D, 0, 0, 0, 0},
8463         {0x0E, 0, 0, 0, 0},
8464         {0x0F, 0, 0, 0, 0},
8465         {0x10, 0, 0, 0, 0},
8466         {0x11, 0, 0, 0, 0},
8467         {0x12, 0, 0, 0, 0},
8468         {0x13, 0, 0, 0, 0},
8469         {0x14, 0, 0, 0, 0},
8470         {0x15, 0, 0, 0, 0},
8471         {0x16, 0, 0, 0, 0},
8472         {0x17, 0, 0, 0, 0},
8473         {0x18, 0, 0, 0, 0},
8474         {0x19, 0, 0, 0, 0},
8475         {0x1A, 0, 0, 0, 0},
8476         {0x1B, 0, 0, 0, 0},
8477         {0x1C, 0, 0, 0, 0},
8478         {0x1D, 0, 0, 0, 0},
8479         {0x1E, 0, 0, 0, 0},
8480         {0x1F, 0, 0, 0, 0},
8481         {0x20, 0, 0, 0, 0},
8482         {0x21, 0, 0, 0, 0},
8483         {0x22, 0x60, 0x60, 0, 0},
8484         {0x23, 0x6, 0x6, 0, 0},
8485         {0x24, 0xc, 0xc, 0, 0},
8486         {0x25, 0, 0, 0, 0},
8487         {0x26, 0, 0, 0, 0},
8488         {0x27, 0, 0, 0, 0},
8489         {0x28, 0x1, 0x1, 0, 0},
8490         {0x29, 0, 0, 0, 0},
8491         {0x2A, 0, 0, 0, 0},
8492         {0x2B, 0, 0, 0, 0},
8493         {0x2C, 0, 0, 0, 0},
8494         {0x2D, 0, 0, 0, 0},
8495         {0x2E, 0xd, 0xd, 0, 0},
8496         {0x2F, 0x1f, 0x1f, 0, 0},
8497         {0x30, 0x15, 0x15, 0, 0},
8498         {0x31, 0xf, 0xf, 0, 0},
8499         {0x32, 0, 0, 0, 0},
8500         {0x33, 0, 0, 0, 0},
8501         {0x34, 0, 0, 0, 0},
8502         {0x35, 0, 0, 0, 0},
8503         {0x36, 0, 0, 0, 0},
8504         {0x37, 0, 0, 0, 0},
8505         {0x38, 0, 0, 0, 0},
8506         {0x39, 0, 0, 0, 0},
8507         {0x3A, 0, 0, 0, 0},
8508         {0x3B, 0, 0, 0, 0},
8509         {0x3C, 0x13, 0x13, 0, 0},
8510         {0x3D, 0xf, 0xf, 0, 0},
8511         {0x3E, 0x18, 0x18, 0, 0},
8512         {0x3F, 0, 0, 0, 0},
8513         {0x40, 0, 0, 0, 0},
8514         {0x41, 0x20, 0x20, 0, 0},
8515         {0x42, 0x20, 0x20, 0, 0},
8516         {0x43, 0, 0, 0, 0},
8517         {0x44, 0x77, 0x77, 0, 0},
8518         {0x45, 0x7, 0x7, 0, 0},
8519         {0x46, 0x1, 0x1, 0, 0},
8520         {0x47, 0x4, 0x4, 0, 0},
8521         {0x48, 0xf, 0xf, 0, 0},
8522         {0x49, 0x30, 0x30, 0, 0},
8523         {0x4A, 0x32, 0x32, 0, 0},
8524         {0x4B, 0xd, 0xd, 0, 0},
8525         {0x4C, 0xd, 0xd, 0, 0},
8526         {0x4D, 0x4, 0x4, 0, 0},
8527         {0x4E, 0x6, 0x6, 0, 0},
8528         {0x4F, 0x1, 0x1, 0, 0},
8529         {0x50, 0x1c, 0x1c, 0, 0},
8530         {0x51, 0x2, 0x2, 0, 0},
8531         {0x52, 0x2, 0x2, 0, 0},
8532         {0x53, 0xf7, 0xf7, 1, 1},
8533         {0x54, 0xb4, 0xb4, 0, 0},
8534         {0x55, 0xd2, 0xd2, 0, 0},
8535         {0x56, 0, 0, 0, 0},
8536         {0x57, 0, 0, 0, 0},
8537         {0x58, 0x4, 0x4, 0, 0},
8538         {0x59, 0x96, 0x96, 0, 0},
8539         {0x5A, 0x3e, 0x3e, 0, 0},
8540         {0x5B, 0x3e, 0x3e, 0, 0},
8541         {0x5C, 0x13, 0x13, 0, 0},
8542         {0x5D, 0x2, 0x2, 0, 0},
8543         {0x5E, 0, 0, 0, 0},
8544         {0x5F, 0x7, 0x7, 0, 0},
8545         {0x60, 0x7, 0x7, 1, 1},
8546         {0x61, 0x8, 0x8, 0, 0},
8547         {0x62, 0x3, 0x3, 0, 0},
8548         {0x63, 0, 0, 0, 0},
8549         {0x64, 0, 0, 0, 0},
8550         {0x65, 0, 0, 0, 0},
8551         {0x66, 0, 0, 0, 0},
8552         {0x67, 0, 0, 0, 0},
8553         {0x68, 0x40, 0x40, 0, 0},
8554         {0x69, 0, 0, 0, 0},
8555         {0x6A, 0, 0, 0, 0},
8556         {0x6B, 0, 0, 0, 0},
8557         {0x6C, 0, 0, 0, 0},
8558         {0x6D, 0x1, 0x1, 0, 0},
8559         {0x6E, 0, 0, 0, 0},
8560         {0x6F, 0, 0, 0, 0},
8561         {0x70, 0x60, 0x60, 0, 0},
8562         {0x71, 0x66, 0x66, 0, 0},
8563         {0x72, 0xc, 0xc, 0, 0},
8564         {0x73, 0x66, 0x66, 0, 0},
8565         {0x74, 0x8f, 0x8f, 1, 1},
8566         {0x75, 0, 0, 0, 0},
8567         {0x76, 0xcc, 0xcc, 0, 0},
8568         {0x77, 0x1, 0x1, 0, 0},
8569         {0x78, 0x66, 0x66, 0, 0},
8570         {0x79, 0x66, 0x66, 0, 0},
8571         {0x7A, 0, 0, 0, 0},
8572         {0x7B, 0, 0, 0, 0},
8573         {0x7C, 0, 0, 0, 0},
8574         {0x7D, 0, 0, 0, 0},
8575         {0x7E, 0, 0, 0, 0},
8576         {0x7F, 0, 0, 0, 0},
8577         {0x80, 0, 0, 0, 0},
8578         {0x81, 0, 0, 0, 0},
8579         {0x82, 0, 0, 0, 0},
8580         {0x83, 0, 0, 0, 0},
8581         {0x84, 0, 0, 0, 0},
8582         {0x85, 0xff, 0xff, 0, 0},
8583         {0x86, 0, 0, 0, 0},
8584         {0x87, 0, 0, 0, 0},
8585         {0x88, 0, 0, 0, 0},
8586         {0x89, 0, 0, 0, 0},
8587         {0x8A, 0, 0, 0, 0},
8588         {0x8B, 0, 0, 0, 0},
8589         {0x8C, 0, 0, 0, 0},
8590         {0x8D, 0, 0, 0, 0},
8591         {0x8E, 0, 0, 0, 0},
8592         {0x8F, 0, 0, 0, 0},
8593         {0x90, 0, 0, 0, 0},
8594         {0x91, 0, 0, 0, 0},
8595         {0x92, 0, 0, 0, 0},
8596         {0x93, 0, 0, 0, 0},
8597         {0x94, 0, 0, 0, 0},
8598         {0x95, 0, 0, 0, 0},
8599         {0x96, 0, 0, 0, 0},
8600         {0x97, 0, 0, 0, 0},
8601         {0x98, 0, 0, 0, 0},
8602         {0x99, 0, 0, 0, 0},
8603         {0x9A, 0, 0, 0, 0},
8604         {0x9B, 0, 0, 0, 0},
8605         {0x9C, 0, 0, 0, 0},
8606         {0x9D, 0, 0, 0, 0},
8607         {0x9E, 0, 0, 0, 0},
8608         {0x9F, 0x6, 0x6, 0, 0},
8609         {0xA0, 0x66, 0x66, 0, 0},
8610         {0xA1, 0x66, 0x66, 0, 0},
8611         {0xA2, 0x66, 0x66, 0, 0},
8612         {0xA3, 0x66, 0x66, 0, 0},
8613         {0xA4, 0x66, 0x66, 0, 0},
8614         {0xA5, 0x66, 0x66, 0, 0},
8615         {0xA6, 0x66, 0x66, 0, 0},
8616         {0xA7, 0x66, 0x66, 0, 0},
8617         {0xA8, 0x66, 0x66, 0, 0},
8618         {0xA9, 0x66, 0x66, 0, 0},
8619         {0xAA, 0x66, 0x66, 0, 0},
8620         {0xAB, 0x66, 0x66, 0, 0},
8621         {0xAC, 0x66, 0x66, 0, 0},
8622         {0xAD, 0x66, 0x66, 0, 0},
8623         {0xAE, 0x66, 0x66, 0, 0},
8624         {0xAF, 0x66, 0x66, 0, 0},
8625         {0xB0, 0x66, 0x66, 0, 0},
8626         {0xB1, 0x66, 0x66, 0, 0},
8627         {0xB2, 0x66, 0x66, 0, 0},
8628         {0xB3, 0xa, 0xa, 0, 0},
8629         {0xB4, 0, 0, 0, 0},
8630         {0xB5, 0, 0, 0, 0},
8631         {0xB6, 0, 0, 0, 0},
8632         {0xFFFF, 0, 0, 0, 0}
8633 };
8634
8635 radio_regs_t regs_TX_2056_A1[] = {
8636         {0x02, 0, 0, 0, 0},
8637         {0x03, 0, 0, 0, 0},
8638         {0x04, 0, 0, 0, 0},
8639         {0x05, 0, 0, 0, 0},
8640         {0x06, 0, 0, 0, 0},
8641         {0x07, 0, 0, 0, 0},
8642         {0x08, 0, 0, 0, 0},
8643         {0x09, 0, 0, 0, 0},
8644         {0x0A, 0, 0, 0, 0},
8645         {0x0B, 0, 0, 0, 0},
8646         {0x0C, 0, 0, 0, 0},
8647         {0x0D, 0, 0, 0, 0},
8648         {0x0E, 0, 0, 0, 0},
8649         {0x0F, 0, 0, 0, 0},
8650         {0x10, 0, 0, 0, 0},
8651         {0x11, 0, 0, 0, 0},
8652         {0x12, 0, 0, 0, 0},
8653         {0x13, 0, 0, 0, 0},
8654         {0x14, 0, 0, 0, 0},
8655         {0x15, 0, 0, 0, 0},
8656         {0x16, 0, 0, 0, 0},
8657         {0x17, 0, 0, 0, 0},
8658         {0x18, 0, 0, 0, 0},
8659         {0x19, 0, 0, 0, 0},
8660         {0x1A, 0, 0, 0, 0},
8661         {0x1B, 0, 0, 0, 0},
8662         {0x1C, 0, 0, 0, 0},
8663         {0x1D, 0, 0, 0, 0},
8664         {0x1E, 0, 0, 0, 0},
8665         {0x1F, 0, 0, 0, 0},
8666         {0x20, 0, 0, 0, 0},
8667         {0x21, 0x88, 0x88, 0, 0},
8668         {0x22, 0x88, 0x88, 0, 0},
8669         {0x23, 0x88, 0x88, 0, 0},
8670         {0x24, 0x88, 0x88, 0, 0},
8671         {0x25, 0xc, 0xc, 0, 0},
8672         {0x26, 0, 0, 0, 0},
8673         {0x27, 0x3, 0x3, 0, 0},
8674         {0x28, 0, 0, 0, 0},
8675         {0x29, 0x3, 0x3, 0, 0},
8676         {0x2A, 0x37, 0x37, 0, 0},
8677         {0x2B, 0x3, 0x3, 0, 0},
8678         {0x2C, 0, 0, 0, 0},
8679         {0x2D, 0, 0, 0, 0},
8680         {0x2E, 0x1, 0x1, 0, 0},
8681         {0x2F, 0x1, 0x1, 0, 0},
8682         {0x30, 0, 0, 0, 0},
8683         {0x31, 0, 0, 0, 0},
8684         {0x32, 0, 0, 0, 0},
8685         {0x33, 0x11, 0x11, 0, 0},
8686         {0x34, 0x11, 0x11, 0, 0},
8687         {0x35, 0, 0, 0, 0},
8688         {0x36, 0, 0, 0, 0},
8689         {0x37, 0x3, 0x3, 0, 0},
8690         {0x38, 0xf, 0xf, 0, 0},
8691         {0x39, 0, 0, 0, 0},
8692         {0x3A, 0x2d, 0x2d, 0, 0},
8693         {0x3B, 0, 0, 0, 0},
8694         {0x3C, 0x6e, 0x6e, 0, 0},
8695         {0x3D, 0xf0, 0xf0, 1, 1},
8696         {0x3E, 0, 0, 0, 0},
8697         {0x3F, 0, 0, 0, 0},
8698         {0x40, 0, 0, 0, 0},
8699         {0x41, 0x3, 0x3, 0, 0},
8700         {0x42, 0x3, 0x3, 0, 0},
8701         {0x43, 0, 0, 0, 0},
8702         {0x44, 0x1e, 0x1e, 0, 0},
8703         {0x45, 0, 0, 0, 0},
8704         {0x46, 0x6e, 0x6e, 0, 0},
8705         {0x47, 0xf0, 0xf0, 1, 1},
8706         {0x48, 0, 0, 0, 0},
8707         {0x49, 0x2, 0x2, 0, 0},
8708         {0x4A, 0xff, 0xff, 1, 1},
8709         {0x4B, 0xc, 0xc, 0, 0},
8710         {0x4C, 0, 0, 0, 0},
8711         {0x4D, 0x38, 0x38, 0, 0},
8712         {0x4E, 0x70, 0x70, 1, 1},
8713         {0x4F, 0x2, 0x2, 0, 0},
8714         {0x50, 0x88, 0x88, 0, 0},
8715         {0x51, 0xc, 0xc, 0, 0},
8716         {0x52, 0, 0, 0, 0},
8717         {0x53, 0x8, 0x8, 0, 0},
8718         {0x54, 0x70, 0x70, 1, 1},
8719         {0x55, 0x2, 0x2, 0, 0},
8720         {0x56, 0xff, 0xff, 1, 1},
8721         {0x57, 0, 0, 0, 0},
8722         {0x58, 0x83, 0x83, 0, 0},
8723         {0x59, 0x77, 0x77, 1, 1},
8724         {0x5A, 0, 0, 0, 0},
8725         {0x5B, 0x2, 0x2, 0, 0},
8726         {0x5C, 0x88, 0x88, 0, 0},
8727         {0x5D, 0, 0, 0, 0},
8728         {0x5E, 0x8, 0x8, 0, 0},
8729         {0x5F, 0x77, 0x77, 1, 1},
8730         {0x60, 0x1, 0x1, 0, 0},
8731         {0x61, 0, 0, 0, 0},
8732         {0x62, 0x7, 0x7, 0, 0},
8733         {0x63, 0, 0, 0, 0},
8734         {0x64, 0x7, 0x7, 0, 0},
8735         {0x65, 0, 0, 0, 0},
8736         {0x66, 0, 0, 0, 0},
8737         {0x67, 0x72, 0x72, 1, 1},
8738         {0x68, 0, 0, 0, 0},
8739         {0x69, 0xa, 0xa, 0, 0},
8740         {0x6A, 0, 0, 0, 0},
8741         {0x6B, 0, 0, 0, 0},
8742         {0x6C, 0, 0, 0, 0},
8743         {0x6D, 0, 0, 0, 0},
8744         {0x6E, 0, 0, 0, 0},
8745         {0x6F, 0, 0, 0, 0},
8746         {0x70, 0, 0, 0, 0},
8747         {0x71, 0x2, 0x2, 0, 0},
8748         {0x72, 0, 0, 0, 0},
8749         {0x73, 0, 0, 0, 0},
8750         {0x74, 0xe, 0xe, 0, 0},
8751         {0x75, 0xe, 0xe, 0, 0},
8752         {0x76, 0xe, 0xe, 0, 0},
8753         {0x77, 0x13, 0x13, 0, 0},
8754         {0x78, 0x13, 0x13, 0, 0},
8755         {0x79, 0x1b, 0x1b, 0, 0},
8756         {0x7A, 0x1b, 0x1b, 0, 0},
8757         {0x7B, 0x55, 0x55, 0, 0},
8758         {0x7C, 0x5b, 0x5b, 0, 0},
8759         {0x7D, 0, 0, 0, 0},
8760         {0x7E, 0, 0, 0, 0},
8761         {0x7F, 0, 0, 0, 0},
8762         {0x80, 0, 0, 0, 0},
8763         {0x81, 0, 0, 0, 0},
8764         {0x82, 0, 0, 0, 0},
8765         {0x83, 0, 0, 0, 0},
8766         {0x84, 0, 0, 0, 0},
8767         {0x85, 0, 0, 0, 0},
8768         {0x86, 0, 0, 0, 0},
8769         {0x87, 0, 0, 0, 0},
8770         {0x88, 0, 0, 0, 0},
8771         {0x89, 0, 0, 0, 0},
8772         {0x8A, 0, 0, 0, 0},
8773         {0x8B, 0, 0, 0, 0},
8774         {0x8C, 0, 0, 0, 0},
8775         {0x8D, 0, 0, 0, 0},
8776         {0x8E, 0, 0, 0, 0},
8777         {0x8F, 0, 0, 0, 0},
8778         {0x90, 0, 0, 0, 0},
8779         {0x91, 0, 0, 0, 0},
8780         {0x92, 0, 0, 0, 0},
8781         {0xFFFF, 0, 0, 0, 0}
8782 };
8783
8784 radio_regs_t regs_RX_2056_A1[] = {
8785         {0x02, 0, 0, 0, 0},
8786         {0x03, 0, 0, 0, 0},
8787         {0x04, 0, 0, 0, 0},
8788         {0x05, 0, 0, 0, 0},
8789         {0x06, 0, 0, 0, 0},
8790         {0x07, 0, 0, 0, 0},
8791         {0x08, 0, 0, 0, 0},
8792         {0x09, 0, 0, 0, 0},
8793         {0x0A, 0, 0, 0, 0},
8794         {0x0B, 0, 0, 0, 0},
8795         {0x0C, 0, 0, 0, 0},
8796         {0x0D, 0, 0, 0, 0},
8797         {0x0E, 0, 0, 0, 0},
8798         {0x0F, 0, 0, 0, 0},
8799         {0x10, 0, 0, 0, 0},
8800         {0x11, 0, 0, 0, 0},
8801         {0x12, 0, 0, 0, 0},
8802         {0x13, 0, 0, 0, 0},
8803         {0x14, 0, 0, 0, 0},
8804         {0x15, 0, 0, 0, 0},
8805         {0x16, 0, 0, 0, 0},
8806         {0x17, 0, 0, 0, 0},
8807         {0x18, 0, 0, 0, 0},
8808         {0x19, 0, 0, 0, 0},
8809         {0x1A, 0, 0, 0, 0},
8810         {0x1B, 0, 0, 0, 0},
8811         {0x1C, 0, 0, 0, 0},
8812         {0x1D, 0, 0, 0, 0},
8813         {0x1E, 0, 0, 0, 0},
8814         {0x1F, 0, 0, 0, 0},
8815         {0x20, 0x3, 0x3, 0, 0},
8816         {0x21, 0, 0, 0, 0},
8817         {0x22, 0, 0, 0, 0},
8818         {0x23, 0x90, 0x90, 0, 0},
8819         {0x24, 0x55, 0x55, 0, 0},
8820         {0x25, 0x15, 0x15, 0, 0},
8821         {0x26, 0x5, 0x5, 0, 0},
8822         {0x27, 0x15, 0x15, 0, 0},
8823         {0x28, 0x5, 0x5, 0, 0},
8824         {0x29, 0x20, 0x20, 0, 0},
8825         {0x2A, 0x11, 0x11, 0, 0},
8826         {0x2B, 0x90, 0x90, 0, 0},
8827         {0x2C, 0, 0, 0, 0},
8828         {0x2D, 0x88, 0x88, 0, 0},
8829         {0x2E, 0x32, 0x32, 0, 0},
8830         {0x2F, 0x77, 0x77, 0, 0},
8831         {0x30, 0x17, 0x17, 1, 1},
8832         {0x31, 0xff, 0xff, 1, 1},
8833         {0x32, 0x20, 0x20, 0, 0},
8834         {0x33, 0, 0, 0, 0},
8835         {0x34, 0x88, 0x88, 0, 0},
8836         {0x35, 0x32, 0x32, 0, 0},
8837         {0x36, 0x77, 0x77, 0, 0},
8838         {0x37, 0x17, 0x17, 1, 1},
8839         {0x38, 0xf0, 0xf0, 1, 1},
8840         {0x39, 0x20, 0x20, 0, 0},
8841         {0x3A, 0x8, 0x8, 0, 0},
8842         {0x3B, 0x55, 0x55, 1, 1},
8843         {0x3C, 0, 0, 0, 0},
8844         {0x3D, 0x44, 0x44, 1, 1},
8845         {0x3E, 0, 0, 0, 0},
8846         {0x3F, 0x44, 0x44, 0, 0},
8847         {0x40, 0xf, 0xf, 1, 1},
8848         {0x41, 0x6, 0x6, 0, 0},
8849         {0x42, 0x4, 0x4, 0, 0},
8850         {0x43, 0x50, 0x50, 1, 1},
8851         {0x44, 0x8, 0x8, 0, 0},
8852         {0x45, 0x55, 0x55, 1, 1},
8853         {0x46, 0, 0, 0, 0},
8854         {0x47, 0x11, 0x11, 0, 0},
8855         {0x48, 0, 0, 0, 0},
8856         {0x49, 0x44, 0x44, 0, 0},
8857         {0x4A, 0x7, 0x7, 0, 0},
8858         {0x4B, 0x6, 0x6, 0, 0},
8859         {0x4C, 0x4, 0x4, 0, 0},
8860         {0x4D, 0, 0, 0, 0},
8861         {0x4E, 0, 0, 0, 0},
8862         {0x4F, 0x26, 0x26, 1, 1},
8863         {0x50, 0x26, 0x26, 1, 1},
8864         {0x51, 0xf, 0xf, 1, 1},
8865         {0x52, 0xf, 0xf, 1, 1},
8866         {0x53, 0x44, 0x44, 0, 0},
8867         {0x54, 0, 0, 0, 0},
8868         {0x55, 0, 0, 0, 0},
8869         {0x56, 0x8, 0x8, 0, 0},
8870         {0x57, 0x8, 0x8, 0, 0},
8871         {0x58, 0x7, 0x7, 0, 0},
8872         {0x59, 0x22, 0x22, 0, 0},
8873         {0x5A, 0x22, 0x22, 0, 0},
8874         {0x5B, 0x2, 0x2, 0, 0},
8875         {0x5C, 0x2f, 0x2f, 1, 1},
8876         {0x5D, 0x7, 0x7, 0, 0},
8877         {0x5E, 0x55, 0x55, 0, 0},
8878         {0x5F, 0x23, 0x23, 0, 0},
8879         {0x60, 0x41, 0x41, 0, 0},
8880         {0x61, 0x1, 0x1, 0, 0},
8881         {0x62, 0xa, 0xa, 0, 0},
8882         {0x63, 0, 0, 0, 0},
8883         {0x64, 0, 0, 0, 0},
8884         {0x65, 0, 0, 0, 0},
8885         {0x66, 0, 0, 0, 0},
8886         {0x67, 0, 0, 0, 0},
8887         {0x68, 0, 0, 0, 0},
8888         {0x69, 0, 0, 0, 0},
8889         {0x6A, 0, 0, 0, 0},
8890         {0x6B, 0xc, 0xc, 0, 0},
8891         {0x6C, 0, 0, 0, 0},
8892         {0x6D, 0, 0, 0, 0},
8893         {0x6E, 0, 0, 0, 0},
8894         {0x6F, 0, 0, 0, 0},
8895         {0x70, 0, 0, 0, 0},
8896         {0x71, 0, 0, 0, 0},
8897         {0x72, 0x22, 0x22, 0, 0},
8898         {0x73, 0x22, 0x22, 0, 0},
8899         {0x74, 0, 0, 1, 1},
8900         {0x75, 0xa, 0xa, 0, 0},
8901         {0x76, 0x1, 0x1, 0, 0},
8902         {0x77, 0x22, 0x22, 0, 0},
8903         {0x78, 0x30, 0x30, 0, 0},
8904         {0x79, 0, 0, 0, 0},
8905         {0x7A, 0, 0, 0, 0},
8906         {0x7B, 0, 0, 0, 0},
8907         {0x7C, 0, 0, 0, 0},
8908         {0x7D, 0, 0, 0, 0},
8909         {0x7E, 0, 0, 0, 0},
8910         {0x7F, 0, 0, 0, 0},
8911         {0x80, 0, 0, 0, 0},
8912         {0x81, 0, 0, 0, 0},
8913         {0x82, 0, 0, 0, 0},
8914         {0x83, 0, 0, 0, 0},
8915         {0x84, 0, 0, 0, 0},
8916         {0x85, 0, 0, 0, 0},
8917         {0x86, 0, 0, 0, 0},
8918         {0x87, 0, 0, 0, 0},
8919         {0x88, 0, 0, 0, 0},
8920         {0x89, 0, 0, 0, 0},
8921         {0x8A, 0, 0, 0, 0},
8922         {0x8B, 0, 0, 0, 0},
8923         {0x8C, 0, 0, 0, 0},
8924         {0x8D, 0, 0, 0, 0},
8925         {0x8E, 0, 0, 0, 0},
8926         {0x8F, 0, 0, 0, 0},
8927         {0x90, 0, 0, 0, 0},
8928         {0x91, 0, 0, 0, 0},
8929         {0x92, 0, 0, 0, 0},
8930         {0x93, 0, 0, 0, 0},
8931         {0x94, 0, 0, 0, 0},
8932         {0xFFFF, 0, 0, 0, 0}
8933 };
8934
8935 radio_regs_t regs_SYN_2056_rev5[] = {
8936         {0x02, 0, 0, 0, 0},
8937         {0x03, 0, 0, 0, 0},
8938         {0x04, 0, 0, 0, 0},
8939         {0x05, 0, 0, 0, 0},
8940         {0x06, 0, 0, 0, 0},
8941         {0x07, 0, 0, 0, 0},
8942         {0x08, 0, 0, 0, 0},
8943         {0x09, 0x1, 0x1, 0, 0},
8944         {0x0A, 0, 0, 0, 0},
8945         {0x0B, 0, 0, 0, 0},
8946         {0x0C, 0, 0, 0, 0},
8947         {0x0D, 0, 0, 0, 0},
8948         {0x0E, 0, 0, 0, 0},
8949         {0x0F, 0, 0, 0, 0},
8950         {0x10, 0, 0, 0, 0},
8951         {0x11, 0, 0, 0, 0},
8952         {0x12, 0, 0, 0, 0},
8953         {0x13, 0, 0, 0, 0},
8954         {0x14, 0, 0, 0, 0},
8955         {0x15, 0, 0, 0, 0},
8956         {0x16, 0, 0, 0, 0},
8957         {0x17, 0, 0, 0, 0},
8958         {0x18, 0, 0, 0, 0},
8959         {0x19, 0, 0, 0, 0},
8960         {0x1A, 0, 0, 0, 0},
8961         {0x1B, 0, 0, 0, 0},
8962         {0x1C, 0, 0, 0, 0},
8963         {0x1D, 0, 0, 0, 0},
8964         {0x1E, 0, 0, 0, 0},
8965         {0x1F, 0, 0, 0, 0},
8966         {0x20, 0, 0, 0, 0},
8967         {0x21, 0, 0, 0, 0},
8968         {0x22, 0x60, 0x60, 0, 0},
8969         {0x23, 0x6, 0x6, 0, 0},
8970         {0x24, 0xc, 0xc, 0, 0},
8971         {0x25, 0, 0, 0, 0},
8972         {0x26, 0, 0, 0, 0},
8973         {0x27, 0, 0, 0, 0},
8974         {0x28, 0x1, 0x1, 0, 0},
8975         {0x29, 0, 0, 0, 0},
8976         {0x2A, 0, 0, 0, 0},
8977         {0x2B, 0, 0, 0, 0},
8978         {0x2C, 0, 0, 0, 0},
8979         {0x2D, 0, 0, 0, 0},
8980         {0x2E, 0, 0, 0, 0},
8981         {0x2F, 0x1f, 0x1f, 0, 0},
8982         {0x30, 0x15, 0x15, 0, 0},
8983         {0x31, 0xf, 0xf, 0, 0},
8984         {0x32, 0, 0, 0, 0},
8985         {0x33, 0, 0, 0, 0},
8986         {0x34, 0, 0, 0, 0},
8987         {0x35, 0, 0, 0, 0},
8988         {0x36, 0, 0, 0, 0},
8989         {0x37, 0, 0, 0, 0},
8990         {0x38, 0, 0, 0, 0},
8991         {0x39, 0, 0, 0, 0},
8992         {0x3A, 0, 0, 0, 0},
8993         {0x3B, 0, 0, 0, 0},
8994         {0x3C, 0x13, 0x13, 0, 0},
8995         {0x3D, 0xf, 0xf, 0, 0},
8996         {0x3E, 0x18, 0x18, 0, 0},
8997         {0x3F, 0, 0, 0, 0},
8998         {0x40, 0, 0, 0, 0},
8999         {0x41, 0x20, 0x20, 0, 0},
9000         {0x42, 0x20, 0x20, 0, 0},
9001         {0x43, 0, 0, 0, 0},
9002         {0x44, 0x77, 0x77, 0, 0},
9003         {0x45, 0x7, 0x7, 0, 0},
9004         {0x46, 0x1, 0x1, 0, 0},
9005         {0x47, 0x4, 0x4, 0, 0},
9006         {0x48, 0xf, 0xf, 0, 0},
9007         {0x49, 0x30, 0x30, 0, 0},
9008         {0x4A, 0x32, 0x32, 0, 0},
9009         {0x4B, 0xd, 0xd, 0, 0},
9010         {0x4C, 0xd, 0xd, 0, 0},
9011         {0x4D, 0x4, 0x4, 0, 0},
9012         {0x4E, 0x6, 0x6, 0, 0},
9013         {0x4F, 0x1, 0x1, 0, 0},
9014         {0x50, 0x1c, 0x1c, 0, 0},
9015         {0x51, 0x2, 0x2, 0, 0},
9016         {0x52, 0x2, 0x2, 0, 0},
9017         {0x53, 0xf7, 0xf7, 1, 1},
9018         {0x54, 0xb4, 0xb4, 0, 0},
9019         {0x55, 0xd2, 0xd2, 0, 0},
9020         {0x56, 0, 0, 0, 0},
9021         {0x57, 0, 0, 0, 0},
9022         {0x58, 0x4, 0x4, 0, 0},
9023         {0x59, 0x96, 0x96, 0, 0},
9024         {0x5A, 0x3e, 0x3e, 0, 0},
9025         {0x5B, 0x3e, 0x3e, 0, 0},
9026         {0x5C, 0x13, 0x13, 0, 0},
9027         {0x5D, 0x2, 0x2, 0, 0},
9028         {0x5E, 0, 0, 0, 0},
9029         {0x5F, 0x7, 0x7, 0, 0},
9030         {0x60, 0x7, 0x7, 1, 1},
9031         {0x61, 0x8, 0x8, 0, 0},
9032         {0x62, 0x3, 0x3, 0, 0},
9033         {0x63, 0, 0, 0, 0},
9034         {0x64, 0, 0, 0, 0},
9035         {0x65, 0, 0, 0, 0},
9036         {0x66, 0, 0, 0, 0},
9037         {0x67, 0, 0, 0, 0},
9038         {0x68, 0x40, 0x40, 0, 0},
9039         {0x69, 0, 0, 0, 0},
9040         {0x6A, 0, 0, 0, 0},
9041         {0x6B, 0, 0, 0, 0},
9042         {0x6C, 0, 0, 0, 0},
9043         {0x6D, 0x1, 0x1, 0, 0},
9044         {0x6E, 0, 0, 0, 0},
9045         {0x6F, 0, 0, 0, 0},
9046         {0x70, 0x60, 0x60, 0, 0},
9047         {0x71, 0x66, 0x66, 0, 0},
9048         {0x72, 0xc, 0xc, 0, 0},
9049         {0x73, 0x66, 0x66, 0, 0},
9050         {0x74, 0x8f, 0x8f, 1, 1},
9051         {0x75, 0, 0, 0, 0},
9052         {0x76, 0xcc, 0xcc, 0, 0},
9053         {0x77, 0x1, 0x1, 0, 0},
9054         {0x78, 0x66, 0x66, 0, 0},
9055         {0x79, 0x66, 0x66, 0, 0},
9056         {0x7A, 0, 0, 0, 0},
9057         {0x7B, 0, 0, 0, 0},
9058         {0x7C, 0, 0, 0, 0},
9059         {0x7D, 0, 0, 0, 0},
9060         {0x7E, 0, 0, 0, 0},
9061         {0x7F, 0, 0, 0, 0},
9062         {0x80, 0, 0, 0, 0},
9063         {0x81, 0, 0, 0, 0},
9064         {0x82, 0, 0, 0, 0},
9065         {0x83, 0, 0, 0, 0},
9066         {0x84, 0, 0, 0, 0},
9067         {0x85, 0xff, 0xff, 0, 0},
9068         {0x86, 0, 0, 0, 0},
9069         {0x87, 0, 0, 0, 0},
9070         {0x88, 0, 0, 0, 0},
9071         {0x89, 0, 0, 0, 0},
9072         {0x8A, 0, 0, 0, 0},
9073         {0x8B, 0, 0, 0, 0},
9074         {0x8C, 0, 0, 0, 0},
9075         {0x8D, 0, 0, 0, 0},
9076         {0x8E, 0, 0, 0, 0},
9077         {0x8F, 0, 0, 0, 0},
9078         {0x90, 0, 0, 0, 0},
9079         {0x91, 0, 0, 0, 0},
9080         {0x92, 0, 0, 0, 0},
9081         {0x93, 0, 0, 0, 0},
9082         {0x94, 0, 0, 0, 0},
9083         {0x95, 0, 0, 0, 0},
9084         {0x96, 0, 0, 0, 0},
9085         {0x97, 0, 0, 0, 0},
9086         {0x98, 0, 0, 0, 0},
9087         {0x99, 0, 0, 0, 0},
9088         {0x9A, 0, 0, 0, 0},
9089         {0x9B, 0, 0, 0, 0},
9090         {0x9C, 0, 0, 0, 0},
9091         {0x9D, 0, 0, 0, 0},
9092         {0x9E, 0, 0, 0, 0},
9093         {0x9F, 0x6, 0x6, 0, 0},
9094         {0xA0, 0x66, 0x66, 0, 0},
9095         {0xA1, 0x66, 0x66, 0, 0},
9096         {0xA2, 0x66, 0x66, 0, 0},
9097         {0xA3, 0x66, 0x66, 0, 0},
9098         {0xA4, 0x66, 0x66, 0, 0},
9099         {0xA5, 0x66, 0x66, 0, 0},
9100         {0xA6, 0x66, 0x66, 0, 0},
9101         {0xA7, 0x66, 0x66, 0, 0},
9102         {0xA8, 0x66, 0x66, 0, 0},
9103         {0xA9, 0x66, 0x66, 0, 0},
9104         {0xAA, 0x66, 0x66, 0, 0},
9105         {0xAB, 0x66, 0x66, 0, 0},
9106         {0xAC, 0x66, 0x66, 0, 0},
9107         {0xAD, 0x66, 0x66, 0, 0},
9108         {0xAE, 0x66, 0x66, 0, 0},
9109         {0xAF, 0x66, 0x66, 0, 0},
9110         {0xB0, 0x66, 0x66, 0, 0},
9111         {0xB1, 0x66, 0x66, 0, 0},
9112         {0xB2, 0x66, 0x66, 0, 0},
9113         {0xB3, 0xa, 0xa, 0, 0},
9114         {0xB4, 0, 0, 0, 0},
9115         {0xB5, 0, 0, 0, 0},
9116         {0xB6, 0, 0, 0, 0},
9117         {0xFFFF, 0, 0, 0, 0}
9118 };
9119
9120 radio_regs_t regs_TX_2056_rev5[] = {
9121         {0x02, 0, 0, 0, 0},
9122         {0x03, 0, 0, 0, 0},
9123         {0x04, 0, 0, 0, 0},
9124         {0x05, 0, 0, 0, 0},
9125         {0x06, 0, 0, 0, 0},
9126         {0x07, 0, 0, 0, 0},
9127         {0x08, 0, 0, 0, 0},
9128         {0x09, 0, 0, 0, 0},
9129         {0x0A, 0, 0, 0, 0},
9130         {0x0B, 0, 0, 0, 0},
9131         {0x0C, 0, 0, 0, 0},
9132         {0x0D, 0, 0, 0, 0},
9133         {0x0E, 0, 0, 0, 0},
9134         {0x0F, 0, 0, 0, 0},
9135         {0x10, 0, 0, 0, 0},
9136         {0x11, 0, 0, 0, 0},
9137         {0x12, 0, 0, 0, 0},
9138         {0x13, 0, 0, 0, 0},
9139         {0x14, 0, 0, 0, 0},
9140         {0x15, 0, 0, 0, 0},
9141         {0x16, 0, 0, 0, 0},
9142         {0x17, 0, 0, 0, 0},
9143         {0x18, 0, 0, 0, 0},
9144         {0x19, 0, 0, 0, 0},
9145         {0x1A, 0, 0, 0, 0},
9146         {0x1B, 0, 0, 0, 0},
9147         {0x1C, 0, 0, 0, 0},
9148         {0x1D, 0, 0, 0, 0},
9149         {0x1E, 0, 0, 0, 0},
9150         {0x1F, 0, 0, 0, 0},
9151         {0x20, 0, 0, 0, 0},
9152         {0x21, 0x88, 0x88, 0, 0},
9153         {0x22, 0x88, 0x88, 0, 0},
9154         {0x23, 0x88, 0x88, 0, 0},
9155         {0x24, 0x88, 0x88, 0, 0},
9156         {0x25, 0xc, 0xc, 0, 0},
9157         {0x26, 0, 0, 0, 0},
9158         {0x27, 0x3, 0x3, 0, 0},
9159         {0x28, 0, 0, 0, 0},
9160         {0x29, 0x3, 0x3, 0, 0},
9161         {0x2A, 0x37, 0x37, 0, 0},
9162         {0x2B, 0x3, 0x3, 0, 0},
9163         {0x2C, 0, 0, 0, 0},
9164         {0x2D, 0, 0, 0, 0},
9165         {0x2E, 0x1, 0x1, 0, 0},
9166         {0x2F, 0x1, 0x1, 0, 0},
9167         {0x30, 0, 0, 0, 0},
9168         {0x31, 0, 0, 0, 0},
9169         {0x32, 0, 0, 0, 0},
9170         {0x33, 0x11, 0x11, 0, 0},
9171         {0x34, 0x11, 0x11, 0, 0},
9172         {0x35, 0, 0, 0, 0},
9173         {0x36, 0, 0, 0, 0},
9174         {0x37, 0x3, 0x3, 0, 0},
9175         {0x38, 0xf, 0xf, 0, 0},
9176         {0x39, 0, 0, 0, 0},
9177         {0x3A, 0x2d, 0x2d, 0, 0},
9178         {0x3B, 0, 0, 0, 0},
9179         {0x3C, 0x6e, 0x6e, 0, 0},
9180         {0x3D, 0xf0, 0xf0, 1, 1},
9181         {0x3E, 0, 0, 0, 0},
9182         {0x3F, 0, 0, 0, 0},
9183         {0x40, 0, 0, 0, 0},
9184         {0x41, 0x3, 0x3, 0, 0},
9185         {0x42, 0x3, 0x3, 0, 0},
9186         {0x43, 0, 0, 0, 0},
9187         {0x44, 0x1e, 0x1e, 0, 0},
9188         {0x45, 0, 0, 0, 0},
9189         {0x46, 0x6e, 0x6e, 0, 0},
9190         {0x47, 0xf0, 0xf0, 1, 1},
9191         {0x48, 0, 0, 0, 0},
9192         {0x49, 0x2, 0x2, 0, 0},
9193         {0x4A, 0xff, 0xff, 1, 1},
9194         {0x4B, 0xc, 0xc, 0, 0},
9195         {0x4C, 0, 0, 0, 0},
9196         {0x4D, 0x38, 0x38, 0, 0},
9197         {0x4E, 0x70, 0x70, 1, 1},
9198         {0x4F, 0x2, 0x2, 0, 0},
9199         {0x50, 0x88, 0x88, 0, 0},
9200         {0x51, 0xc, 0xc, 0, 0},
9201         {0x52, 0, 0, 0, 0},
9202         {0x53, 0x8, 0x8, 0, 0},
9203         {0x54, 0x70, 0x70, 1, 1},
9204         {0x55, 0x2, 0x2, 0, 0},
9205         {0x56, 0xff, 0xff, 1, 1},
9206         {0x57, 0, 0, 0, 0},
9207         {0x58, 0x83, 0x83, 0, 0},
9208         {0x59, 0x77, 0x77, 1, 1},
9209         {0x5A, 0, 0, 0, 0},
9210         {0x5B, 0x2, 0x2, 0, 0},
9211         {0x5C, 0x88, 0x88, 0, 0},
9212         {0x5D, 0, 0, 0, 0},
9213         {0x5E, 0x8, 0x8, 0, 0},
9214         {0x5F, 0x77, 0x77, 1, 1},
9215         {0x60, 0x1, 0x1, 0, 0},
9216         {0x61, 0, 0, 0, 0},
9217         {0x62, 0x7, 0x7, 0, 0},
9218         {0x63, 0, 0, 0, 0},
9219         {0x64, 0x7, 0x7, 0, 0},
9220         {0x65, 0, 0, 0, 0},
9221         {0x66, 0, 0, 0, 0},
9222         {0x67, 0, 0, 1, 1},
9223         {0x68, 0, 0, 0, 0},
9224         {0x69, 0xa, 0xa, 0, 0},
9225         {0x6A, 0, 0, 0, 0},
9226         {0x6B, 0, 0, 0, 0},
9227         {0x6C, 0, 0, 0, 0},
9228         {0x6D, 0, 0, 0, 0},
9229         {0x6E, 0, 0, 0, 0},
9230         {0x6F, 0, 0, 0, 0},
9231         {0x70, 0, 0, 0, 0},
9232         {0x71, 0x2, 0x2, 0, 0},
9233         {0x72, 0, 0, 0, 0},
9234         {0x73, 0, 0, 0, 0},
9235         {0x74, 0xe, 0xe, 0, 0},
9236         {0x75, 0xe, 0xe, 0, 0},
9237         {0x76, 0xe, 0xe, 0, 0},
9238         {0x77, 0x13, 0x13, 0, 0},
9239         {0x78, 0x13, 0x13, 0, 0},
9240         {0x79, 0x1b, 0x1b, 0, 0},
9241         {0x7A, 0x1b, 0x1b, 0, 0},
9242         {0x7B, 0x55, 0x55, 0, 0},
9243         {0x7C, 0x5b, 0x5b, 0, 0},
9244         {0x7D, 0, 0, 0, 0},
9245         {0x7E, 0, 0, 0, 0},
9246         {0x7F, 0, 0, 0, 0},
9247         {0x80, 0, 0, 0, 0},
9248         {0x81, 0, 0, 0, 0},
9249         {0x82, 0, 0, 0, 0},
9250         {0x83, 0, 0, 0, 0},
9251         {0x84, 0, 0, 0, 0},
9252         {0x85, 0, 0, 0, 0},
9253         {0x86, 0, 0, 0, 0},
9254         {0x87, 0, 0, 0, 0},
9255         {0x88, 0, 0, 0, 0},
9256         {0x89, 0, 0, 0, 0},
9257         {0x8A, 0, 0, 0, 0},
9258         {0x8B, 0, 0, 0, 0},
9259         {0x8C, 0, 0, 0, 0},
9260         {0x8D, 0, 0, 0, 0},
9261         {0x8E, 0, 0, 0, 0},
9262         {0x8F, 0, 0, 0, 0},
9263         {0x90, 0, 0, 0, 0},
9264         {0x91, 0, 0, 0, 0},
9265         {0x92, 0, 0, 0, 0},
9266         {0x93, 0x70, 0x70, 0, 0},
9267         {0x94, 0x70, 0x70, 0, 0},
9268         {0x95, 0x71, 0x71, 1, 1},
9269         {0x96, 0x71, 0x71, 1, 1},
9270         {0x97, 0x72, 0x72, 1, 1},
9271         {0x98, 0x73, 0x73, 1, 1},
9272         {0x99, 0x74, 0x74, 1, 1},
9273         {0x9A, 0x75, 0x75, 1, 1},
9274         {0xFFFF, 0, 0, 0, 0}
9275 };
9276
9277 radio_regs_t regs_RX_2056_rev5[] = {
9278         {0x02, 0, 0, 0, 0},
9279         {0x03, 0, 0, 0, 0},
9280         {0x04, 0, 0, 0, 0},
9281         {0x05, 0, 0, 0, 0},
9282         {0x06, 0, 0, 0, 0},
9283         {0x07, 0, 0, 0, 0},
9284         {0x08, 0, 0, 0, 0},
9285         {0x09, 0, 0, 0, 0},
9286         {0x0A, 0, 0, 0, 0},
9287         {0x0B, 0, 0, 0, 0},
9288         {0x0C, 0, 0, 0, 0},
9289         {0x0D, 0, 0, 0, 0},
9290         {0x0E, 0, 0, 0, 0},
9291         {0x0F, 0, 0, 0, 0},
9292         {0x10, 0, 0, 0, 0},
9293         {0x11, 0, 0, 0, 0},
9294         {0x12, 0, 0, 0, 0},
9295         {0x13, 0, 0, 0, 0},
9296         {0x14, 0, 0, 0, 0},
9297         {0x15, 0, 0, 0, 0},
9298         {0x16, 0, 0, 0, 0},
9299         {0x17, 0, 0, 0, 0},
9300         {0x18, 0, 0, 0, 0},
9301         {0x19, 0, 0, 0, 0},
9302         {0x1A, 0, 0, 0, 0},
9303         {0x1B, 0, 0, 0, 0},
9304         {0x1C, 0, 0, 0, 0},
9305         {0x1D, 0, 0, 0, 0},
9306         {0x1E, 0, 0, 0, 0},
9307         {0x1F, 0, 0, 0, 0},
9308         {0x20, 0x3, 0x3, 0, 0},
9309         {0x21, 0, 0, 0, 0},
9310         {0x22, 0, 0, 0, 0},
9311         {0x23, 0x90, 0x90, 0, 0},
9312         {0x24, 0x55, 0x55, 0, 0},
9313         {0x25, 0x15, 0x15, 0, 0},
9314         {0x26, 0x5, 0x5, 0, 0},
9315         {0x27, 0x15, 0x15, 0, 0},
9316         {0x28, 0x5, 0x5, 0, 0},
9317         {0x29, 0x20, 0x20, 0, 0},
9318         {0x2A, 0x11, 0x11, 0, 0},
9319         {0x2B, 0x90, 0x90, 0, 0},
9320         {0x2C, 0, 0, 0, 0},
9321         {0x2D, 0x88, 0x88, 0, 0},
9322         {0x2E, 0x32, 0x32, 0, 0},
9323         {0x2F, 0x77, 0x77, 0, 0},
9324         {0x30, 0x17, 0x17, 1, 1},
9325         {0x31, 0xff, 0xff, 1, 1},
9326         {0x32, 0x20, 0x20, 0, 0},
9327         {0x33, 0, 0, 0, 0},
9328         {0x34, 0x88, 0x88, 0, 0},
9329         {0x35, 0x32, 0x32, 0, 0},
9330         {0x36, 0x77, 0x77, 0, 0},
9331         {0x37, 0x17, 0x17, 1, 1},
9332         {0x38, 0xf0, 0xf0, 1, 1},
9333         {0x39, 0x20, 0x20, 0, 0},
9334         {0x3A, 0x8, 0x8, 0, 0},
9335         {0x3B, 0x55, 0x55, 1, 1},
9336         {0x3C, 0, 0, 0, 0},
9337         {0x3D, 0x88, 0x88, 1, 1},
9338         {0x3E, 0, 0, 0, 0},
9339         {0x3F, 0, 0, 1, 1},
9340         {0x40, 0x7, 0x7, 1, 1},
9341         {0x41, 0x6, 0x6, 0, 0},
9342         {0x42, 0x4, 0x4, 0, 0},
9343         {0x43, 0, 0, 0, 0},
9344         {0x44, 0x8, 0x8, 0, 0},
9345         {0x45, 0x55, 0x55, 1, 1},
9346         {0x46, 0, 0, 0, 0},
9347         {0x47, 0x11, 0x11, 0, 0},
9348         {0x48, 0, 0, 0, 0},
9349         {0x49, 0, 0, 1, 1},
9350         {0x4A, 0x7, 0x7, 0, 0},
9351         {0x4B, 0x6, 0x6, 0, 0},
9352         {0x4C, 0x4, 0x4, 0, 0},
9353         {0x4D, 0, 0, 0, 0},
9354         {0x4E, 0, 0, 0, 0},
9355         {0x4F, 0x26, 0x26, 1, 1},
9356         {0x50, 0x26, 0x26, 1, 1},
9357         {0x51, 0xf, 0xf, 1, 1},
9358         {0x52, 0xf, 0xf, 1, 1},
9359         {0x53, 0x44, 0x44, 0, 0},
9360         {0x54, 0, 0, 0, 0},
9361         {0x55, 0, 0, 0, 0},
9362         {0x56, 0x8, 0x8, 0, 0},
9363         {0x57, 0x8, 0x8, 0, 0},
9364         {0x58, 0x7, 0x7, 0, 0},
9365         {0x59, 0x22, 0x22, 0, 0},
9366         {0x5A, 0x22, 0x22, 0, 0},
9367         {0x5B, 0x2, 0x2, 0, 0},
9368         {0x5C, 0x4, 0x4, 1, 1},
9369         {0x5D, 0x7, 0x7, 0, 0},
9370         {0x5E, 0x55, 0x55, 0, 0},
9371         {0x5F, 0x23, 0x23, 0, 0},
9372         {0x60, 0x41, 0x41, 0, 0},
9373         {0x61, 0x1, 0x1, 0, 0},
9374         {0x62, 0xa, 0xa, 0, 0},
9375         {0x63, 0, 0, 0, 0},
9376         {0x64, 0, 0, 0, 0},
9377         {0x65, 0, 0, 0, 0},
9378         {0x66, 0, 0, 0, 0},
9379         {0x67, 0, 0, 0, 0},
9380         {0x68, 0, 0, 0, 0},
9381         {0x69, 0, 0, 0, 0},
9382         {0x6A, 0, 0, 0, 0},
9383         {0x6B, 0xc, 0xc, 0, 0},
9384         {0x6C, 0, 0, 0, 0},
9385         {0x6D, 0, 0, 0, 0},
9386         {0x6E, 0, 0, 0, 0},
9387         {0x6F, 0, 0, 0, 0},
9388         {0x70, 0, 0, 0, 0},
9389         {0x71, 0, 0, 0, 0},
9390         {0x72, 0x22, 0x22, 0, 0},
9391         {0x73, 0x22, 0x22, 0, 0},
9392         {0x74, 0, 0, 1, 1},
9393         {0x75, 0xa, 0xa, 0, 0},
9394         {0x76, 0x1, 0x1, 0, 0},
9395         {0x77, 0x22, 0x22, 0, 0},
9396         {0x78, 0x30, 0x30, 0, 0},
9397         {0x79, 0, 0, 0, 0},
9398         {0x7A, 0, 0, 0, 0},
9399         {0x7B, 0, 0, 0, 0},
9400         {0x7C, 0, 0, 0, 0},
9401         {0x7D, 0, 0, 0, 0},
9402         {0x7E, 0, 0, 0, 0},
9403         {0x7F, 0, 0, 0, 0},
9404         {0x80, 0, 0, 0, 0},
9405         {0x81, 0, 0, 0, 0},
9406         {0x82, 0, 0, 0, 0},
9407         {0x83, 0, 0, 0, 0},
9408         {0x84, 0, 0, 0, 0},
9409         {0x85, 0, 0, 0, 0},
9410         {0x86, 0, 0, 0, 0},
9411         {0x87, 0, 0, 0, 0},
9412         {0x88, 0, 0, 0, 0},
9413         {0x89, 0, 0, 0, 0},
9414         {0x8A, 0, 0, 0, 0},
9415         {0x8B, 0, 0, 0, 0},
9416         {0x8C, 0, 0, 0, 0},
9417         {0x8D, 0, 0, 0, 0},
9418         {0x8E, 0, 0, 0, 0},
9419         {0x8F, 0, 0, 0, 0},
9420         {0x90, 0, 0, 0, 0},
9421         {0x91, 0, 0, 0, 0},
9422         {0x92, 0, 0, 0, 0},
9423         {0x93, 0, 0, 0, 0},
9424         {0x94, 0, 0, 0, 0},
9425         {0xFFFF, 0, 0, 0, 0}
9426 };
9427
9428 radio_regs_t regs_SYN_2056_rev6[] = {
9429         {0x02, 0, 0, 0, 0},
9430         {0x03, 0, 0, 0, 0},
9431         {0x04, 0, 0, 0, 0},
9432         {0x05, 0, 0, 0, 0},
9433         {0x06, 0, 0, 0, 0},
9434         {0x07, 0, 0, 0, 0},
9435         {0x08, 0, 0, 0, 0},
9436         {0x09, 0x1, 0x1, 0, 0},
9437         {0x0A, 0, 0, 0, 0},
9438         {0x0B, 0, 0, 0, 0},
9439         {0x0C, 0, 0, 0, 0},
9440         {0x0D, 0, 0, 0, 0},
9441         {0x0E, 0, 0, 0, 0},
9442         {0x0F, 0, 0, 0, 0},
9443         {0x10, 0, 0, 0, 0},
9444         {0x11, 0, 0, 0, 0},
9445         {0x12, 0, 0, 0, 0},
9446         {0x13, 0, 0, 0, 0},
9447         {0x14, 0, 0, 0, 0},
9448         {0x15, 0, 0, 0, 0},
9449         {0x16, 0, 0, 0, 0},
9450         {0x17, 0, 0, 0, 0},
9451         {0x18, 0, 0, 0, 0},
9452         {0x19, 0, 0, 0, 0},
9453         {0x1A, 0, 0, 0, 0},
9454         {0x1B, 0, 0, 0, 0},
9455         {0x1C, 0, 0, 0, 0},
9456         {0x1D, 0, 0, 0, 0},
9457         {0x1E, 0, 0, 0, 0},
9458         {0x1F, 0, 0, 0, 0},
9459         {0x20, 0, 0, 0, 0},
9460         {0x21, 0, 0, 0, 0},
9461         {0x22, 0x60, 0x60, 0, 0},
9462         {0x23, 0x6, 0x6, 0, 0},
9463         {0x24, 0xc, 0xc, 0, 0},
9464         {0x25, 0, 0, 0, 0},
9465         {0x26, 0, 0, 0, 0},
9466         {0x27, 0, 0, 0, 0},
9467         {0x28, 0x1, 0x1, 0, 0},
9468         {0x29, 0, 0, 0, 0},
9469         {0x2A, 0, 0, 0, 0},
9470         {0x2B, 0, 0, 0, 0},
9471         {0x2C, 0, 0, 0, 0},
9472         {0x2D, 0, 0, 0, 0},
9473         {0x2E, 0, 0, 0, 0},
9474         {0x2F, 0x1f, 0x1f, 0, 0},
9475         {0x30, 0x15, 0x15, 0, 0},
9476         {0x31, 0xf, 0xf, 0, 0},
9477         {0x32, 0, 0, 0, 0},
9478         {0x33, 0, 0, 0, 0},
9479         {0x34, 0, 0, 0, 0},
9480         {0x35, 0, 0, 0, 0},
9481         {0x36, 0, 0, 0, 0},
9482         {0x37, 0, 0, 0, 0},
9483         {0x38, 0, 0, 0, 0},
9484         {0x39, 0, 0, 0, 0},
9485         {0x3A, 0, 0, 0, 0},
9486         {0x3B, 0, 0, 0, 0},
9487         {0x3C, 0x13, 0x13, 0, 0},
9488         {0x3D, 0xf, 0xf, 0, 0},
9489         {0x3E, 0x18, 0x18, 0, 0},
9490         {0x3F, 0, 0, 0, 0},
9491         {0x40, 0, 0, 0, 0},
9492         {0x41, 0x20, 0x20, 0, 0},
9493         {0x42, 0x20, 0x20, 0, 0},
9494         {0x43, 0, 0, 0, 0},
9495         {0x44, 0x77, 0x77, 0, 0},
9496         {0x45, 0x7, 0x7, 0, 0},
9497         {0x46, 0x1, 0x1, 0, 0},
9498         {0x47, 0x4, 0x4, 0, 0},
9499         {0x48, 0xf, 0xf, 0, 0},
9500         {0x49, 0x30, 0x30, 0, 0},
9501         {0x4A, 0x32, 0x32, 0, 0},
9502         {0x4B, 0xd, 0xd, 0, 0},
9503         {0x4C, 0xd, 0xd, 0, 0},
9504         {0x4D, 0x4, 0x4, 0, 0},
9505         {0x4E, 0x6, 0x6, 0, 0},
9506         {0x4F, 0x1, 0x1, 0, 0},
9507         {0x50, 0x1c, 0x1c, 0, 0},
9508         {0x51, 0x2, 0x2, 0, 0},
9509         {0x52, 0x2, 0x2, 0, 0},
9510         {0x53, 0xf7, 0xf7, 1, 1},
9511         {0x54, 0xb4, 0xb4, 0, 0},
9512         {0x55, 0xd2, 0xd2, 0, 0},
9513         {0x56, 0, 0, 0, 0},
9514         {0x57, 0, 0, 0, 0},
9515         {0x58, 0x4, 0x4, 0, 0},
9516         {0x59, 0x96, 0x96, 0, 0},
9517         {0x5A, 0x3e, 0x3e, 0, 0},
9518         {0x5B, 0x3e, 0x3e, 0, 0},
9519         {0x5C, 0x13, 0x13, 0, 0},
9520         {0x5D, 0x2, 0x2, 0, 0},
9521         {0x5E, 0, 0, 0, 0},
9522         {0x5F, 0x7, 0x7, 0, 0},
9523         {0x60, 0x7, 0x7, 1, 1},
9524         {0x61, 0x8, 0x8, 0, 0},
9525         {0x62, 0x3, 0x3, 0, 0},
9526         {0x63, 0, 0, 0, 0},
9527         {0x64, 0, 0, 0, 0},
9528         {0x65, 0, 0, 0, 0},
9529         {0x66, 0, 0, 0, 0},
9530         {0x67, 0, 0, 0, 0},
9531         {0x68, 0x40, 0x40, 0, 0},
9532         {0x69, 0, 0, 0, 0},
9533         {0x6A, 0, 0, 0, 0},
9534         {0x6B, 0, 0, 0, 0},
9535         {0x6C, 0, 0, 0, 0},
9536         {0x6D, 0x1, 0x1, 0, 0},
9537         {0x6E, 0, 0, 0, 0},
9538         {0x6F, 0, 0, 0, 0},
9539         {0x70, 0x60, 0x60, 0, 0},
9540         {0x71, 0x66, 0x66, 0, 0},
9541         {0x72, 0xc, 0xc, 0, 0},
9542         {0x73, 0x66, 0x66, 0, 0},
9543         {0x74, 0x8f, 0x8f, 1, 1},
9544         {0x75, 0, 0, 0, 0},
9545         {0x76, 0xcc, 0xcc, 0, 0},
9546         {0x77, 0x1, 0x1, 0, 0},
9547         {0x78, 0x66, 0x66, 0, 0},
9548         {0x79, 0x66, 0x66, 0, 0},
9549         {0x7A, 0, 0, 0, 0},
9550         {0x7B, 0, 0, 0, 0},
9551         {0x7C, 0, 0, 0, 0},
9552         {0x7D, 0, 0, 0, 0},
9553         {0x7E, 0, 0, 0, 0},
9554         {0x7F, 0, 0, 0, 0},
9555         {0x80, 0, 0, 0, 0},
9556         {0x81, 0, 0, 0, 0},
9557         {0x82, 0, 0, 0, 0},
9558         {0x83, 0, 0, 0, 0},
9559         {0x84, 0, 0, 0, 0},
9560         {0x85, 0xff, 0xff, 0, 0},
9561         {0x86, 0, 0, 0, 0},
9562         {0x87, 0, 0, 0, 0},
9563         {0x88, 0, 0, 0, 0},
9564         {0x89, 0, 0, 0, 0},
9565         {0x8A, 0, 0, 0, 0},
9566         {0x8B, 0, 0, 0, 0},
9567         {0x8C, 0, 0, 0, 0},
9568         {0x8D, 0, 0, 0, 0},
9569         {0x8E, 0, 0, 0, 0},
9570         {0x8F, 0, 0, 0, 0},
9571         {0x90, 0, 0, 0, 0},
9572         {0x91, 0, 0, 0, 0},
9573         {0x92, 0, 0, 0, 0},
9574         {0x93, 0, 0, 0, 0},
9575         {0x94, 0, 0, 0, 0},
9576         {0x95, 0, 0, 0, 0},
9577         {0x96, 0, 0, 0, 0},
9578         {0x97, 0, 0, 0, 0},
9579         {0x98, 0, 0, 0, 0},
9580         {0x99, 0, 0, 0, 0},
9581         {0x9A, 0, 0, 0, 0},
9582         {0x9B, 0, 0, 0, 0},
9583         {0x9C, 0, 0, 0, 0},
9584         {0x9D, 0, 0, 0, 0},
9585         {0x9E, 0, 0, 0, 0},
9586         {0x9F, 0x6, 0x6, 0, 0},
9587         {0xA0, 0x66, 0x66, 0, 0},
9588         {0xA1, 0x66, 0x66, 0, 0},
9589         {0xA2, 0x66, 0x66, 0, 0},
9590         {0xA3, 0x66, 0x66, 0, 0},
9591         {0xA4, 0x66, 0x66, 0, 0},
9592         {0xA5, 0x66, 0x66, 0, 0},
9593         {0xA6, 0x66, 0x66, 0, 0},
9594         {0xA7, 0x66, 0x66, 0, 0},
9595         {0xA8, 0x66, 0x66, 0, 0},
9596         {0xA9, 0x66, 0x66, 0, 0},
9597         {0xAA, 0x66, 0x66, 0, 0},
9598         {0xAB, 0x66, 0x66, 0, 0},
9599         {0xAC, 0x66, 0x66, 0, 0},
9600         {0xAD, 0x66, 0x66, 0, 0},
9601         {0xAE, 0x66, 0x66, 0, 0},
9602         {0xAF, 0x66, 0x66, 0, 0},
9603         {0xB0, 0x66, 0x66, 0, 0},
9604         {0xB1, 0x66, 0x66, 0, 0},
9605         {0xB2, 0x66, 0x66, 0, 0},
9606         {0xB3, 0xa, 0xa, 0, 0},
9607         {0xB4, 0, 0, 0, 0},
9608         {0xB5, 0, 0, 0, 0},
9609         {0xB6, 0, 0, 0, 0},
9610         {0xFFFF, 0, 0, 0, 0}
9611 };
9612
9613 radio_regs_t regs_TX_2056_rev6[] = {
9614         {0x02, 0, 0, 0, 0},
9615         {0x03, 0, 0, 0, 0},
9616         {0x04, 0, 0, 0, 0},
9617         {0x05, 0, 0, 0, 0},
9618         {0x06, 0, 0, 0, 0},
9619         {0x07, 0, 0, 0, 0},
9620         {0x08, 0, 0, 0, 0},
9621         {0x09, 0, 0, 0, 0},
9622         {0x0A, 0, 0, 0, 0},
9623         {0x0B, 0, 0, 0, 0},
9624         {0x0C, 0, 0, 0, 0},
9625         {0x0D, 0, 0, 0, 0},
9626         {0x0E, 0, 0, 0, 0},
9627         {0x0F, 0, 0, 0, 0},
9628         {0x10, 0, 0, 0, 0},
9629         {0x11, 0, 0, 0, 0},
9630         {0x12, 0, 0, 0, 0},
9631         {0x13, 0, 0, 0, 0},
9632         {0x14, 0, 0, 0, 0},
9633         {0x15, 0, 0, 0, 0},
9634         {0x16, 0, 0, 0, 0},
9635         {0x17, 0, 0, 0, 0},
9636         {0x18, 0, 0, 0, 0},
9637         {0x19, 0, 0, 0, 0},
9638         {0x1A, 0, 0, 0, 0},
9639         {0x1B, 0, 0, 0, 0},
9640         {0x1C, 0, 0, 0, 0},
9641         {0x1D, 0, 0, 0, 0},
9642         {0x1E, 0, 0, 0, 0},
9643         {0x1F, 0, 0, 0, 0},
9644         {0x20, 0, 0, 0, 0},
9645         {0x21, 0x88, 0x88, 0, 0},
9646         {0x22, 0x88, 0x88, 0, 0},
9647         {0x23, 0x88, 0x88, 0, 0},
9648         {0x24, 0x88, 0x88, 0, 0},
9649         {0x25, 0xc, 0xc, 0, 0},
9650         {0x26, 0, 0, 0, 0},
9651         {0x27, 0x3, 0x3, 0, 0},
9652         {0x28, 0, 0, 0, 0},
9653         {0x29, 0x3, 0x3, 0, 0},
9654         {0x2A, 0x37, 0x37, 0, 0},
9655         {0x2B, 0x3, 0x3, 0, 0},
9656         {0x2C, 0, 0, 0, 0},
9657         {0x2D, 0, 0, 0, 0},
9658         {0x2E, 0x1, 0x1, 0, 0},
9659         {0x2F, 0x1, 0x1, 0, 0},
9660         {0x30, 0, 0, 0, 0},
9661         {0x31, 0, 0, 0, 0},
9662         {0x32, 0, 0, 0, 0},
9663         {0x33, 0x11, 0x11, 0, 0},
9664         {0x34, 0xee, 0xee, 1, 1},
9665         {0x35, 0, 0, 0, 0},
9666         {0x36, 0, 0, 0, 0},
9667         {0x37, 0x3, 0x3, 0, 0},
9668         {0x38, 0x50, 0x50, 1, 1},
9669         {0x39, 0, 0, 0, 0},
9670         {0x3A, 0x50, 0x50, 1, 1},
9671         {0x3B, 0, 0, 0, 0},
9672         {0x3C, 0x6e, 0x6e, 0, 0},
9673         {0x3D, 0xf0, 0xf0, 1, 1},
9674         {0x3E, 0, 0, 0, 0},
9675         {0x3F, 0, 0, 0, 0},
9676         {0x40, 0, 0, 0, 0},
9677         {0x41, 0x3, 0x3, 0, 0},
9678         {0x42, 0x3, 0x3, 0, 0},
9679         {0x43, 0, 0, 0, 0},
9680         {0x44, 0x1e, 0x1e, 0, 0},
9681         {0x45, 0, 0, 0, 0},
9682         {0x46, 0x6e, 0x6e, 0, 0},
9683         {0x47, 0xf0, 0xf0, 1, 1},
9684         {0x48, 0, 0, 0, 0},
9685         {0x49, 0x2, 0x2, 0, 0},
9686         {0x4A, 0xff, 0xff, 1, 1},
9687         {0x4B, 0xc, 0xc, 0, 0},
9688         {0x4C, 0, 0, 0, 0},
9689         {0x4D, 0x38, 0x38, 0, 0},
9690         {0x4E, 0x70, 0x70, 1, 1},
9691         {0x4F, 0x2, 0x2, 0, 0},
9692         {0x50, 0x88, 0x88, 0, 0},
9693         {0x51, 0xc, 0xc, 0, 0},
9694         {0x52, 0, 0, 0, 0},
9695         {0x53, 0x8, 0x8, 0, 0},
9696         {0x54, 0x70, 0x70, 1, 1},
9697         {0x55, 0x2, 0x2, 0, 0},
9698         {0x56, 0xff, 0xff, 1, 1},
9699         {0x57, 0, 0, 0, 0},
9700         {0x58, 0x83, 0x83, 0, 0},
9701         {0x59, 0x77, 0x77, 1, 1},
9702         {0x5A, 0, 0, 0, 0},
9703         {0x5B, 0x2, 0x2, 0, 0},
9704         {0x5C, 0x88, 0x88, 0, 0},
9705         {0x5D, 0, 0, 0, 0},
9706         {0x5E, 0x8, 0x8, 0, 0},
9707         {0x5F, 0x77, 0x77, 1, 1},
9708         {0x60, 0x1, 0x1, 0, 0},
9709         {0x61, 0, 0, 0, 0},
9710         {0x62, 0x7, 0x7, 0, 0},
9711         {0x63, 0, 0, 0, 0},
9712         {0x64, 0x7, 0x7, 0, 0},
9713         {0x65, 0, 0, 0, 0},
9714         {0x66, 0, 0, 0, 0},
9715         {0x67, 0, 0, 1, 1},
9716         {0x68, 0, 0, 0, 0},
9717         {0x69, 0xa, 0xa, 0, 0},
9718         {0x6A, 0, 0, 0, 0},
9719         {0x6B, 0, 0, 0, 0},
9720         {0x6C, 0, 0, 0, 0},
9721         {0x6D, 0, 0, 0, 0},
9722         {0x6E, 0, 0, 0, 0},
9723         {0x6F, 0, 0, 0, 0},
9724         {0x70, 0, 0, 0, 0},
9725         {0x71, 0x2, 0x2, 0, 0},
9726         {0x72, 0, 0, 0, 0},
9727         {0x73, 0, 0, 0, 0},
9728         {0x74, 0xe, 0xe, 0, 0},
9729         {0x75, 0xe, 0xe, 0, 0},
9730         {0x76, 0xe, 0xe, 0, 0},
9731         {0x77, 0x13, 0x13, 0, 0},
9732         {0x78, 0x13, 0x13, 0, 0},
9733         {0x79, 0x1b, 0x1b, 0, 0},
9734         {0x7A, 0x1b, 0x1b, 0, 0},
9735         {0x7B, 0x55, 0x55, 0, 0},
9736         {0x7C, 0x5b, 0x5b, 0, 0},
9737         {0x7D, 0x30, 0x30, 1, 1},
9738         {0x7E, 0, 0, 0, 0},
9739         {0x7F, 0, 0, 0, 0},
9740         {0x80, 0, 0, 0, 0},
9741         {0x81, 0, 0, 0, 0},
9742         {0x82, 0, 0, 0, 0},
9743         {0x83, 0, 0, 0, 0},
9744         {0x84, 0, 0, 0, 0},
9745         {0x85, 0, 0, 0, 0},
9746         {0x86, 0, 0, 0, 0},
9747         {0x87, 0, 0, 0, 0},
9748         {0x88, 0, 0, 0, 0},
9749         {0x89, 0, 0, 0, 0},
9750         {0x8A, 0, 0, 0, 0},
9751         {0x8B, 0, 0, 0, 0},
9752         {0x8C, 0, 0, 0, 0},
9753         {0x8D, 0, 0, 0, 0},
9754         {0x8E, 0, 0, 0, 0},
9755         {0x8F, 0, 0, 0, 0},
9756         {0x90, 0, 0, 0, 0},
9757         {0x91, 0, 0, 0, 0},
9758         {0x92, 0, 0, 0, 0},
9759         {0x93, 0x70, 0x70, 0, 0},
9760         {0x94, 0x70, 0x70, 0, 0},
9761         {0x95, 0x70, 0x70, 0, 0},
9762         {0x96, 0x70, 0x70, 0, 0},
9763         {0x97, 0x70, 0x70, 0, 0},
9764         {0x98, 0x70, 0x70, 0, 0},
9765         {0x99, 0x70, 0x70, 0, 0},
9766         {0x9A, 0x70, 0x70, 0, 0},
9767         {0xFFFF, 0, 0, 0, 0}
9768 };
9769
9770 radio_regs_t regs_RX_2056_rev6[] = {
9771         {0x02, 0, 0, 0, 0},
9772         {0x03, 0, 0, 0, 0},
9773         {0x04, 0, 0, 0, 0},
9774         {0x05, 0, 0, 0, 0},
9775         {0x06, 0, 0, 0, 0},
9776         {0x07, 0, 0, 0, 0},
9777         {0x08, 0, 0, 0, 0},
9778         {0x09, 0, 0, 0, 0},
9779         {0x0A, 0, 0, 0, 0},
9780         {0x0B, 0, 0, 0, 0},
9781         {0x0C, 0, 0, 0, 0},
9782         {0x0D, 0, 0, 0, 0},
9783         {0x0E, 0, 0, 0, 0},
9784         {0x0F, 0, 0, 0, 0},
9785         {0x10, 0, 0, 0, 0},
9786         {0x11, 0, 0, 0, 0},
9787         {0x12, 0, 0, 0, 0},
9788         {0x13, 0, 0, 0, 0},
9789         {0x14, 0, 0, 0, 0},
9790         {0x15, 0, 0, 0, 0},
9791         {0x16, 0, 0, 0, 0},
9792         {0x17, 0, 0, 0, 0},
9793         {0x18, 0, 0, 0, 0},
9794         {0x19, 0, 0, 0, 0},
9795         {0x1A, 0, 0, 0, 0},
9796         {0x1B, 0, 0, 0, 0},
9797         {0x1C, 0, 0, 0, 0},
9798         {0x1D, 0, 0, 0, 0},
9799         {0x1E, 0, 0, 0, 0},
9800         {0x1F, 0, 0, 0, 0},
9801         {0x20, 0x3, 0x3, 0, 0},
9802         {0x21, 0, 0, 0, 0},
9803         {0x22, 0, 0, 0, 0},
9804         {0x23, 0x90, 0x90, 0, 0},
9805         {0x24, 0x55, 0x55, 0, 0},
9806         {0x25, 0x15, 0x15, 0, 0},
9807         {0x26, 0x5, 0x5, 0, 0},
9808         {0x27, 0x15, 0x15, 0, 0},
9809         {0x28, 0x5, 0x5, 0, 0},
9810         {0x29, 0x20, 0x20, 0, 0},
9811         {0x2A, 0x11, 0x11, 0, 0},
9812         {0x2B, 0x90, 0x90, 0, 0},
9813         {0x2C, 0, 0, 0, 0},
9814         {0x2D, 0x88, 0x88, 0, 0},
9815         {0x2E, 0x32, 0x32, 0, 0},
9816         {0x2F, 0x77, 0x77, 0, 0},
9817         {0x30, 0x17, 0x17, 1, 1},
9818         {0x31, 0xff, 0xff, 1, 1},
9819         {0x32, 0x20, 0x20, 0, 0},
9820         {0x33, 0, 0, 0, 0},
9821         {0x34, 0x88, 0x88, 0, 0},
9822         {0x35, 0x32, 0x32, 0, 0},
9823         {0x36, 0x77, 0x77, 0, 0},
9824         {0x37, 0x17, 0x17, 1, 1},
9825         {0x38, 0xf0, 0xf0, 1, 1},
9826         {0x39, 0x20, 0x20, 0, 0},
9827         {0x3A, 0x8, 0x8, 0, 0},
9828         {0x3B, 0x55, 0x55, 1, 1},
9829         {0x3C, 0, 0, 0, 0},
9830         {0x3D, 0x88, 0x88, 1, 1},
9831         {0x3E, 0, 0, 0, 0},
9832         {0x3F, 0x44, 0x44, 0, 0},
9833         {0x40, 0x7, 0x7, 1, 1},
9834         {0x41, 0x6, 0x6, 0, 0},
9835         {0x42, 0x4, 0x4, 0, 0},
9836         {0x43, 0, 0, 0, 0},
9837         {0x44, 0x8, 0x8, 0, 0},
9838         {0x45, 0x55, 0x55, 1, 1},
9839         {0x46, 0, 0, 0, 0},
9840         {0x47, 0x11, 0x11, 0, 0},
9841         {0x48, 0, 0, 0, 0},
9842         {0x49, 0x44, 0x44, 0, 0},
9843         {0x4A, 0x7, 0x7, 0, 0},
9844         {0x4B, 0x6, 0x6, 0, 0},
9845         {0x4C, 0x4, 0x4, 0, 0},
9846         {0x4D, 0, 0, 0, 0},
9847         {0x4E, 0, 0, 0, 0},
9848         {0x4F, 0x26, 0x26, 1, 1},
9849         {0x50, 0x26, 0x26, 1, 1},
9850         {0x51, 0xf, 0xf, 1, 1},
9851         {0x52, 0xf, 0xf, 1, 1},
9852         {0x53, 0x44, 0x44, 0, 0},
9853         {0x54, 0, 0, 0, 0},
9854         {0x55, 0, 0, 0, 0},
9855         {0x56, 0x8, 0x8, 0, 0},
9856         {0x57, 0x8, 0x8, 0, 0},
9857         {0x58, 0x7, 0x7, 0, 0},
9858         {0x59, 0x22, 0x22, 0, 0},
9859         {0x5A, 0x22, 0x22, 0, 0},
9860         {0x5B, 0x2, 0x2, 0, 0},
9861         {0x5C, 0x4, 0x4, 1, 1},
9862         {0x5D, 0x7, 0x7, 0, 0},
9863         {0x5E, 0x55, 0x55, 0, 0},
9864         {0x5F, 0x23, 0x23, 0, 0},
9865         {0x60, 0x41, 0x41, 0, 0},
9866         {0x61, 0x1, 0x1, 0, 0},
9867         {0x62, 0xa, 0xa, 0, 0},
9868         {0x63, 0, 0, 0, 0},
9869         {0x64, 0, 0, 0, 0},
9870         {0x65, 0, 0, 0, 0},
9871         {0x66, 0, 0, 0, 0},
9872         {0x67, 0, 0, 0, 0},
9873         {0x68, 0, 0, 0, 0},
9874         {0x69, 0, 0, 0, 0},
9875         {0x6A, 0, 0, 0, 0},
9876         {0x6B, 0xc, 0xc, 0, 0},
9877         {0x6C, 0, 0, 0, 0},
9878         {0x6D, 0, 0, 0, 0},
9879         {0x6E, 0, 0, 0, 0},
9880         {0x6F, 0, 0, 0, 0},
9881         {0x70, 0, 0, 0, 0},
9882         {0x71, 0, 0, 0, 0},
9883         {0x72, 0x22, 0x22, 0, 0},
9884         {0x73, 0x22, 0x22, 0, 0},
9885         {0x74, 0, 0, 1, 1},
9886         {0x75, 0xa, 0xa, 0, 0},
9887         {0x76, 0x1, 0x1, 0, 0},
9888         {0x77, 0x22, 0x22, 0, 0},
9889         {0x78, 0x30, 0x30, 0, 0},
9890         {0x79, 0, 0, 0, 0},
9891         {0x7A, 0, 0, 0, 0},
9892         {0x7B, 0, 0, 0, 0},
9893         {0x7C, 0, 0, 0, 0},
9894         {0x7D, 0x5, 0x5, 1, 1},
9895         {0x7E, 0, 0, 0, 0},
9896         {0x7F, 0, 0, 0, 0},
9897         {0x80, 0, 0, 0, 0},
9898         {0x81, 0, 0, 0, 0},
9899         {0x82, 0, 0, 0, 0},
9900         {0x83, 0, 0, 0, 0},
9901         {0x84, 0, 0, 0, 0},
9902         {0x85, 0, 0, 0, 0},
9903         {0x86, 0, 0, 0, 0},
9904         {0x87, 0, 0, 0, 0},
9905         {0x88, 0, 0, 0, 0},
9906         {0x89, 0, 0, 0, 0},
9907         {0x8A, 0, 0, 0, 0},
9908         {0x8B, 0, 0, 0, 0},
9909         {0x8C, 0, 0, 0, 0},
9910         {0x8D, 0, 0, 0, 0},
9911         {0x8E, 0, 0, 0, 0},
9912         {0x8F, 0, 0, 0, 0},
9913         {0x90, 0, 0, 0, 0},
9914         {0x91, 0, 0, 0, 0},
9915         {0x92, 0, 0, 0, 0},
9916         {0x93, 0, 0, 0, 0},
9917         {0x94, 0, 0, 0, 0},
9918         {0xFFFF, 0, 0, 0, 0}
9919 };
9920
9921 radio_regs_t regs_SYN_2056_rev7[] = {
9922         {0x02, 0, 0, 0, 0},
9923         {0x03, 0, 0, 0, 0},
9924         {0x04, 0, 0, 0, 0},
9925         {0x05, 0, 0, 0, 0},
9926         {0x06, 0, 0, 0, 0},
9927         {0x07, 0, 0, 0, 0},
9928         {0x08, 0, 0, 0, 0},
9929         {0x09, 0x1, 0x1, 0, 0},
9930         {0x0A, 0, 0, 0, 0},
9931         {0x0B, 0, 0, 0, 0},
9932         {0x0C, 0, 0, 0, 0},
9933         {0x0D, 0, 0, 0, 0},
9934         {0x0E, 0, 0, 0, 0},
9935         {0x0F, 0, 0, 0, 0},
9936         {0x10, 0, 0, 0, 0},
9937         {0x11, 0, 0, 0, 0},
9938         {0x12, 0, 0, 0, 0},
9939         {0x13, 0, 0, 0, 0},
9940         {0x14, 0, 0, 0, 0},
9941         {0x15, 0, 0, 0, 0},
9942         {0x16, 0, 0, 0, 0},
9943         {0x17, 0, 0, 0, 0},
9944         {0x18, 0, 0, 0, 0},
9945         {0x19, 0, 0, 0, 0},
9946         {0x1A, 0, 0, 0, 0},
9947         {0x1B, 0, 0, 0, 0},
9948         {0x1C, 0, 0, 0, 0},
9949         {0x1D, 0, 0, 0, 0},
9950         {0x1E, 0, 0, 0, 0},
9951         {0x1F, 0, 0, 0, 0},
9952         {0x20, 0, 0, 0, 0},
9953         {0x21, 0, 0, 0, 0},
9954         {0x22, 0x60, 0x60, 0, 0},
9955         {0x23, 0x6, 0x6, 0, 0},
9956         {0x24, 0xc, 0xc, 0, 0},
9957         {0x25, 0, 0, 0, 0},
9958         {0x26, 0, 0, 0, 0},
9959         {0x27, 0, 0, 0, 0},
9960         {0x28, 0x1, 0x1, 0, 0},
9961         {0x29, 0, 0, 0, 0},
9962         {0x2A, 0, 0, 0, 0},
9963         {0x2B, 0, 0, 0, 0},
9964         {0x2C, 0, 0, 0, 0},
9965         {0x2D, 0, 0, 0, 0},
9966         {0x2E, 0, 0, 0, 0},
9967         {0x2F, 0x1f, 0x1f, 0, 0},
9968         {0x30, 0x15, 0x15, 0, 0},
9969         {0x31, 0xf, 0xf, 0, 0},
9970         {0x32, 0, 0, 0, 0},
9971         {0x33, 0, 0, 0, 0},
9972         {0x34, 0, 0, 0, 0},
9973         {0x35, 0, 0, 0, 0},
9974         {0x36, 0, 0, 0, 0},
9975         {0x37, 0, 0, 0, 0},
9976         {0x38, 0, 0, 0, 0},
9977         {0x39, 0, 0, 0, 0},
9978         {0x3A, 0, 0, 0, 0},
9979         {0x3B, 0, 0, 0, 0},
9980         {0x3C, 0x13, 0x13, 0, 0},
9981         {0x3D, 0xf, 0xf, 0, 0},
9982         {0x3E, 0x18, 0x18, 0, 0},
9983         {0x3F, 0, 0, 0, 0},
9984         {0x40, 0, 0, 0, 0},
9985         {0x41, 0x20, 0x20, 0, 0},
9986         {0x42, 0x20, 0x20, 0, 0},
9987         {0x43, 0, 0, 0, 0},
9988         {0x44, 0x77, 0x77, 0, 0},
9989         {0x45, 0x7, 0x7, 0, 0},
9990         {0x46, 0x1, 0x1, 0, 0},
9991         {0x47, 0x4, 0x4, 0, 0},
9992         {0x48, 0xf, 0xf, 0, 0},
9993         {0x49, 0x30, 0x30, 0, 0},
9994         {0x4A, 0x32, 0x32, 0, 0},
9995         {0x4B, 0xd, 0xd, 0, 0},
9996         {0x4C, 0xd, 0xd, 0, 0},
9997         {0x4D, 0x4, 0x4, 0, 0},
9998         {0x4E, 0x6, 0x6, 0, 0},
9999         {0x4F, 0x1, 0x1, 0, 0},
10000         {0x50, 0x1c, 0x1c, 0, 0},
10001         {0x51, 0x2, 0x2, 0, 0},
10002         {0x52, 0x2, 0x2, 0, 0},
10003         {0x53, 0xf7, 0xf7, 1, 1},
10004         {0x54, 0xb4, 0xb4, 0, 0},
10005         {0x55, 0xd2, 0xd2, 0, 0},
10006         {0x56, 0, 0, 0, 0},
10007         {0x57, 0, 0, 0, 0},
10008         {0x58, 0x4, 0x4, 0, 0},
10009         {0x59, 0x96, 0x96, 0, 0},
10010         {0x5A, 0x3e, 0x3e, 0, 0},
10011         {0x5B, 0x3e, 0x3e, 0, 0},
10012         {0x5C, 0x13, 0x13, 0, 0},
10013         {0x5D, 0x2, 0x2, 0, 0},
10014         {0x5E, 0, 0, 0, 0},
10015         {0x5F, 0x7, 0x7, 0, 0},
10016         {0x60, 0x7, 0x7, 1, 1},
10017         {0x61, 0x8, 0x8, 0, 0},
10018         {0x62, 0x3, 0x3, 0, 0},
10019         {0x63, 0, 0, 0, 0},
10020         {0x64, 0, 0, 0, 0},
10021         {0x65, 0, 0, 0, 0},
10022         {0x66, 0, 0, 0, 0},
10023         {0x67, 0, 0, 0, 0},
10024         {0x68, 0x40, 0x40, 0, 0},
10025         {0x69, 0, 0, 0, 0},
10026         {0x6A, 0, 0, 0, 0},
10027         {0x6B, 0, 0, 0, 0},
10028         {0x6C, 0, 0, 0, 0},
10029         {0x6D, 0x1, 0x1, 0, 0},
10030         {0x6E, 0, 0, 0, 0},
10031         {0x6F, 0, 0, 0, 0},
10032         {0x70, 0x60, 0x60, 0, 0},
10033         {0x71, 0x66, 0x66, 0, 0},
10034         {0x72, 0xc, 0xc, 0, 0},
10035         {0x73, 0x66, 0x66, 0, 0},
10036         {0x74, 0x8f, 0x8f, 1, 1},
10037         {0x75, 0, 0, 0, 0},
10038         {0x76, 0xcc, 0xcc, 0, 0},
10039         {0x77, 0x1, 0x1, 0, 0},
10040         {0x78, 0x66, 0x66, 0, 0},
10041         {0x79, 0x66, 0x66, 0, 0},
10042         {0x7A, 0, 0, 0, 0},
10043         {0x7B, 0, 0, 0, 0},
10044         {0x7C, 0, 0, 0, 0},
10045         {0x7D, 0, 0, 0, 0},
10046         {0x7E, 0, 0, 0, 0},
10047         {0x7F, 0, 0, 0, 0},
10048         {0x80, 0, 0, 0, 0},
10049         {0x81, 0, 0, 0, 0},
10050         {0x82, 0, 0, 0, 0},
10051         {0x83, 0, 0, 0, 0},
10052         {0x84, 0, 0, 0, 0},
10053         {0x85, 0xff, 0xff, 0, 0},
10054         {0x86, 0, 0, 0, 0},
10055         {0x87, 0, 0, 0, 0},
10056         {0x88, 0, 0, 0, 0},
10057         {0x89, 0, 0, 0, 0},
10058         {0x8A, 0, 0, 0, 0},
10059         {0x8B, 0, 0, 0, 0},
10060         {0x8C, 0, 0, 0, 0},
10061         {0x8D, 0, 0, 0, 0},
10062         {0x8E, 0, 0, 0, 0},
10063         {0x8F, 0, 0, 0, 0},
10064         {0x90, 0, 0, 0, 0},
10065         {0x91, 0, 0, 0, 0},
10066         {0x92, 0, 0, 0, 0},
10067         {0x93, 0, 0, 0, 0},
10068         {0x94, 0, 0, 0, 0},
10069         {0x95, 0, 0, 0, 0},
10070         {0x96, 0, 0, 0, 0},
10071         {0x97, 0, 0, 0, 0},
10072         {0x98, 0, 0, 0, 0},
10073         {0x99, 0, 0, 0, 0},
10074         {0x9A, 0, 0, 0, 0},
10075         {0x9B, 0, 0, 0, 0},
10076         {0x9C, 0, 0, 0, 0},
10077         {0x9D, 0, 0, 0, 0},
10078         {0x9E, 0, 0, 0, 0},
10079         {0x9F, 0x6, 0x6, 0, 0},
10080         {0xA0, 0x66, 0x66, 0, 0},
10081         {0xA1, 0x66, 0x66, 0, 0},
10082         {0xA2, 0x66, 0x66, 0, 0},
10083         {0xA3, 0x66, 0x66, 0, 0},
10084         {0xA4, 0x66, 0x66, 0, 0},
10085         {0xA5, 0x66, 0x66, 0, 0},
10086         {0xA6, 0x66, 0x66, 0, 0},
10087         {0xA7, 0x66, 0x66, 0, 0},
10088         {0xA8, 0x66, 0x66, 0, 0},
10089         {0xA9, 0x66, 0x66, 0, 0},
10090         {0xAA, 0x66, 0x66, 0, 0},
10091         {0xAB, 0x66, 0x66, 0, 0},
10092         {0xAC, 0x66, 0x66, 0, 0},
10093         {0xAD, 0x66, 0x66, 0, 0},
10094         {0xAE, 0x66, 0x66, 0, 0},
10095         {0xAF, 0x66, 0x66, 0, 0},
10096         {0xB0, 0x66, 0x66, 0, 0},
10097         {0xB1, 0x66, 0x66, 0, 0},
10098         {0xB2, 0x66, 0x66, 0, 0},
10099         {0xB3, 0xa, 0xa, 0, 0},
10100         {0xB4, 0, 0, 0, 0},
10101         {0xB5, 0, 0, 0, 0},
10102         {0xB6, 0, 0, 0, 0},
10103         {0xFFFF, 0, 0, 0, 0},
10104 };
10105
10106 radio_regs_t regs_TX_2056_rev7[] = {
10107         {0x02, 0, 0, 0, 0},
10108         {0x03, 0, 0, 0, 0},
10109         {0x04, 0, 0, 0, 0},
10110         {0x05, 0, 0, 0, 0},
10111         {0x06, 0, 0, 0, 0},
10112         {0x07, 0, 0, 0, 0},
10113         {0x08, 0, 0, 0, 0},
10114         {0x09, 0, 0, 0, 0},
10115         {0x0A, 0, 0, 0, 0},
10116         {0x0B, 0, 0, 0, 0},
10117         {0x0C, 0, 0, 0, 0},
10118         {0x0D, 0, 0, 0, 0},
10119         {0x0E, 0, 0, 0, 0},
10120         {0x0F, 0, 0, 0, 0},
10121         {0x10, 0, 0, 0, 0},
10122         {0x11, 0, 0, 0, 0},
10123         {0x12, 0, 0, 0, 0},
10124         {0x13, 0, 0, 0, 0},
10125         {0x14, 0, 0, 0, 0},
10126         {0x15, 0, 0, 0, 0},
10127         {0x16, 0, 0, 0, 0},
10128         {0x17, 0, 0, 0, 0},
10129         {0x18, 0, 0, 0, 0},
10130         {0x19, 0, 0, 0, 0},
10131         {0x1A, 0, 0, 0, 0},
10132         {0x1B, 0, 0, 0, 0},
10133         {0x1C, 0, 0, 0, 0},
10134         {0x1D, 0, 0, 0, 0},
10135         {0x1E, 0, 0, 0, 0},
10136         {0x1F, 0, 0, 0, 0},
10137         {0x20, 0, 0, 0, 0},
10138         {0x21, 0x88, 0x88, 0, 0},
10139         {0x22, 0x88, 0x88, 0, 0},
10140         {0x23, 0x88, 0x88, 0, 0},
10141         {0x24, 0x88, 0x88, 0, 0},
10142         {0x25, 0xc, 0xc, 0, 0},
10143         {0x26, 0, 0, 0, 0},
10144         {0x27, 0x3, 0x3, 0, 0},
10145         {0x28, 0, 0, 0, 0},
10146         {0x29, 0x3, 0x3, 0, 0},
10147         {0x2A, 0x37, 0x37, 0, 0},
10148         {0x2B, 0x3, 0x3, 0, 0},
10149         {0x2C, 0, 0, 0, 0},
10150         {0x2D, 0, 0, 0, 0},
10151         {0x2E, 0x1, 0x1, 0, 0},
10152         {0x2F, 0x1, 0x1, 0, 0},
10153         {0x30, 0, 0, 0, 0},
10154         {0x31, 0, 0, 0, 0},
10155         {0x32, 0, 0, 0, 0},
10156         {0x33, 0x11, 0x11, 0, 0},
10157         {0x34, 0xee, 0xee, 1, 1},
10158         {0x35, 0, 0, 0, 0},
10159         {0x36, 0, 0, 0, 0},
10160         {0x37, 0x3, 0x3, 0, 0},
10161         {0x38, 0x50, 0x50, 1, 1},
10162         {0x39, 0, 0, 0, 0},
10163         {0x3A, 0x50, 0x50, 1, 1},
10164         {0x3B, 0, 0, 0, 0},
10165         {0x3C, 0x6e, 0x6e, 0, 0},
10166         {0x3D, 0xf0, 0xf0, 1, 1},
10167         {0x3E, 0, 0, 0, 0},
10168         {0x3F, 0, 0, 0, 0},
10169         {0x40, 0, 0, 0, 0},
10170         {0x41, 0x3, 0x3, 0, 0},
10171         {0x42, 0x3, 0x3, 0, 0},
10172         {0x43, 0, 0, 0, 0},
10173         {0x44, 0x1e, 0x1e, 0, 0},
10174         {0x45, 0, 0, 0, 0},
10175         {0x46, 0x6e, 0x6e, 0, 0},
10176         {0x47, 0xf0, 0xf0, 1, 1},
10177         {0x48, 0, 0, 0, 0},
10178         {0x49, 0x2, 0x2, 0, 0},
10179         {0x4A, 0xff, 0xff, 1, 1},
10180         {0x4B, 0xc, 0xc, 0, 0},
10181         {0x4C, 0, 0, 0, 0},
10182         {0x4D, 0x38, 0x38, 0, 0},
10183         {0x4E, 0x70, 0x70, 1, 1},
10184         {0x4F, 0x2, 0x2, 0, 0},
10185         {0x50, 0x88, 0x88, 0, 0},
10186         {0x51, 0xc, 0xc, 0, 0},
10187         {0x52, 0, 0, 0, 0},
10188         {0x53, 0x8, 0x8, 0, 0},
10189         {0x54, 0x70, 0x70, 1, 1},
10190         {0x55, 0x2, 0x2, 0, 0},
10191         {0x56, 0xff, 0xff, 1, 1},
10192         {0x57, 0, 0, 0, 0},
10193         {0x58, 0x83, 0x83, 0, 0},
10194         {0x59, 0x77, 0x77, 1, 1},
10195         {0x5A, 0, 0, 0, 0},
10196         {0x5B, 0x2, 0x2, 0, 0},
10197         {0x5C, 0x88, 0x88, 0, 0},
10198         {0x5D, 0, 0, 0, 0},
10199         {0x5E, 0x8, 0x8, 0, 0},
10200         {0x5F, 0x77, 0x77, 1, 1},
10201         {0x60, 0x1, 0x1, 0, 0},
10202         {0x61, 0, 0, 0, 0},
10203         {0x62, 0x7, 0x7, 0, 0},
10204         {0x63, 0, 0, 0, 0},
10205         {0x64, 0x7, 0x7, 0, 0},
10206         {0x65, 0, 0, 0, 0},
10207         {0x66, 0, 0, 0, 0},
10208         {0x67, 0, 0, 1, 1},
10209         {0x68, 0, 0, 0, 0},
10210         {0x69, 0xa, 0xa, 0, 0},
10211         {0x6A, 0, 0, 0, 0},
10212         {0x6B, 0, 0, 0, 0},
10213         {0x6C, 0, 0, 0, 0},
10214         {0x6D, 0, 0, 0, 0},
10215         {0x6E, 0, 0, 0, 0},
10216         {0x6F, 0, 0, 0, 0},
10217         {0x70, 0, 0, 0, 0},
10218         {0x71, 0x2, 0x2, 0, 0},
10219         {0x72, 0, 0, 0, 0},
10220         {0x73, 0, 0, 0, 0},
10221         {0x74, 0xe, 0xe, 0, 0},
10222         {0x75, 0xe, 0xe, 0, 0},
10223         {0x76, 0xe, 0xe, 0, 0},
10224         {0x77, 0x13, 0x13, 0, 0},
10225         {0x78, 0x13, 0x13, 0, 0},
10226         {0x79, 0x1b, 0x1b, 0, 0},
10227         {0x7A, 0x1b, 0x1b, 0, 0},
10228         {0x7B, 0x55, 0x55, 0, 0},
10229         {0x7C, 0x5b, 0x5b, 0, 0},
10230         {0x7D, 0x30, 0x30, 1, 1},
10231         {0x7E, 0, 0, 0, 0},
10232         {0x7F, 0, 0, 0, 0},
10233         {0x80, 0, 0, 0, 0},
10234         {0x81, 0, 0, 0, 0},
10235         {0x82, 0, 0, 0, 0},
10236         {0x83, 0, 0, 0, 0},
10237         {0x84, 0, 0, 0, 0},
10238         {0x85, 0, 0, 0, 0},
10239         {0x86, 0, 0, 0, 0},
10240         {0x87, 0, 0, 0, 0},
10241         {0x88, 0, 0, 0, 0},
10242         {0x89, 0, 0, 0, 0},
10243         {0x8A, 0, 0, 0, 0},
10244         {0x8B, 0, 0, 0, 0},
10245         {0x8C, 0, 0, 0, 0},
10246         {0x8D, 0, 0, 0, 0},
10247         {0x8E, 0, 0, 0, 0},
10248         {0x8F, 0, 0, 0, 0},
10249         {0x90, 0, 0, 0, 0},
10250         {0x91, 0, 0, 0, 0},
10251         {0x92, 0, 0, 0, 0},
10252         {0x93, 0x70, 0x70, 0, 0},
10253         {0x94, 0x70, 0x70, 0, 0},
10254         {0x95, 0x71, 0x71, 1, 1},
10255         {0x96, 0x71, 0x71, 1, 1},
10256         {0x97, 0x72, 0x72, 1, 1},
10257         {0x98, 0x73, 0x73, 1, 1},
10258         {0x99, 0x74, 0x74, 1, 1},
10259         {0x9A, 0x75, 0x75, 1, 1},
10260         {0xFFFF, 0, 0, 0, 0},
10261 };
10262
10263 radio_regs_t regs_RX_2056_rev7[] = {
10264         {0x02, 0, 0, 0, 0},
10265         {0x03, 0, 0, 0, 0},
10266         {0x04, 0, 0, 0, 0},
10267         {0x05, 0, 0, 0, 0},
10268         {0x06, 0, 0, 0, 0},
10269         {0x07, 0, 0, 0, 0},
10270         {0x08, 0, 0, 0, 0},
10271         {0x09, 0, 0, 0, 0},
10272         {0x0A, 0, 0, 0, 0},
10273         {0x0B, 0, 0, 0, 0},
10274         {0x0C, 0, 0, 0, 0},
10275         {0x0D, 0, 0, 0, 0},
10276         {0x0E, 0, 0, 0, 0},
10277         {0x0F, 0, 0, 0, 0},
10278         {0x10, 0, 0, 0, 0},
10279         {0x11, 0, 0, 0, 0},
10280         {0x12, 0, 0, 0, 0},
10281         {0x13, 0, 0, 0, 0},
10282         {0x14, 0, 0, 0, 0},
10283         {0x15, 0, 0, 0, 0},
10284         {0x16, 0, 0, 0, 0},
10285         {0x17, 0, 0, 0, 0},
10286         {0x18, 0, 0, 0, 0},
10287         {0x19, 0, 0, 0, 0},
10288         {0x1A, 0, 0, 0, 0},
10289         {0x1B, 0, 0, 0, 0},
10290         {0x1C, 0, 0, 0, 0},
10291         {0x1D, 0, 0, 0, 0},
10292         {0x1E, 0, 0, 0, 0},
10293         {0x1F, 0, 0, 0, 0},
10294         {0x20, 0x3, 0x3, 0, 0},
10295         {0x21, 0, 0, 0, 0},
10296         {0x22, 0, 0, 0, 0},
10297         {0x23, 0x90, 0x90, 0, 0},
10298         {0x24, 0x55, 0x55, 0, 0},
10299         {0x25, 0x15, 0x15, 0, 0},
10300         {0x26, 0x5, 0x5, 0, 0},
10301         {0x27, 0x15, 0x15, 0, 0},
10302         {0x28, 0x5, 0x5, 0, 0},
10303         {0x29, 0x20, 0x20, 0, 0},
10304         {0x2A, 0x11, 0x11, 0, 0},
10305         {0x2B, 0x90, 0x90, 0, 0},
10306         {0x2C, 0, 0, 0, 0},
10307         {0x2D, 0x88, 0x88, 0, 0},
10308         {0x2E, 0x32, 0x32, 0, 0},
10309         {0x2F, 0x77, 0x77, 0, 0},
10310         {0x30, 0x17, 0x17, 1, 1},
10311         {0x31, 0xff, 0xff, 1, 1},
10312         {0x32, 0x20, 0x20, 0, 0},
10313         {0x33, 0, 0, 0, 0},
10314         {0x34, 0x88, 0x88, 0, 0},
10315         {0x35, 0x32, 0x32, 0, 0},
10316         {0x36, 0x77, 0x77, 0, 0},
10317         {0x37, 0x17, 0x17, 1, 1},
10318         {0x38, 0xf0, 0xf0, 1, 1},
10319         {0x39, 0x20, 0x20, 0, 0},
10320         {0x3A, 0x8, 0x8, 0, 0},
10321         {0x3B, 0x55, 0x55, 1, 1},
10322         {0x3C, 0, 0, 0, 0},
10323         {0x3D, 0x88, 0x88, 1, 1},
10324         {0x3E, 0, 0, 0, 0},
10325         {0x3F, 0, 0, 1, 1},
10326         {0x40, 0x7, 0x7, 1, 1},
10327         {0x41, 0x6, 0x6, 0, 0},
10328         {0x42, 0x4, 0x4, 0, 0},
10329         {0x43, 0, 0, 0, 0},
10330         {0x44, 0x8, 0x8, 0, 0},
10331         {0x45, 0x55, 0x55, 1, 1},
10332         {0x46, 0, 0, 0, 0},
10333         {0x47, 0x11, 0x11, 0, 0},
10334         {0x48, 0, 0, 0, 0},
10335         {0x49, 0, 0, 1, 1},
10336         {0x4A, 0x7, 0x7, 0, 0},
10337         {0x4B, 0x6, 0x6, 0, 0},
10338         {0x4C, 0x4, 0x4, 0, 0},
10339         {0x4D, 0, 0, 0, 0},
10340         {0x4E, 0, 0, 0, 0},
10341         {0x4F, 0x26, 0x26, 1, 1},
10342         {0x50, 0x26, 0x26, 1, 1},
10343         {0x51, 0xf, 0xf, 1, 1},
10344         {0x52, 0xf, 0xf, 1, 1},
10345         {0x53, 0x44, 0x44, 0, 0},
10346         {0x54, 0, 0, 0, 0},
10347         {0x55, 0, 0, 0, 0},
10348         {0x56, 0x8, 0x8, 0, 0},
10349         {0x57, 0x8, 0x8, 0, 0},
10350         {0x58, 0x7, 0x7, 0, 0},
10351         {0x59, 0x22, 0x22, 0, 0},
10352         {0x5A, 0x22, 0x22, 0, 0},
10353         {0x5B, 0x2, 0x2, 0, 0},
10354         {0x5C, 0x4, 0x4, 1, 1},
10355         {0x5D, 0x7, 0x7, 0, 0},
10356         {0x5E, 0x55, 0x55, 0, 0},
10357         {0x5F, 0x23, 0x23, 0, 0},
10358         {0x60, 0x41, 0x41, 0, 0},
10359         {0x61, 0x1, 0x1, 0, 0},
10360         {0x62, 0xa, 0xa, 0, 0},
10361         {0x63, 0, 0, 0, 0},
10362         {0x64, 0, 0, 0, 0},
10363         {0x65, 0, 0, 0, 0},
10364         {0x66, 0, 0, 0, 0},
10365         {0x67, 0, 0, 0, 0},
10366         {0x68, 0, 0, 0, 0},
10367         {0x69, 0, 0, 0, 0},
10368         {0x6A, 0, 0, 0, 0},
10369         {0x6B, 0xc, 0xc, 0, 0},
10370         {0x6C, 0, 0, 0, 0},
10371         {0x6D, 0, 0, 0, 0},
10372         {0x6E, 0, 0, 0, 0},
10373         {0x6F, 0, 0, 0, 0},
10374         {0x70, 0, 0, 0, 0},
10375         {0x71, 0, 0, 0, 0},
10376         {0x72, 0x22, 0x22, 0, 0},
10377         {0x73, 0x22, 0x22, 0, 0},
10378         {0x74, 0, 0, 1, 1},
10379         {0x75, 0xa, 0xa, 0, 0},
10380         {0x76, 0x1, 0x1, 0, 0},
10381         {0x77, 0x22, 0x22, 0, 0},
10382         {0x78, 0x30, 0x30, 0, 0},
10383         {0x79, 0, 0, 0, 0},
10384         {0x7A, 0, 0, 0, 0},
10385         {0x7B, 0, 0, 0, 0},
10386         {0x7C, 0, 0, 0, 0},
10387         {0x7D, 0, 0, 0, 0},
10388         {0x7E, 0, 0, 0, 0},
10389         {0x7F, 0, 0, 0, 0},
10390         {0x80, 0, 0, 0, 0},
10391         {0x81, 0, 0, 0, 0},
10392         {0x82, 0, 0, 0, 0},
10393         {0x83, 0, 0, 0, 0},
10394         {0x84, 0, 0, 0, 0},
10395         {0x85, 0, 0, 0, 0},
10396         {0x86, 0, 0, 0, 0},
10397         {0x87, 0, 0, 0, 0},
10398         {0x88, 0, 0, 0, 0},
10399         {0x89, 0, 0, 0, 0},
10400         {0x8A, 0, 0, 0, 0},
10401         {0x8B, 0, 0, 0, 0},
10402         {0x8C, 0, 0, 0, 0},
10403         {0x8D, 0, 0, 0, 0},
10404         {0x8E, 0, 0, 0, 0},
10405         {0x8F, 0, 0, 0, 0},
10406         {0x90, 0, 0, 0, 0},
10407         {0x91, 0, 0, 0, 0},
10408         {0x92, 0, 0, 0, 0},
10409         {0x93, 0, 0, 0, 0},
10410         {0x94, 0, 0, 0, 0},
10411         {0xFFFF, 0, 0, 0, 0},
10412 };
10413
10414 radio_regs_t regs_SYN_2056_rev8[] = {
10415         {0x02, 0, 0, 0, 0},
10416         {0x03, 0, 0, 0, 0},
10417         {0x04, 0, 0, 0, 0},
10418         {0x05, 0, 0, 0, 0},
10419         {0x06, 0, 0, 0, 0},
10420         {0x07, 0, 0, 0, 0},
10421         {0x08, 0, 0, 0, 0},
10422         {0x09, 0x1, 0x1, 0, 0},
10423         {0x0A, 0, 0, 0, 0},
10424         {0x0B, 0, 0, 0, 0},
10425         {0x0C, 0, 0, 0, 0},
10426         {0x0D, 0, 0, 0, 0},
10427         {0x0E, 0, 0, 0, 0},
10428         {0x0F, 0, 0, 0, 0},
10429         {0x10, 0, 0, 0, 0},
10430         {0x11, 0, 0, 0, 0},
10431         {0x12, 0, 0, 0, 0},
10432         {0x13, 0, 0, 0, 0},
10433         {0x14, 0, 0, 0, 0},
10434         {0x15, 0, 0, 0, 0},
10435         {0x16, 0, 0, 0, 0},
10436         {0x17, 0, 0, 0, 0},
10437         {0x18, 0, 0, 0, 0},
10438         {0x19, 0, 0, 0, 0},
10439         {0x1A, 0, 0, 0, 0},
10440         {0x1B, 0, 0, 0, 0},
10441         {0x1C, 0, 0, 0, 0},
10442         {0x1D, 0, 0, 0, 0},
10443         {0x1E, 0, 0, 0, 0},
10444         {0x1F, 0, 0, 0, 0},
10445         {0x20, 0, 0, 0, 0},
10446         {0x21, 0, 0, 0, 0},
10447         {0x22, 0x60, 0x60, 0, 0},
10448         {0x23, 0x6, 0x6, 0, 0},
10449         {0x24, 0xc, 0xc, 0, 0},
10450         {0x25, 0, 0, 0, 0},
10451         {0x26, 0, 0, 0, 0},
10452         {0x27, 0, 0, 0, 0},
10453         {0x28, 0x1, 0x1, 0, 0},
10454         {0x29, 0, 0, 0, 0},
10455         {0x2A, 0, 0, 0, 0},
10456         {0x2B, 0, 0, 0, 0},
10457         {0x2C, 0, 0, 0, 0},
10458         {0x2D, 0, 0, 0, 0},
10459         {0x2E, 0, 0, 0, 0},
10460         {0x2F, 0x1f, 0x1f, 0, 0},
10461         {0x30, 0x15, 0x15, 0, 0},
10462         {0x31, 0xf, 0xf, 0, 0},
10463         {0x32, 0, 0, 0, 0},
10464         {0x33, 0, 0, 0, 0},
10465         {0x34, 0, 0, 0, 0},
10466         {0x35, 0, 0, 0, 0},
10467         {0x36, 0, 0, 0, 0},
10468         {0x37, 0, 0, 0, 0},
10469         {0x38, 0, 0, 0, 0},
10470         {0x39, 0, 0, 0, 0},
10471         {0x3A, 0, 0, 0, 0},
10472         {0x3B, 0, 0, 0, 0},
10473         {0x3C, 0x13, 0x13, 0, 0},
10474         {0x3D, 0xf, 0xf, 0, 0},
10475         {0x3E, 0x18, 0x18, 0, 0},
10476         {0x3F, 0, 0, 0, 0},
10477         {0x40, 0, 0, 0, 0},
10478         {0x41, 0x20, 0x20, 0, 0},
10479         {0x42, 0x20, 0x20, 0, 0},
10480         {0x43, 0, 0, 0, 0},
10481         {0x44, 0x77, 0x77, 0, 0},
10482         {0x45, 0x7, 0x7, 0, 0},
10483         {0x46, 0x1, 0x1, 0, 0},
10484         {0x47, 0x4, 0x4, 0, 0},
10485         {0x48, 0xf, 0xf, 0, 0},
10486         {0x49, 0x30, 0x30, 0, 0},
10487         {0x4A, 0x32, 0x32, 0, 0},
10488         {0x4B, 0xd, 0xd, 0, 0},
10489         {0x4C, 0xd, 0xd, 0, 0},
10490         {0x4D, 0x4, 0x4, 0, 0},
10491         {0x4E, 0x6, 0x6, 0, 0},
10492         {0x4F, 0x1, 0x1, 0, 0},
10493         {0x50, 0x1c, 0x1c, 0, 0},
10494         {0x51, 0x2, 0x2, 0, 0},
10495         {0x52, 0x2, 0x2, 0, 0},
10496         {0x53, 0xf7, 0xf7, 1, 1},
10497         {0x54, 0xb4, 0xb4, 0, 0},
10498         {0x55, 0xd2, 0xd2, 0, 0},
10499         {0x56, 0, 0, 0, 0},
10500         {0x57, 0, 0, 0, 0},
10501         {0x58, 0x4, 0x4, 0, 0},
10502         {0x59, 0x96, 0x96, 0, 0},
10503         {0x5A, 0x3e, 0x3e, 0, 0},
10504         {0x5B, 0x3e, 0x3e, 0, 0},
10505         {0x5C, 0x13, 0x13, 0, 0},
10506         {0x5D, 0x2, 0x2, 0, 0},
10507         {0x5E, 0, 0, 0, 0},
10508         {0x5F, 0x7, 0x7, 0, 0},
10509         {0x60, 0x7, 0x7, 1, 1},
10510         {0x61, 0x8, 0x8, 0, 0},
10511         {0x62, 0x3, 0x3, 0, 0},
10512         {0x63, 0, 0, 0, 0},
10513         {0x64, 0, 0, 0, 0},
10514         {0x65, 0, 0, 0, 0},
10515         {0x66, 0, 0, 0, 0},
10516         {0x67, 0, 0, 0, 0},
10517         {0x68, 0x40, 0x40, 0, 0},
10518         {0x69, 0, 0, 0, 0},
10519         {0x6A, 0, 0, 0, 0},
10520         {0x6B, 0, 0, 0, 0},
10521         {0x6C, 0, 0, 0, 0},
10522         {0x6D, 0x1, 0x1, 0, 0},
10523         {0x6E, 0, 0, 0, 0},
10524         {0x6F, 0, 0, 0, 0},
10525         {0x70, 0x60, 0x60, 0, 0},
10526         {0x71, 0x66, 0x66, 0, 0},
10527         {0x72, 0xc, 0xc, 0, 0},
10528         {0x73, 0x66, 0x66, 0, 0},
10529         {0x74, 0x8f, 0x8f, 1, 1},
10530         {0x75, 0, 0, 0, 0},
10531         {0x76, 0xcc, 0xcc, 0, 0},
10532         {0x77, 0x1, 0x1, 0, 0},
10533         {0x78, 0x66, 0x66, 0, 0},
10534         {0x79, 0x66, 0x66, 0, 0},
10535         {0x7A, 0, 0, 0, 0},
10536         {0x7B, 0, 0, 0, 0},
10537         {0x7C, 0, 0, 0, 0},
10538         {0x7D, 0, 0, 0, 0},
10539         {0x7E, 0, 0, 0, 0},
10540         {0x7F, 0, 0, 0, 0},
10541         {0x80, 0, 0, 0, 0},
10542         {0x81, 0, 0, 0, 0},
10543         {0x82, 0, 0, 0, 0},
10544         {0x83, 0, 0, 0, 0},
10545         {0x84, 0, 0, 0, 0},
10546         {0x85, 0xff, 0xff, 0, 0},
10547         {0x86, 0, 0, 0, 0},
10548         {0x87, 0, 0, 0, 0},
10549         {0x88, 0, 0, 0, 0},
10550         {0x89, 0, 0, 0, 0},
10551         {0x8A, 0, 0, 0, 0},
10552         {0x8B, 0, 0, 0, 0},
10553         {0x8C, 0, 0, 0, 0},
10554         {0x8D, 0, 0, 0, 0},
10555         {0x8E, 0, 0, 0, 0},
10556         {0x8F, 0, 0, 0, 0},
10557         {0x90, 0, 0, 0, 0},
10558         {0x91, 0, 0, 0, 0},
10559         {0x92, 0, 0, 0, 0},
10560         {0x93, 0, 0, 0, 0},
10561         {0x94, 0, 0, 0, 0},
10562         {0x95, 0, 0, 0, 0},
10563         {0x96, 0, 0, 0, 0},
10564         {0x97, 0, 0, 0, 0},
10565         {0x98, 0, 0, 0, 0},
10566         {0x99, 0, 0, 0, 0},
10567         {0x9A, 0, 0, 0, 0},
10568         {0x9B, 0, 0, 0, 0},
10569         {0x9C, 0, 0, 0, 0},
10570         {0x9D, 0, 0, 0, 0},
10571         {0x9E, 0, 0, 0, 0},
10572         {0x9F, 0x6, 0x6, 0, 0},
10573         {0xA0, 0x66, 0x66, 0, 0},
10574         {0xA1, 0x66, 0x66, 0, 0},
10575         {0xA2, 0x66, 0x66, 0, 0},
10576         {0xA3, 0x66, 0x66, 0, 0},
10577         {0xA4, 0x66, 0x66, 0, 0},
10578         {0xA5, 0x66, 0x66, 0, 0},
10579         {0xA6, 0x66, 0x66, 0, 0},
10580         {0xA7, 0x66, 0x66, 0, 0},
10581         {0xA8, 0x66, 0x66, 0, 0},
10582         {0xA9, 0x66, 0x66, 0, 0},
10583         {0xAA, 0x66, 0x66, 0, 0},
10584         {0xAB, 0x66, 0x66, 0, 0},
10585         {0xAC, 0x66, 0x66, 0, 0},
10586         {0xAD, 0x66, 0x66, 0, 0},
10587         {0xAE, 0x66, 0x66, 0, 0},
10588         {0xAF, 0x66, 0x66, 0, 0},
10589         {0xB0, 0x66, 0x66, 0, 0},
10590         {0xB1, 0x66, 0x66, 0, 0},
10591         {0xB2, 0x66, 0x66, 0, 0},
10592         {0xB3, 0xa, 0xa, 0, 0},
10593         {0xB4, 0, 0, 0, 0},
10594         {0xB5, 0, 0, 0, 0},
10595         {0xB6, 0, 0, 0, 0},
10596         {0xFFFF, 0, 0, 0, 0},
10597 };
10598
10599 radio_regs_t regs_TX_2056_rev8[] = {
10600         {0x02, 0, 0, 0, 0},
10601         {0x03, 0, 0, 0, 0},
10602         {0x04, 0, 0, 0, 0},
10603         {0x05, 0, 0, 0, 0},
10604         {0x06, 0, 0, 0, 0},
10605         {0x07, 0, 0, 0, 0},
10606         {0x08, 0, 0, 0, 0},
10607         {0x09, 0, 0, 0, 0},
10608         {0x0A, 0, 0, 0, 0},
10609         {0x0B, 0, 0, 0, 0},
10610         {0x0C, 0, 0, 0, 0},
10611         {0x0D, 0, 0, 0, 0},
10612         {0x0E, 0, 0, 0, 0},
10613         {0x0F, 0, 0, 0, 0},
10614         {0x10, 0, 0, 0, 0},
10615         {0x11, 0, 0, 0, 0},
10616         {0x12, 0, 0, 0, 0},
10617         {0x13, 0, 0, 0, 0},
10618         {0x14, 0, 0, 0, 0},
10619         {0x15, 0, 0, 0, 0},
10620         {0x16, 0, 0, 0, 0},
10621         {0x17, 0, 0, 0, 0},
10622         {0x18, 0, 0, 0, 0},
10623         {0x19, 0, 0, 0, 0},
10624         {0x1A, 0, 0, 0, 0},
10625         {0x1B, 0, 0, 0, 0},
10626         {0x1C, 0, 0, 0, 0},
10627         {0x1D, 0, 0, 0, 0},
10628         {0x1E, 0, 0, 0, 0},
10629         {0x1F, 0, 0, 0, 0},
10630         {0x20, 0, 0, 0, 0},
10631         {0x21, 0x88, 0x88, 0, 0},
10632         {0x22, 0x88, 0x88, 0, 0},
10633         {0x23, 0x88, 0x88, 0, 0},
10634         {0x24, 0x88, 0x88, 0, 0},
10635         {0x25, 0xc, 0xc, 0, 0},
10636         {0x26, 0, 0, 0, 0},
10637         {0x27, 0x3, 0x3, 0, 0},
10638         {0x28, 0, 0, 0, 0},
10639         {0x29, 0x3, 0x3, 0, 0},
10640         {0x2A, 0x37, 0x37, 0, 0},
10641         {0x2B, 0x3, 0x3, 0, 0},
10642         {0x2C, 0, 0, 0, 0},
10643         {0x2D, 0, 0, 0, 0},
10644         {0x2E, 0x1, 0x1, 0, 0},
10645         {0x2F, 0x1, 0x1, 0, 0},
10646         {0x30, 0, 0, 0, 0},
10647         {0x31, 0, 0, 0, 0},
10648         {0x32, 0, 0, 0, 0},
10649         {0x33, 0x11, 0x11, 0, 0},
10650         {0x34, 0xee, 0xee, 1, 1},
10651         {0x35, 0, 0, 0, 0},
10652         {0x36, 0, 0, 0, 0},
10653         {0x37, 0x3, 0x3, 0, 0},
10654         {0x38, 0x50, 0x50, 1, 1},
10655         {0x39, 0, 0, 0, 0},
10656         {0x3A, 0x50, 0x50, 1, 1},
10657         {0x3B, 0, 0, 0, 0},
10658         {0x3C, 0x6e, 0x6e, 0, 0},
10659         {0x3D, 0xf0, 0xf0, 1, 1},
10660         {0x3E, 0, 0, 0, 0},
10661         {0x3F, 0, 0, 0, 0},
10662         {0x40, 0, 0, 0, 0},
10663         {0x41, 0x3, 0x3, 0, 0},
10664         {0x42, 0x3, 0x3, 0, 0},
10665         {0x43, 0, 0, 0, 0},
10666         {0x44, 0x1e, 0x1e, 0, 0},
10667         {0x45, 0, 0, 0, 0},
10668         {0x46, 0x6e, 0x6e, 0, 0},
10669         {0x47, 0xf0, 0xf0, 1, 1},
10670         {0x48, 0, 0, 0, 0},
10671         {0x49, 0x2, 0x2, 0, 0},
10672         {0x4A, 0xff, 0xff, 1, 1},
10673         {0x4B, 0xc, 0xc, 0, 0},
10674         {0x4C, 0, 0, 0, 0},
10675         {0x4D, 0x38, 0x38, 0, 0},
10676         {0x4E, 0x70, 0x70, 1, 1},
10677         {0x4F, 0x2, 0x2, 0, 0},
10678         {0x50, 0x88, 0x88, 0, 0},
10679         {0x51, 0xc, 0xc, 0, 0},
10680         {0x52, 0, 0, 0, 0},
10681         {0x53, 0x8, 0x8, 0, 0},
10682         {0x54, 0x70, 0x70, 1, 1},
10683         {0x55, 0x2, 0x2, 0, 0},
10684         {0x56, 0xff, 0xff, 1, 1},
10685         {0x57, 0, 0, 0, 0},
10686         {0x58, 0x83, 0x83, 0, 0},
10687         {0x59, 0x77, 0x77, 1, 1},
10688         {0x5A, 0, 0, 0, 0},
10689         {0x5B, 0x2, 0x2, 0, 0},
10690         {0x5C, 0x88, 0x88, 0, 0},
10691         {0x5D, 0, 0, 0, 0},
10692         {0x5E, 0x8, 0x8, 0, 0},
10693         {0x5F, 0x77, 0x77, 1, 1},
10694         {0x60, 0x1, 0x1, 0, 0},
10695         {0x61, 0, 0, 0, 0},
10696         {0x62, 0x7, 0x7, 0, 0},
10697         {0x63, 0, 0, 0, 0},
10698         {0x64, 0x7, 0x7, 0, 0},
10699         {0x65, 0, 0, 0, 0},
10700         {0x66, 0, 0, 0, 0},
10701         {0x67, 0, 0, 1, 1},
10702         {0x68, 0, 0, 0, 0},
10703         {0x69, 0xa, 0xa, 0, 0},
10704         {0x6A, 0, 0, 0, 0},
10705         {0x6B, 0, 0, 0, 0},
10706         {0x6C, 0, 0, 0, 0},
10707         {0x6D, 0, 0, 0, 0},
10708         {0x6E, 0, 0, 0, 0},
10709         {0x6F, 0, 0, 0, 0},
10710         {0x70, 0, 0, 0, 0},
10711         {0x71, 0x2, 0x2, 0, 0},
10712         {0x72, 0, 0, 0, 0},
10713         {0x73, 0, 0, 0, 0},
10714         {0x74, 0xe, 0xe, 0, 0},
10715         {0x75, 0xe, 0xe, 0, 0},
10716         {0x76, 0xe, 0xe, 0, 0},
10717         {0x77, 0x13, 0x13, 0, 0},
10718         {0x78, 0x13, 0x13, 0, 0},
10719         {0x79, 0x1b, 0x1b, 0, 0},
10720         {0x7A, 0x1b, 0x1b, 0, 0},
10721         {0x7B, 0x55, 0x55, 0, 0},
10722         {0x7C, 0x5b, 0x5b, 0, 0},
10723         {0x7D, 0x30, 0x30, 1, 1},
10724         {0x7E, 0, 0, 0, 0},
10725         {0x7F, 0, 0, 0, 0},
10726         {0x80, 0, 0, 0, 0},
10727         {0x81, 0, 0, 0, 0},
10728         {0x82, 0, 0, 0, 0},
10729         {0x83, 0, 0, 0, 0},
10730         {0x84, 0, 0, 0, 0},
10731         {0x85, 0, 0, 0, 0},
10732         {0x86, 0, 0, 0, 0},
10733         {0x87, 0, 0, 0, 0},
10734         {0x88, 0, 0, 0, 0},
10735         {0x89, 0, 0, 0, 0},
10736         {0x8A, 0, 0, 0, 0},
10737         {0x8B, 0, 0, 0, 0},
10738         {0x8C, 0, 0, 0, 0},
10739         {0x8D, 0, 0, 0, 0},
10740         {0x8E, 0, 0, 0, 0},
10741         {0x8F, 0, 0, 0, 0},
10742         {0x90, 0, 0, 0, 0},
10743         {0x91, 0, 0, 0, 0},
10744         {0x92, 0, 0, 0, 0},
10745         {0x93, 0x70, 0x70, 0, 0},
10746         {0x94, 0x70, 0x70, 0, 0},
10747         {0x95, 0x70, 0x70, 0, 0},
10748         {0x96, 0x70, 0x70, 0, 0},
10749         {0x97, 0x70, 0x70, 0, 0},
10750         {0x98, 0x70, 0x70, 0, 0},
10751         {0x99, 0x70, 0x70, 0, 0},
10752         {0x9A, 0x70, 0x70, 0, 0},
10753         {0xFFFF, 0, 0, 0, 0},
10754 };
10755
10756 radio_regs_t regs_RX_2056_rev8[] = {
10757         {0x02, 0, 0, 0, 0},
10758         {0x03, 0, 0, 0, 0},
10759         {0x04, 0, 0, 0, 0},
10760         {0x05, 0, 0, 0, 0},
10761         {0x06, 0, 0, 0, 0},
10762         {0x07, 0, 0, 0, 0},
10763         {0x08, 0, 0, 0, 0},
10764         {0x09, 0, 0, 0, 0},
10765         {0x0A, 0, 0, 0, 0},
10766         {0x0B, 0, 0, 0, 0},
10767         {0x0C, 0, 0, 0, 0},
10768         {0x0D, 0, 0, 0, 0},
10769         {0x0E, 0, 0, 0, 0},
10770         {0x0F, 0, 0, 0, 0},
10771         {0x10, 0, 0, 0, 0},
10772         {0x11, 0, 0, 0, 0},
10773         {0x12, 0, 0, 0, 0},
10774         {0x13, 0, 0, 0, 0},
10775         {0x14, 0, 0, 0, 0},
10776         {0x15, 0, 0, 0, 0},
10777         {0x16, 0, 0, 0, 0},
10778         {0x17, 0, 0, 0, 0},
10779         {0x18, 0, 0, 0, 0},
10780         {0x19, 0, 0, 0, 0},
10781         {0x1A, 0, 0, 0, 0},
10782         {0x1B, 0, 0, 0, 0},
10783         {0x1C, 0, 0, 0, 0},
10784         {0x1D, 0, 0, 0, 0},
10785         {0x1E, 0, 0, 0, 0},
10786         {0x1F, 0, 0, 0, 0},
10787         {0x20, 0x3, 0x3, 0, 0},
10788         {0x21, 0, 0, 0, 0},
10789         {0x22, 0, 0, 0, 0},
10790         {0x23, 0x90, 0x90, 0, 0},
10791         {0x24, 0x55, 0x55, 0, 0},
10792         {0x25, 0x15, 0x15, 0, 0},
10793         {0x26, 0x5, 0x5, 0, 0},
10794         {0x27, 0x15, 0x15, 0, 0},
10795         {0x28, 0x5, 0x5, 0, 0},
10796         {0x29, 0x20, 0x20, 0, 0},
10797         {0x2A, 0x11, 0x11, 0, 0},
10798         {0x2B, 0x90, 0x90, 0, 0},
10799         {0x2C, 0, 0, 0, 0},
10800         {0x2D, 0x88, 0x88, 0, 0},
10801         {0x2E, 0x32, 0x32, 0, 0},
10802         {0x2F, 0x77, 0x77, 0, 0},
10803         {0x30, 0x17, 0x17, 1, 1},
10804         {0x31, 0xff, 0xff, 1, 1},
10805         {0x32, 0x20, 0x20, 0, 0},
10806         {0x33, 0, 0, 0, 0},
10807         {0x34, 0x88, 0x88, 0, 0},
10808         {0x35, 0x32, 0x32, 0, 0},
10809         {0x36, 0x77, 0x77, 0, 0},
10810         {0x37, 0x17, 0x17, 1, 1},
10811         {0x38, 0xf0, 0xf0, 1, 1},
10812         {0x39, 0x20, 0x20, 0, 0},
10813         {0x3A, 0x8, 0x8, 0, 0},
10814         {0x3B, 0x55, 0x55, 1, 1},
10815         {0x3C, 0, 0, 0, 0},
10816         {0x3D, 0x88, 0x88, 1, 1},
10817         {0x3E, 0, 0, 0, 0},
10818         {0x3F, 0x44, 0x44, 0, 0},
10819         {0x40, 0x7, 0x7, 1, 1},
10820         {0x41, 0x6, 0x6, 0, 0},
10821         {0x42, 0x4, 0x4, 0, 0},
10822         {0x43, 0, 0, 0, 0},
10823         {0x44, 0x8, 0x8, 0, 0},
10824         {0x45, 0x55, 0x55, 1, 1},
10825         {0x46, 0, 0, 0, 0},
10826         {0x47, 0x11, 0x11, 0, 0},
10827         {0x48, 0, 0, 0, 0},
10828         {0x49, 0x44, 0x44, 0, 0},
10829         {0x4A, 0x7, 0x7, 0, 0},
10830         {0x4B, 0x6, 0x6, 0, 0},
10831         {0x4C, 0x4, 0x4, 0, 0},
10832         {0x4D, 0, 0, 0, 0},
10833         {0x4E, 0, 0, 0, 0},
10834         {0x4F, 0x26, 0x26, 1, 1},
10835         {0x50, 0x26, 0x26, 1, 1},
10836         {0x51, 0xf, 0xf, 1, 1},
10837         {0x52, 0xf, 0xf, 1, 1},
10838         {0x53, 0x44, 0x44, 0, 0},
10839         {0x54, 0, 0, 0, 0},
10840         {0x55, 0, 0, 0, 0},
10841         {0x56, 0x8, 0x8, 0, 0},
10842         {0x57, 0x8, 0x8, 0, 0},
10843         {0x58, 0x7, 0x7, 0, 0},
10844         {0x59, 0x22, 0x22, 0, 0},
10845         {0x5A, 0x22, 0x22, 0, 0},
10846         {0x5B, 0x2, 0x2, 0, 0},
10847         {0x5C, 0x4, 0x4, 1, 1},
10848         {0x5D, 0x7, 0x7, 0, 0},
10849         {0x5E, 0x55, 0x55, 0, 0},
10850         {0x5F, 0x23, 0x23, 0, 0},
10851         {0x60, 0x41, 0x41, 0, 0},
10852         {0x61, 0x1, 0x1, 0, 0},
10853         {0x62, 0xa, 0xa, 0, 0},
10854         {0x63, 0, 0, 0, 0},
10855         {0x64, 0, 0, 0, 0},
10856         {0x65, 0, 0, 0, 0},
10857         {0x66, 0, 0, 0, 0},
10858         {0x67, 0, 0, 0, 0},
10859         {0x68, 0, 0, 0, 0},
10860         {0x69, 0, 0, 0, 0},
10861         {0x6A, 0, 0, 0, 0},
10862         {0x6B, 0xc, 0xc, 0, 0},
10863         {0x6C, 0, 0, 0, 0},
10864         {0x6D, 0, 0, 0, 0},
10865         {0x6E, 0, 0, 0, 0},
10866         {0x6F, 0, 0, 0, 0},
10867         {0x70, 0, 0, 0, 0},
10868         {0x71, 0, 0, 0, 0},
10869         {0x72, 0x22, 0x22, 0, 0},
10870         {0x73, 0x22, 0x22, 0, 0},
10871         {0x74, 0, 0, 1, 1},
10872         {0x75, 0xa, 0xa, 0, 0},
10873         {0x76, 0x1, 0x1, 0, 0},
10874         {0x77, 0x22, 0x22, 0, 0},
10875         {0x78, 0x30, 0x30, 0, 0},
10876         {0x79, 0, 0, 0, 0},
10877         {0x7A, 0, 0, 0, 0},
10878         {0x7B, 0, 0, 0, 0},
10879         {0x7C, 0, 0, 0, 0},
10880         {0x7D, 0x5, 0x5, 1, 1},
10881         {0x7E, 0, 0, 0, 0},
10882         {0x7F, 0, 0, 0, 0},
10883         {0x80, 0, 0, 0, 0},
10884         {0x81, 0, 0, 0, 0},
10885         {0x82, 0, 0, 0, 0},
10886         {0x83, 0, 0, 0, 0},
10887         {0x84, 0, 0, 0, 0},
10888         {0x85, 0, 0, 0, 0},
10889         {0x86, 0, 0, 0, 0},
10890         {0x87, 0, 0, 0, 0},
10891         {0x88, 0, 0, 0, 0},
10892         {0x89, 0, 0, 0, 0},
10893         {0x8A, 0, 0, 0, 0},
10894         {0x8B, 0, 0, 0, 0},
10895         {0x8C, 0, 0, 0, 0},
10896         {0x8D, 0, 0, 0, 0},
10897         {0x8E, 0, 0, 0, 0},
10898         {0x8F, 0, 0, 0, 0},
10899         {0x90, 0, 0, 0, 0},
10900         {0x91, 0, 0, 0, 0},
10901         {0x92, 0, 0, 0, 0},
10902         {0x93, 0, 0, 0, 0},
10903         {0x94, 0, 0, 0, 0},
10904         {0xFFFF, 0, 0, 0, 0},
10905 };
10906
10907 radio_regs_t regs_SYN_2056_rev11[] = {
10908         {0x02, 0, 0, 0, 0},
10909         {0x03, 0, 0, 0, 0},
10910         {0x04, 0, 0, 0, 0},
10911         {0x05, 0, 0, 0, 0},
10912         {0x06, 0, 0, 0, 0},
10913         {0x07, 0, 0, 0, 0},
10914         {0x08, 0, 0, 0, 0},
10915         {0x09, 0x1, 0x1, 0, 0},
10916         {0x0A, 0, 0, 0, 0},
10917         {0x0B, 0, 0, 0, 0},
10918         {0x0C, 0, 0, 0, 0},
10919         {0x0D, 0, 0, 0, 0},
10920         {0x0E, 0, 0, 0, 0},
10921         {0x0F, 0, 0, 0, 0},
10922         {0x10, 0, 0, 0, 0},
10923         {0x11, 0, 0, 0, 0},
10924         {0x12, 0, 0, 0, 0},
10925         {0x13, 0, 0, 0, 0},
10926         {0x14, 0, 0, 0, 0},
10927         {0x15, 0, 0, 0, 0},
10928         {0x16, 0, 0, 0, 0},
10929         {0x17, 0, 0, 0, 0},
10930         {0x18, 0, 0, 0, 0},
10931         {0x19, 0, 0, 0, 0},
10932         {0x1A, 0, 0, 0, 0},
10933         {0x1B, 0, 0, 0, 0},
10934         {0x1C, 0, 0, 0, 0},
10935         {0x1D, 0, 0, 0, 0},
10936         {0x1E, 0, 0, 0, 0},
10937         {0x1F, 0, 0, 0, 0},
10938         {0x20, 0, 0, 0, 0},
10939         {0x21, 0, 0, 0, 0},
10940         {0x22, 0x60, 0x60, 0, 0},
10941         {0x23, 0x6, 0x6, 0, 0},
10942         {0x24, 0xc, 0xc, 0, 0},
10943         {0x25, 0, 0, 0, 0},
10944         {0x26, 0, 0, 0, 0},
10945         {0x27, 0, 0, 0, 0},
10946         {0x28, 0x1, 0x1, 0, 0},
10947         {0x29, 0, 0, 0, 0},
10948         {0x2A, 0, 0, 0, 0},
10949         {0x2B, 0, 0, 0, 0},
10950         {0x2C, 0, 0, 0, 0},
10951         {0x2D, 0, 0, 0, 0},
10952         {0x2E, 0, 0, 0, 0},
10953         {0x2F, 0x1f, 0x1f, 0, 0},
10954         {0x30, 0x15, 0x15, 0, 0},
10955         {0x31, 0xf, 0xf, 0, 0},
10956         {0x32, 0, 0, 0, 0},
10957         {0x33, 0, 0, 0, 0},
10958         {0x34, 0, 0, 0, 0},
10959         {0x35, 0, 0, 0, 0},
10960         {0x36, 0, 0, 0, 0},
10961         {0x37, 0, 0, 0, 0},
10962         {0x38, 0, 0, 0, 0},
10963         {0x39, 0, 0, 0, 0},
10964         {0x3A, 0, 0, 0, 0},
10965         {0x3B, 0, 0, 0, 0},
10966         {0x3C, 0x13, 0x13, 0, 0},
10967         {0x3D, 0xf, 0xf, 0, 0},
10968         {0x3E, 0x18, 0x18, 0, 0},
10969         {0x3F, 0, 0, 0, 0},
10970         {0x40, 0, 0, 0, 0},
10971         {0x41, 0x20, 0x20, 0, 0},
10972         {0x42, 0x20, 0x20, 0, 0},
10973         {0x43, 0, 0, 0, 0},
10974         {0x44, 0x77, 0x77, 0, 0},
10975         {0x45, 0x7, 0x7, 0, 0},
10976         {0x46, 0x1, 0x1, 0, 0},
10977         {0x47, 0x6, 0x6, 1, 1},
10978         {0x48, 0xf, 0xf, 0, 0},
10979         {0x49, 0x3f, 0x3f, 1, 1},
10980         {0x4A, 0x32, 0x32, 0, 0},
10981         {0x4B, 0x6, 0x6, 1, 1},
10982         {0x4C, 0x6, 0x6, 1, 1},
10983         {0x4D, 0x4, 0x4, 0, 0},
10984         {0x4E, 0x2b, 0x2b, 1, 1},
10985         {0x4F, 0x1, 0x1, 0, 0},
10986         {0x50, 0x1c, 0x1c, 0, 0},
10987         {0x51, 0x2, 0x2, 0, 0},
10988         {0x52, 0x2, 0x2, 0, 0},
10989         {0x53, 0xf7, 0xf7, 1, 1},
10990         {0x54, 0xb4, 0xb4, 0, 0},
10991         {0x55, 0xd2, 0xd2, 0, 0},
10992         {0x56, 0, 0, 0, 0},
10993         {0x57, 0, 0, 0, 0},
10994         {0x58, 0x4, 0x4, 0, 0},
10995         {0x59, 0x96, 0x96, 0, 0},
10996         {0x5A, 0x3e, 0x3e, 0, 0},
10997         {0x5B, 0x3e, 0x3e, 0, 0},
10998         {0x5C, 0x13, 0x13, 0, 0},
10999         {0x5D, 0x2, 0x2, 0, 0},
11000         {0x5E, 0, 0, 0, 0},
11001         {0x5F, 0x7, 0x7, 0, 0},
11002         {0x60, 0x7, 0x7, 1, 1},
11003         {0x61, 0x8, 0x8, 0, 0},
11004         {0x62, 0x3, 0x3, 0, 0},
11005         {0x63, 0, 0, 0, 0},
11006         {0x64, 0, 0, 0, 0},
11007         {0x65, 0, 0, 0, 0},
11008         {0x66, 0, 0, 0, 0},
11009         {0x67, 0, 0, 0, 0},
11010         {0x68, 0x40, 0x40, 0, 0},
11011         {0x69, 0, 0, 0, 0},
11012         {0x6A, 0, 0, 0, 0},
11013         {0x6B, 0, 0, 0, 0},
11014         {0x6C, 0, 0, 0, 0},
11015         {0x6D, 0x1, 0x1, 0, 0},
11016         {0x6E, 0, 0, 0, 0},
11017         {0x6F, 0, 0, 0, 0},
11018         {0x70, 0x60, 0x60, 0, 0},
11019         {0x71, 0x66, 0x66, 0, 0},
11020         {0x72, 0xc, 0xc, 0, 0},
11021         {0x73, 0x66, 0x66, 0, 0},
11022         {0x74, 0x8f, 0x8f, 1, 1},
11023         {0x75, 0, 0, 0, 0},
11024         {0x76, 0xcc, 0xcc, 0, 0},
11025         {0x77, 0x1, 0x1, 0, 0},
11026         {0x78, 0x66, 0x66, 0, 0},
11027         {0x79, 0x66, 0x66, 0, 0},
11028         {0x7A, 0, 0, 0, 0},
11029         {0x7B, 0, 0, 0, 0},
11030         {0x7C, 0, 0, 0, 0},
11031         {0x7D, 0, 0, 0, 0},
11032         {0x7E, 0, 0, 0, 0},
11033         {0x7F, 0, 0, 0, 0},
11034         {0x80, 0, 0, 0, 0},
11035         {0x81, 0, 0, 0, 0},
11036         {0x82, 0, 0, 0, 0},
11037         {0x83, 0, 0, 0, 0},
11038         {0x84, 0, 0, 0, 0},
11039         {0x85, 0xff, 0xff, 0, 0},
11040         {0x86, 0, 0, 0, 0},
11041         {0x87, 0, 0, 0, 0},
11042         {0x88, 0, 0, 0, 0},
11043         {0x89, 0, 0, 0, 0},
11044         {0x8A, 0, 0, 0, 0},
11045         {0x8B, 0, 0, 0, 0},
11046         {0x8C, 0, 0, 0, 0},
11047         {0x8D, 0, 0, 0, 0},
11048         {0x8E, 0, 0, 0, 0},
11049         {0x8F, 0, 0, 0, 0},
11050         {0x90, 0, 0, 0, 0},
11051         {0x91, 0, 0, 0, 0},
11052         {0x92, 0, 0, 0, 0},
11053         {0x93, 0, 0, 0, 0},
11054         {0x94, 0, 0, 0, 0},
11055         {0x95, 0, 0, 0, 0},
11056         {0x96, 0, 0, 0, 0},
11057         {0x97, 0, 0, 0, 0},
11058         {0x98, 0, 0, 0, 0},
11059         {0x99, 0, 0, 0, 0},
11060         {0x9A, 0, 0, 0, 0},
11061         {0x9B, 0, 0, 0, 0},
11062         {0x9C, 0, 0, 0, 0},
11063         {0x9D, 0, 0, 0, 0},
11064         {0x9E, 0, 0, 0, 0},
11065         {0x9F, 0x6, 0x6, 0, 0},
11066         {0xA0, 0x66, 0x66, 0, 0},
11067         {0xA1, 0x66, 0x66, 0, 0},
11068         {0xA2, 0x66, 0x66, 0, 0},
11069         {0xA3, 0x66, 0x66, 0, 0},
11070         {0xA4, 0x66, 0x66, 0, 0},
11071         {0xA5, 0x66, 0x66, 0, 0},
11072         {0xA6, 0x66, 0x66, 0, 0},
11073         {0xA7, 0x66, 0x66, 0, 0},
11074         {0xA8, 0x66, 0x66, 0, 0},
11075         {0xA9, 0x66, 0x66, 0, 0},
11076         {0xAA, 0x66, 0x66, 0, 0},
11077         {0xAB, 0x66, 0x66, 0, 0},
11078         {0xAC, 0x66, 0x66, 0, 0},
11079         {0xAD, 0x66, 0x66, 0, 0},
11080         {0xAE, 0x66, 0x66, 0, 0},
11081         {0xAF, 0x66, 0x66, 0, 0},
11082         {0xB0, 0x66, 0x66, 0, 0},
11083         {0xB1, 0x66, 0x66, 0, 0},
11084         {0xB2, 0x66, 0x66, 0, 0},
11085         {0xB3, 0xa, 0xa, 0, 0},
11086         {0xB4, 0, 0, 0, 0},
11087         {0xB5, 0, 0, 0, 0},
11088         {0xB6, 0, 0, 0, 0},
11089         {0xFFFF, 0, 0, 0, 0},
11090 };
11091
11092 radio_regs_t regs_TX_2056_rev11[] = {
11093         {0x02, 0, 0, 0, 0},
11094         {0x03, 0, 0, 0, 0},
11095         {0x04, 0, 0, 0, 0},
11096         {0x05, 0, 0, 0, 0},
11097         {0x06, 0, 0, 0, 0},
11098         {0x07, 0, 0, 0, 0},
11099         {0x08, 0, 0, 0, 0},
11100         {0x09, 0, 0, 0, 0},
11101         {0x0A, 0, 0, 0, 0},
11102         {0x0B, 0, 0, 0, 0},
11103         {0x0C, 0, 0, 0, 0},
11104         {0x0D, 0, 0, 0, 0},
11105         {0x0E, 0, 0, 0, 0},
11106         {0x0F, 0, 0, 0, 0},
11107         {0x10, 0, 0, 0, 0},
11108         {0x11, 0, 0, 0, 0},
11109         {0x12, 0, 0, 0, 0},
11110         {0x13, 0, 0, 0, 0},
11111         {0x14, 0, 0, 0, 0},
11112         {0x15, 0, 0, 0, 0},
11113         {0x16, 0, 0, 0, 0},
11114         {0x17, 0, 0, 0, 0},
11115         {0x18, 0, 0, 0, 0},
11116         {0x19, 0, 0, 0, 0},
11117         {0x1A, 0, 0, 0, 0},
11118         {0x1B, 0, 0, 0, 0},
11119         {0x1C, 0, 0, 0, 0},
11120         {0x1D, 0, 0, 0, 0},
11121         {0x1E, 0, 0, 0, 0},
11122         {0x1F, 0, 0, 0, 0},
11123         {0x20, 0, 0, 0, 0},
11124         {0x21, 0x88, 0x88, 0, 0},
11125         {0x22, 0x88, 0x88, 0, 0},
11126         {0x23, 0x88, 0x88, 0, 0},
11127         {0x24, 0x88, 0x88, 0, 0},
11128         {0x25, 0xc, 0xc, 0, 0},
11129         {0x26, 0, 0, 0, 0},
11130         {0x27, 0x3, 0x3, 0, 0},
11131         {0x28, 0, 0, 0, 0},
11132         {0x29, 0x3, 0x3, 0, 0},
11133         {0x2A, 0x37, 0x37, 0, 0},
11134         {0x2B, 0x3, 0x3, 0, 0},
11135         {0x2C, 0, 0, 0, 0},
11136         {0x2D, 0, 0, 0, 0},
11137         {0x2E, 0x1, 0x1, 0, 0},
11138         {0x2F, 0x1, 0x1, 0, 0},
11139         {0x30, 0, 0, 0, 0},
11140         {0x31, 0, 0, 0, 0},
11141         {0x32, 0, 0, 0, 0},
11142         {0x33, 0x11, 0x11, 0, 0},
11143         {0x34, 0xee, 0xee, 1, 1},
11144         {0x35, 0, 0, 0, 0},
11145         {0x36, 0, 0, 0, 0},
11146         {0x37, 0x3, 0x3, 0, 0},
11147         {0x38, 0x50, 0x50, 1, 1},
11148         {0x39, 0, 0, 0, 0},
11149         {0x3A, 0x50, 0x50, 1, 1},
11150         {0x3B, 0, 0, 0, 0},
11151         {0x3C, 0x6e, 0x6e, 0, 0},
11152         {0x3D, 0xf0, 0xf0, 1, 1},
11153         {0x3E, 0, 0, 0, 0},
11154         {0x3F, 0, 0, 0, 0},
11155         {0x40, 0, 0, 0, 0},
11156         {0x41, 0x3, 0x3, 0, 0},
11157         {0x42, 0x3, 0x3, 0, 0},
11158         {0x43, 0, 0, 0, 0},
11159         {0x44, 0x1e, 0x1e, 0, 0},
11160         {0x45, 0, 0, 0, 0},
11161         {0x46, 0x6e, 0x6e, 0, 0},
11162         {0x47, 0xf0, 0xf0, 1, 1},
11163         {0x48, 0, 0, 0, 0},
11164         {0x49, 0x2, 0x2, 0, 0},
11165         {0x4A, 0xff, 0xff, 1, 1},
11166         {0x4B, 0xc, 0xc, 0, 0},
11167         {0x4C, 0, 0, 0, 0},
11168         {0x4D, 0x38, 0x38, 0, 0},
11169         {0x4E, 0x70, 0x70, 1, 1},
11170         {0x4F, 0x2, 0x2, 0, 0},
11171         {0x50, 0x88, 0x88, 0, 0},
11172         {0x51, 0xc, 0xc, 0, 0},
11173         {0x52, 0, 0, 0, 0},
11174         {0x53, 0x8, 0x8, 0, 0},
11175         {0x54, 0x70, 0x70, 1, 1},
11176         {0x55, 0x2, 0x2, 0, 0},
11177         {0x56, 0xff, 0xff, 1, 1},
11178         {0x57, 0, 0, 0, 0},
11179         {0x58, 0x83, 0x83, 0, 0},
11180         {0x59, 0x77, 0x77, 1, 1},
11181         {0x5A, 0, 0, 0, 0},
11182         {0x5B, 0x2, 0x2, 0, 0},
11183         {0x5C, 0x88, 0x88, 0, 0},
11184         {0x5D, 0, 0, 0, 0},
11185         {0x5E, 0x8, 0x8, 0, 0},
11186         {0x5F, 0x77, 0x77, 1, 1},
11187         {0x60, 0x1, 0x1, 0, 0},
11188         {0x61, 0, 0, 0, 0},
11189         {0x62, 0x7, 0x7, 0, 0},
11190         {0x63, 0, 0, 0, 0},
11191         {0x64, 0x7, 0x7, 0, 0},
11192         {0x65, 0, 0, 0, 0},
11193         {0x66, 0, 0, 0, 0},
11194         {0x67, 0, 0, 1, 1},
11195         {0x68, 0, 0, 0, 0},
11196         {0x69, 0xa, 0xa, 0, 0},
11197         {0x6A, 0, 0, 0, 0},
11198         {0x6B, 0, 0, 0, 0},
11199         {0x6C, 0, 0, 0, 0},
11200         {0x6D, 0, 0, 0, 0},
11201         {0x6E, 0, 0, 0, 0},
11202         {0x6F, 0, 0, 0, 0},
11203         {0x70, 0, 0, 0, 0},
11204         {0x71, 0x2, 0x2, 0, 0},
11205         {0x72, 0, 0, 0, 0},
11206         {0x73, 0, 0, 0, 0},
11207         {0x74, 0xe, 0xe, 0, 0},
11208         {0x75, 0xe, 0xe, 0, 0},
11209         {0x76, 0xe, 0xe, 0, 0},
11210         {0x77, 0x13, 0x13, 0, 0},
11211         {0x78, 0x13, 0x13, 0, 0},
11212         {0x79, 0x1b, 0x1b, 0, 0},
11213         {0x7A, 0x1b, 0x1b, 0, 0},
11214         {0x7B, 0x55, 0x55, 0, 0},
11215         {0x7C, 0x5b, 0x5b, 0, 0},
11216         {0x7D, 0x30, 0x30, 1, 1},
11217         {0x7E, 0, 0, 0, 0},
11218         {0x7F, 0, 0, 0, 0},
11219         {0x80, 0, 0, 0, 0},
11220         {0x81, 0, 0, 0, 0},
11221         {0x82, 0, 0, 0, 0},
11222         {0x83, 0, 0, 0, 0},
11223         {0x84, 0, 0, 0, 0},
11224         {0x85, 0, 0, 0, 0},
11225         {0x86, 0, 0, 0, 0},
11226         {0x87, 0, 0, 0, 0},
11227         {0x88, 0, 0, 0, 0},
11228         {0x89, 0, 0, 0, 0},
11229         {0x8A, 0, 0, 0, 0},
11230         {0x8B, 0, 0, 0, 0},
11231         {0x8C, 0, 0, 0, 0},
11232         {0x8D, 0, 0, 0, 0},
11233         {0x8E, 0, 0, 0, 0},
11234         {0x8F, 0, 0, 0, 0},
11235         {0x90, 0, 0, 0, 0},
11236         {0x91, 0, 0, 0, 0},
11237         {0x92, 0, 0, 0, 0},
11238         {0x93, 0x70, 0x70, 0, 0},
11239         {0x94, 0x70, 0x70, 0, 0},
11240         {0x95, 0x70, 0x70, 0, 0},
11241         {0x96, 0x70, 0x70, 0, 0},
11242         {0x97, 0x70, 0x70, 0, 0},
11243         {0x98, 0x70, 0x70, 0, 0},
11244         {0x99, 0x70, 0x70, 0, 0},
11245         {0x9A, 0x70, 0x70, 0, 0},
11246         {0xFFFF, 0, 0, 0, 0},
11247 };
11248
11249 radio_regs_t regs_RX_2056_rev11[] = {
11250         {0x02, 0, 0, 0, 0},
11251         {0x03, 0, 0, 0, 0},
11252         {0x04, 0, 0, 0, 0},
11253         {0x05, 0, 0, 0, 0},
11254         {0x06, 0, 0, 0, 0},
11255         {0x07, 0, 0, 0, 0},
11256         {0x08, 0, 0, 0, 0},
11257         {0x09, 0, 0, 0, 0},
11258         {0x0A, 0, 0, 0, 0},
11259         {0x0B, 0, 0, 0, 0},
11260         {0x0C, 0, 0, 0, 0},
11261         {0x0D, 0, 0, 0, 0},
11262         {0x0E, 0, 0, 0, 0},
11263         {0x0F, 0, 0, 0, 0},
11264         {0x10, 0, 0, 0, 0},
11265         {0x11, 0, 0, 0, 0},
11266         {0x12, 0, 0, 0, 0},
11267         {0x13, 0, 0, 0, 0},
11268         {0x14, 0, 0, 0, 0},
11269         {0x15, 0, 0, 0, 0},
11270         {0x16, 0, 0, 0, 0},
11271         {0x17, 0, 0, 0, 0},
11272         {0x18, 0, 0, 0, 0},
11273         {0x19, 0, 0, 0, 0},
11274         {0x1A, 0, 0, 0, 0},
11275         {0x1B, 0, 0, 0, 0},
11276         {0x1C, 0, 0, 0, 0},
11277         {0x1D, 0, 0, 0, 0},
11278         {0x1E, 0, 0, 0, 0},
11279         {0x1F, 0, 0, 0, 0},
11280         {0x20, 0x3, 0x3, 0, 0},
11281         {0x21, 0, 0, 0, 0},
11282         {0x22, 0, 0, 0, 0},
11283         {0x23, 0x90, 0x90, 0, 0},
11284         {0x24, 0x55, 0x55, 0, 0},
11285         {0x25, 0x15, 0x15, 0, 0},
11286         {0x26, 0x5, 0x5, 0, 0},
11287         {0x27, 0x15, 0x15, 0, 0},
11288         {0x28, 0x5, 0x5, 0, 0},
11289         {0x29, 0x20, 0x20, 0, 0},
11290         {0x2A, 0x11, 0x11, 0, 0},
11291         {0x2B, 0x90, 0x90, 0, 0},
11292         {0x2C, 0, 0, 0, 0},
11293         {0x2D, 0x88, 0x88, 0, 0},
11294         {0x2E, 0x32, 0x32, 0, 0},
11295         {0x2F, 0x77, 0x77, 0, 0},
11296         {0x30, 0x17, 0x17, 1, 1},
11297         {0x31, 0xff, 0xff, 1, 1},
11298         {0x32, 0x20, 0x20, 0, 0},
11299         {0x33, 0, 0, 0, 0},
11300         {0x34, 0x88, 0x88, 0, 0},
11301         {0x35, 0x32, 0x32, 0, 0},
11302         {0x36, 0x77, 0x77, 0, 0},
11303         {0x37, 0x17, 0x17, 1, 1},
11304         {0x38, 0xf0, 0xf0, 1, 1},
11305         {0x39, 0x20, 0x20, 0, 0},
11306         {0x3A, 0x8, 0x8, 0, 0},
11307         {0x3B, 0x55, 0x55, 1, 1},
11308         {0x3C, 0, 0, 0, 0},
11309         {0x3D, 0x88, 0x88, 1, 1},
11310         {0x3E, 0, 0, 0, 0},
11311         {0x3F, 0x44, 0x44, 0, 0},
11312         {0x40, 0x7, 0x7, 1, 1},
11313         {0x41, 0x6, 0x6, 0, 0},
11314         {0x42, 0x4, 0x4, 0, 0},
11315         {0x43, 0, 0, 0, 0},
11316         {0x44, 0x8, 0x8, 0, 0},
11317         {0x45, 0x55, 0x55, 1, 1},
11318         {0x46, 0, 0, 0, 0},
11319         {0x47, 0x11, 0x11, 0, 0},
11320         {0x48, 0, 0, 0, 0},
11321         {0x49, 0x44, 0x44, 0, 0},
11322         {0x4A, 0x7, 0x7, 0, 0},
11323         {0x4B, 0x6, 0x6, 0, 0},
11324         {0x4C, 0x4, 0x4, 0, 0},
11325         {0x4D, 0, 0, 0, 0},
11326         {0x4E, 0, 0, 0, 0},
11327         {0x4F, 0x26, 0x26, 1, 1},
11328         {0x50, 0x26, 0x26, 1, 1},
11329         {0x51, 0xf, 0xf, 1, 1},
11330         {0x52, 0xf, 0xf, 1, 1},
11331         {0x53, 0x44, 0x44, 0, 0},
11332         {0x54, 0, 0, 0, 0},
11333         {0x55, 0, 0, 0, 0},
11334         {0x56, 0x8, 0x8, 0, 0},
11335         {0x57, 0x8, 0x8, 0, 0},
11336         {0x58, 0x7, 0x7, 0, 0},
11337         {0x59, 0x22, 0x22, 0, 0},
11338         {0x5A, 0x22, 0x22, 0, 0},
11339         {0x5B, 0x2, 0x2, 0, 0},
11340         {0x5C, 0x4, 0x4, 1, 1},
11341         {0x5D, 0x7, 0x7, 0, 0},
11342         {0x5E, 0x55, 0x55, 0, 0},
11343         {0x5F, 0x23, 0x23, 0, 0},
11344         {0x60, 0x41, 0x41, 0, 0},
11345         {0x61, 0x1, 0x1, 0, 0},
11346         {0x62, 0xa, 0xa, 0, 0},
11347         {0x63, 0, 0, 0, 0},
11348         {0x64, 0, 0, 0, 0},
11349         {0x65, 0, 0, 0, 0},
11350         {0x66, 0, 0, 0, 0},
11351         {0x67, 0, 0, 0, 0},
11352         {0x68, 0, 0, 0, 0},
11353         {0x69, 0, 0, 0, 0},
11354         {0x6A, 0, 0, 0, 0},
11355         {0x6B, 0xc, 0xc, 0, 0},
11356         {0x6C, 0, 0, 0, 0},
11357         {0x6D, 0, 0, 0, 0},
11358         {0x6E, 0, 0, 0, 0},
11359         {0x6F, 0, 0, 0, 0},
11360         {0x70, 0, 0, 0, 0},
11361         {0x71, 0, 0, 0, 0},
11362         {0x72, 0x22, 0x22, 0, 0},
11363         {0x73, 0x22, 0x22, 0, 0},
11364         {0x74, 0, 0, 1, 1},
11365         {0x75, 0xa, 0xa, 0, 0},
11366         {0x76, 0x1, 0x1, 0, 0},
11367         {0x77, 0x22, 0x22, 0, 0},
11368         {0x78, 0x30, 0x30, 0, 0},
11369         {0x79, 0, 0, 0, 0},
11370         {0x7A, 0, 0, 0, 0},
11371         {0x7B, 0, 0, 0, 0},
11372         {0x7C, 0, 0, 0, 0},
11373         {0x7D, 0x5, 0x5, 1, 1},
11374         {0x7E, 0, 0, 0, 0},
11375         {0x7F, 0, 0, 0, 0},
11376         {0x80, 0, 0, 0, 0},
11377         {0x81, 0, 0, 0, 0},
11378         {0x82, 0, 0, 0, 0},
11379         {0x83, 0, 0, 0, 0},
11380         {0x84, 0, 0, 0, 0},
11381         {0x85, 0, 0, 0, 0},
11382         {0x86, 0, 0, 0, 0},
11383         {0x87, 0, 0, 0, 0},
11384         {0x88, 0, 0, 0, 0},
11385         {0x89, 0, 0, 0, 0},
11386         {0x8A, 0, 0, 0, 0},
11387         {0x8B, 0, 0, 0, 0},
11388         {0x8C, 0, 0, 0, 0},
11389         {0x8D, 0, 0, 0, 0},
11390         {0x8E, 0, 0, 0, 0},
11391         {0x8F, 0, 0, 0, 0},
11392         {0x90, 0, 0, 0, 0},
11393         {0x91, 0, 0, 0, 0},
11394         {0x92, 0, 0, 0, 0},
11395         {0x93, 0, 0, 0, 0},
11396         {0x94, 0, 0, 0, 0},
11397         {0xFFFF, 0, 0, 0, 0},
11398 };
11399
11400 radio_20xx_regs_t regs_2057_rev4[] = {
11401         {0x00, 0x84, 0},
11402         {0x01, 0, 0},
11403         {0x02, 0x60, 0},
11404         {0x03, 0x1f, 0},
11405         {0x04, 0x4, 0},
11406         {0x05, 0x2, 0},
11407         {0x06, 0x1, 0},
11408         {0x07, 0x1, 0},
11409         {0x08, 0x1, 0},
11410         {0x09, 0x69, 0},
11411         {0x0A, 0x66, 0},
11412         {0x0B, 0x6, 0},
11413         {0x0C, 0x18, 0},
11414         {0x0D, 0x3, 0},
11415         {0x0E, 0x20, 1},
11416         {0x0F, 0x20, 0},
11417         {0x10, 0, 0},
11418         {0x11, 0x7c, 0},
11419         {0x12, 0x42, 0},
11420         {0x13, 0xbd, 0},
11421         {0x14, 0x7, 0},
11422         {0x15, 0xf7, 0},
11423         {0x16, 0x8, 0},
11424         {0x17, 0x17, 0},
11425         {0x18, 0x7, 0},
11426         {0x19, 0, 0},
11427         {0x1A, 0x2, 0},
11428         {0x1B, 0x13, 0},
11429         {0x1C, 0x3e, 0},
11430         {0x1D, 0x3e, 0},
11431         {0x1E, 0x96, 0},
11432         {0x1F, 0x4, 0},
11433         {0x20, 0, 0},
11434         {0x21, 0, 0},
11435         {0x22, 0x17, 0},
11436         {0x23, 0x4, 0},
11437         {0x24, 0x1, 0},
11438         {0x25, 0x6, 0},
11439         {0x26, 0x4, 0},
11440         {0x27, 0xd, 0},
11441         {0x28, 0xd, 0},
11442         {0x29, 0x30, 0},
11443         {0x2A, 0x32, 0},
11444         {0x2B, 0x8, 0},
11445         {0x2C, 0x1c, 0},
11446         {0x2D, 0x2, 0},
11447         {0x2E, 0x4, 0},
11448         {0x2F, 0x7f, 0},
11449         {0x30, 0x27, 0},
11450         {0x31, 0, 1},
11451         {0x32, 0, 1},
11452         {0x33, 0, 1},
11453         {0x34, 0, 0},
11454         {0x35, 0x26, 1},
11455         {0x36, 0x18, 0},
11456         {0x37, 0x7, 0},
11457         {0x38, 0x66, 0},
11458         {0x39, 0x66, 0},
11459         {0x3A, 0x66, 0},
11460         {0x3B, 0x66, 0},
11461         {0x3C, 0xff, 1},
11462         {0x3D, 0xff, 1},
11463         {0x3E, 0xff, 1},
11464         {0x3F, 0xff, 1},
11465         {0x40, 0x16, 0},
11466         {0x41, 0x7, 0},
11467         {0x42, 0x19, 0},
11468         {0x43, 0x7, 0},
11469         {0x44, 0x6, 0},
11470         {0x45, 0x3, 0},
11471         {0x46, 0x1, 0},
11472         {0x47, 0x7, 0},
11473         {0x48, 0x33, 0},
11474         {0x49, 0x5, 0},
11475         {0x4A, 0x77, 0},
11476         {0x4B, 0x66, 0},
11477         {0x4C, 0x66, 0},
11478         {0x4D, 0, 0},
11479         {0x4E, 0x4, 0},
11480         {0x4F, 0xc, 0},
11481         {0x50, 0, 0},
11482         {0x51, 0x75, 0},
11483         {0x56, 0x7, 0},
11484         {0x57, 0, 0},
11485         {0x58, 0, 0},
11486         {0x59, 0xa8, 0},
11487         {0x5A, 0, 0},
11488         {0x5B, 0x1f, 0},
11489         {0x5C, 0x30, 0},
11490         {0x5D, 0x1, 0},
11491         {0x5E, 0x30, 0},
11492         {0x5F, 0x70, 0},
11493         {0x60, 0, 0},
11494         {0x61, 0, 0},
11495         {0x62, 0x33, 1},
11496         {0x63, 0x19, 0},
11497         {0x64, 0x62, 0},
11498         {0x65, 0, 0},
11499         {0x66, 0x11, 0},
11500         {0x69, 0, 0},
11501         {0x6A, 0x7e, 0},
11502         {0x6B, 0x3f, 0},
11503         {0x6C, 0x7f, 0},
11504         {0x6D, 0x78, 0},
11505         {0x6E, 0xc8, 0},
11506         {0x6F, 0x88, 0},
11507         {0x70, 0x8, 0},
11508         {0x71, 0xf, 0},
11509         {0x72, 0xbc, 0},
11510         {0x73, 0x8, 0},
11511         {0x74, 0x60, 0},
11512         {0x75, 0x1e, 0},
11513         {0x76, 0x70, 0},
11514         {0x77, 0, 0},
11515         {0x78, 0, 0},
11516         {0x79, 0, 0},
11517         {0x7A, 0x33, 0},
11518         {0x7B, 0x1e, 0},
11519         {0x7C, 0x62, 0},
11520         {0x7D, 0x11, 0},
11521         {0x80, 0x3c, 0},
11522         {0x81, 0x9c, 0},
11523         {0x82, 0xa, 0},
11524         {0x83, 0x9d, 0},
11525         {0x84, 0xa, 0},
11526         {0x85, 0, 0},
11527         {0x86, 0x40, 0},
11528         {0x87, 0x40, 0},
11529         {0x88, 0x88, 0},
11530         {0x89, 0x10, 0},
11531         {0x8A, 0xf0, 1},
11532         {0x8B, 0x10, 1},
11533         {0x8C, 0xf0, 1},
11534         {0x8D, 0, 0},
11535         {0x8E, 0, 0},
11536         {0x8F, 0x10, 0},
11537         {0x90, 0x55, 0},
11538         {0x91, 0x3f, 1},
11539         {0x92, 0x36, 1},
11540         {0x93, 0, 0},
11541         {0x94, 0, 0},
11542         {0x95, 0, 0},
11543         {0x96, 0x87, 0},
11544         {0x97, 0x11, 0},
11545         {0x98, 0, 0},
11546         {0x99, 0x33, 0},
11547         {0x9A, 0x88, 0},
11548         {0x9B, 0, 0},
11549         {0x9C, 0x87, 0},
11550         {0x9D, 0x11, 0},
11551         {0x9E, 0, 0},
11552         {0x9F, 0x33, 0},
11553         {0xA0, 0x88, 0},
11554         {0xA1, 0xe1, 0},
11555         {0xA2, 0x3f, 0},
11556         {0xA3, 0x44, 0},
11557         {0xA4, 0x8c, 1},
11558         {0xA5, 0x6d, 0},
11559         {0xA6, 0x22, 0},
11560         {0xA7, 0xbe, 0},
11561         {0xA8, 0x55, 1},
11562         {0xA9, 0xc, 0},
11563         {0xAA, 0xc, 0},
11564         {0xAB, 0xaa, 0},
11565         {0xAC, 0x2, 0},
11566         {0xAD, 0, 0},
11567         {0xAE, 0x10, 0},
11568         {0xAF, 0x1, 1},
11569         {0xB0, 0, 0},
11570         {0xB1, 0, 0},
11571         {0xB2, 0x80, 0},
11572         {0xB3, 0x60, 0},
11573         {0xB4, 0x44, 0},
11574         {0xB5, 0x55, 0},
11575         {0xB6, 0x1, 0},
11576         {0xB7, 0x55, 0},
11577         {0xB8, 0x1, 0},
11578         {0xB9, 0x5, 0},
11579         {0xBA, 0x55, 0},
11580         {0xBB, 0x55, 0},
11581         {0xC1, 0, 0},
11582         {0xC2, 0, 0},
11583         {0xC3, 0, 0},
11584         {0xC4, 0, 0},
11585         {0xC5, 0, 0},
11586         {0xC6, 0, 0},
11587         {0xC7, 0, 0},
11588         {0xC8, 0, 0},
11589         {0xC9, 0, 0},
11590         {0xCA, 0, 0},
11591         {0xCB, 0, 0},
11592         {0xCC, 0, 0},
11593         {0xCD, 0, 0},
11594         {0xCE, 0x5e, 0},
11595         {0xCF, 0xc, 0},
11596         {0xD0, 0xc, 0},
11597         {0xD1, 0xc, 0},
11598         {0xD2, 0, 0},
11599         {0xD3, 0x2b, 0},
11600         {0xD4, 0xc, 0},
11601         {0xD5, 0, 0},
11602         {0xD6, 0x75, 0},
11603         {0xDB, 0x7, 0},
11604         {0xDC, 0, 0},
11605         {0xDD, 0, 0},
11606         {0xDE, 0xa8, 0},
11607         {0xDF, 0, 0},
11608         {0xE0, 0x1f, 0},
11609         {0xE1, 0x30, 0},
11610         {0xE2, 0x1, 0},
11611         {0xE3, 0x30, 0},
11612         {0xE4, 0x70, 0},
11613         {0xE5, 0, 0},
11614         {0xE6, 0, 0},
11615         {0xE7, 0x33, 0},
11616         {0xE8, 0x19, 0},
11617         {0xE9, 0x62, 0},
11618         {0xEA, 0, 0},
11619         {0xEB, 0x11, 0},
11620         {0xEE, 0, 0},
11621         {0xEF, 0x7e, 0},
11622         {0xF0, 0x3f, 0},
11623         {0xF1, 0x7f, 0},
11624         {0xF2, 0x78, 0},
11625         {0xF3, 0xc8, 0},
11626         {0xF4, 0x88, 0},
11627         {0xF5, 0x8, 0},
11628         {0xF6, 0xf, 0},
11629         {0xF7, 0xbc, 0},
11630         {0xF8, 0x8, 0},
11631         {0xF9, 0x60, 0},
11632         {0xFA, 0x1e, 0},
11633         {0xFB, 0x70, 0},
11634         {0xFC, 0, 0},
11635         {0xFD, 0, 0},
11636         {0xFE, 0, 0},
11637         {0xFF, 0x33, 0},
11638         {0x100, 0x1e, 0},
11639         {0x101, 0x62, 0},
11640         {0x102, 0x11, 0},
11641         {0x105, 0x3c, 0},
11642         {0x106, 0x9c, 0},
11643         {0x107, 0xa, 0},
11644         {0x108, 0x9d, 0},
11645         {0x109, 0xa, 0},
11646         {0x10A, 0, 0},
11647         {0x10B, 0x40, 0},
11648         {0x10C, 0x40, 0},
11649         {0x10D, 0x88, 0},
11650         {0x10E, 0x10, 0},
11651         {0x10F, 0xf0, 1},
11652         {0x110, 0x10, 1},
11653         {0x111, 0xf0, 1},
11654         {0x112, 0, 0},
11655         {0x113, 0, 0},
11656         {0x114, 0x10, 0},
11657         {0x115, 0x55, 0},
11658         {0x116, 0x3f, 1},
11659         {0x117, 0x36, 1},
11660         {0x118, 0, 0},
11661         {0x119, 0, 0},
11662         {0x11A, 0, 0},
11663         {0x11B, 0x87, 0},
11664         {0x11C, 0x11, 0},
11665         {0x11D, 0, 0},
11666         {0x11E, 0x33, 0},
11667         {0x11F, 0x88, 0},
11668         {0x120, 0, 0},
11669         {0x121, 0x87, 0},
11670         {0x122, 0x11, 0},
11671         {0x123, 0, 0},
11672         {0x124, 0x33, 0},
11673         {0x125, 0x88, 0},
11674         {0x126, 0xe1, 0},
11675         {0x127, 0x3f, 0},
11676         {0x128, 0x44, 0},
11677         {0x129, 0x8c, 1},
11678         {0x12A, 0x6d, 0},
11679         {0x12B, 0x22, 0},
11680         {0x12C, 0xbe, 0},
11681         {0x12D, 0x55, 1},
11682         {0x12E, 0xc, 0},
11683         {0x12F, 0xc, 0},
11684         {0x130, 0xaa, 0},
11685         {0x131, 0x2, 0},
11686         {0x132, 0, 0},
11687         {0x133, 0x10, 0},
11688         {0x134, 0x1, 1},
11689         {0x135, 0, 0},
11690         {0x136, 0, 0},
11691         {0x137, 0x80, 0},
11692         {0x138, 0x60, 0},
11693         {0x139, 0x44, 0},
11694         {0x13A, 0x55, 0},
11695         {0x13B, 0x1, 0},
11696         {0x13C, 0x55, 0},
11697         {0x13D, 0x1, 0},
11698         {0x13E, 0x5, 0},
11699         {0x13F, 0x55, 0},
11700         {0x140, 0x55, 0},
11701         {0x146, 0, 0},
11702         {0x147, 0, 0},
11703         {0x148, 0, 0},
11704         {0x149, 0, 0},
11705         {0x14A, 0, 0},
11706         {0x14B, 0, 0},
11707         {0x14C, 0, 0},
11708         {0x14D, 0, 0},
11709         {0x14E, 0, 0},
11710         {0x14F, 0, 0},
11711         {0x150, 0, 0},
11712         {0x151, 0, 0},
11713         {0x152, 0, 0},
11714         {0x153, 0, 0},
11715         {0x154, 0xc, 0},
11716         {0x155, 0xc, 0},
11717         {0x156, 0xc, 0},
11718         {0x157, 0, 0},
11719         {0x158, 0x2b, 0},
11720         {0x159, 0x84, 0},
11721         {0x15A, 0x15, 0},
11722         {0x15B, 0xf, 0},
11723         {0x15C, 0, 0},
11724         {0x15D, 0, 0},
11725         {0x15E, 0, 1},
11726         {0x15F, 0, 1},
11727         {0x160, 0, 1},
11728         {0x161, 0, 1},
11729         {0x162, 0, 1},
11730         {0x163, 0, 1},
11731         {0x164, 0, 0},
11732         {0x165, 0, 0},
11733         {0x166, 0, 0},
11734         {0x167, 0, 0},
11735         {0x168, 0, 0},
11736         {0x169, 0x2, 1},
11737         {0x16A, 0, 1},
11738         {0x16B, 0, 1},
11739         {0x16C, 0, 1},
11740         {0x16D, 0, 0},
11741         {0x170, 0, 0},
11742         {0x171, 0x77, 0},
11743         {0x172, 0x77, 0},
11744         {0x173, 0x77, 0},
11745         {0x174, 0x77, 0},
11746         {0x175, 0, 0},
11747         {0x176, 0x3, 0},
11748         {0x177, 0x37, 0},
11749         {0x178, 0x3, 0},
11750         {0x179, 0, 0},
11751         {0x17A, 0x21, 0},
11752         {0x17B, 0x21, 0},
11753         {0x17C, 0, 0},
11754         {0x17D, 0xaa, 0},
11755         {0x17E, 0, 0},
11756         {0x17F, 0xaa, 0},
11757         {0x180, 0, 0},
11758         {0x190, 0, 0},
11759         {0x191, 0x77, 0},
11760         {0x192, 0x77, 0},
11761         {0x193, 0x77, 0},
11762         {0x194, 0x77, 0},
11763         {0x195, 0, 0},
11764         {0x196, 0x3, 0},
11765         {0x197, 0x37, 0},
11766         {0x198, 0x3, 0},
11767         {0x199, 0, 0},
11768         {0x19A, 0x21, 0},
11769         {0x19B, 0x21, 0},
11770         {0x19C, 0, 0},
11771         {0x19D, 0xaa, 0},
11772         {0x19E, 0, 0},
11773         {0x19F, 0xaa, 0},
11774         {0x1A0, 0, 0},
11775         {0x1A1, 0x2, 0},
11776         {0x1A2, 0xf, 0},
11777         {0x1A3, 0xf, 0},
11778         {0x1A4, 0, 1},
11779         {0x1A5, 0, 1},
11780         {0x1A6, 0, 1},
11781         {0x1A7, 0x2, 0},
11782         {0x1A8, 0xf, 0},
11783         {0x1A9, 0xf, 0},
11784         {0x1AA, 0, 1},
11785         {0x1AB, 0, 1},
11786         {0x1AC, 0, 1},
11787         {0xFFFF, 0, 0},
11788 };
11789
11790 radio_20xx_regs_t regs_2057_rev5[] = {
11791         {0x00, 0, 1},
11792         {0x01, 0x57, 1},
11793         {0x02, 0x20, 1},
11794         {0x03, 0x1f, 0},
11795         {0x04, 0x4, 0},
11796         {0x05, 0x2, 0},
11797         {0x06, 0x1, 0},
11798         {0x07, 0x1, 0},
11799         {0x08, 0x1, 0},
11800         {0x09, 0x69, 0},
11801         {0x0A, 0x66, 0},
11802         {0x0B, 0x6, 0},
11803         {0x0C, 0x18, 0},
11804         {0x0D, 0x3, 0},
11805         {0x0E, 0x20, 0},
11806         {0x0F, 0x20, 0},
11807         {0x10, 0, 0},
11808         {0x11, 0x7c, 0},
11809         {0x12, 0x42, 0},
11810         {0x13, 0xbd, 0},
11811         {0x14, 0x7, 0},
11812         {0x15, 0x87, 0},
11813         {0x16, 0x8, 0},
11814         {0x17, 0x17, 0},
11815         {0x18, 0x7, 0},
11816         {0x19, 0, 0},
11817         {0x1A, 0x2, 0},
11818         {0x1B, 0x13, 0},
11819         {0x1C, 0x3e, 0},
11820         {0x1D, 0x3e, 0},
11821         {0x1E, 0x96, 0},
11822         {0x1F, 0x4, 0},
11823         {0x20, 0, 0},
11824         {0x21, 0, 0},
11825         {0x22, 0x17, 0},
11826         {0x23, 0x6, 1},
11827         {0x24, 0x1, 0},
11828         {0x25, 0x6, 0},
11829         {0x26, 0x4, 0},
11830         {0x27, 0xd, 0},
11831         {0x28, 0xd, 0},
11832         {0x29, 0x30, 0},
11833         {0x2A, 0x32, 0},
11834         {0x2B, 0x8, 0},
11835         {0x2C, 0x1c, 0},
11836         {0x2D, 0x2, 0},
11837         {0x2E, 0x4, 0},
11838         {0x2F, 0x7f, 0},
11839         {0x30, 0x27, 0},
11840         {0x31, 0, 1},
11841         {0x32, 0, 1},
11842         {0x33, 0, 1},
11843         {0x34, 0, 0},
11844         {0x35, 0x20, 0},
11845         {0x36, 0x18, 0},
11846         {0x37, 0x7, 0},
11847         {0x38, 0x66, 0},
11848         {0x39, 0x66, 0},
11849         {0x3C, 0xff, 0},
11850         {0x3D, 0xff, 0},
11851         {0x40, 0x16, 0},
11852         {0x41, 0x7, 0},
11853         {0x45, 0x3, 0},
11854         {0x46, 0x1, 0},
11855         {0x47, 0x7, 0},
11856         {0x4B, 0x66, 0},
11857         {0x4C, 0x66, 0},
11858         {0x4D, 0, 0},
11859         {0x4E, 0x4, 0},
11860         {0x4F, 0xc, 0},
11861         {0x50, 0, 0},
11862         {0x51, 0x70, 1},
11863         {0x56, 0x7, 0},
11864         {0x57, 0, 0},
11865         {0x58, 0, 0},
11866         {0x59, 0x88, 1},
11867         {0x5A, 0, 0},
11868         {0x5B, 0x1f, 0},
11869         {0x5C, 0x20, 1},
11870         {0x5D, 0x1, 0},
11871         {0x5E, 0x30, 0},
11872         {0x5F, 0x70, 0},
11873         {0x60, 0, 0},
11874         {0x61, 0, 0},
11875         {0x62, 0x33, 1},
11876         {0x63, 0xf, 1},
11877         {0x64, 0xf, 1},
11878         {0x65, 0, 0},
11879         {0x66, 0x11, 0},
11880         {0x80, 0x3c, 0},
11881         {0x81, 0x1, 1},
11882         {0x82, 0xa, 0},
11883         {0x85, 0, 0},
11884         {0x86, 0x40, 0},
11885         {0x87, 0x40, 0},
11886         {0x88, 0x88, 0},
11887         {0x89, 0x10, 0},
11888         {0x8A, 0xf0, 0},
11889         {0x8B, 0x10, 0},
11890         {0x8C, 0xf0, 0},
11891         {0x8F, 0x10, 0},
11892         {0x90, 0x55, 0},
11893         {0x91, 0x3f, 1},
11894         {0x92, 0x36, 1},
11895         {0x93, 0, 0},
11896         {0x94, 0, 0},
11897         {0x95, 0, 0},
11898         {0x96, 0x87, 0},
11899         {0x97, 0x11, 0},
11900         {0x98, 0, 0},
11901         {0x99, 0x33, 0},
11902         {0x9A, 0x88, 0},
11903         {0xA1, 0x20, 1},
11904         {0xA2, 0x3f, 0},
11905         {0xA3, 0x44, 0},
11906         {0xA4, 0x8c, 0},
11907         {0xA5, 0x6c, 0},
11908         {0xA6, 0x22, 0},
11909         {0xA7, 0xbe, 0},
11910         {0xA8, 0x55, 0},
11911         {0xAA, 0xc, 0},
11912         {0xAB, 0xaa, 0},
11913         {0xAC, 0x2, 0},
11914         {0xAD, 0, 0},
11915         {0xAE, 0x10, 0},
11916         {0xAF, 0x1, 0},
11917         {0xB0, 0, 0},
11918         {0xB1, 0, 0},
11919         {0xB2, 0x80, 0},
11920         {0xB3, 0x60, 0},
11921         {0xB4, 0x44, 0},
11922         {0xB5, 0x55, 0},
11923         {0xB6, 0x1, 0},
11924         {0xB7, 0x55, 0},
11925         {0xB8, 0x1, 0},
11926         {0xB9, 0x5, 0},
11927         {0xBA, 0x55, 0},
11928         {0xBB, 0x55, 0},
11929         {0xC3, 0, 0},
11930         {0xC4, 0, 0},
11931         {0xC5, 0, 0},
11932         {0xC6, 0, 0},
11933         {0xC7, 0, 0},
11934         {0xC8, 0, 0},
11935         {0xC9, 0, 0},
11936         {0xCA, 0, 0},
11937         {0xCB, 0, 0},
11938         {0xCD, 0, 0},
11939         {0xCE, 0x5e, 0},
11940         {0xCF, 0xc, 0},
11941         {0xD0, 0xc, 0},
11942         {0xD1, 0xc, 0},
11943         {0xD2, 0, 0},
11944         {0xD3, 0x2b, 0},
11945         {0xD4, 0xc, 0},
11946         {0xD5, 0, 0},
11947         {0xD6, 0x70, 1},
11948         {0xDB, 0x7, 0},
11949         {0xDC, 0, 0},
11950         {0xDD, 0, 0},
11951         {0xDE, 0x88, 1},
11952         {0xDF, 0, 0},
11953         {0xE0, 0x1f, 0},
11954         {0xE1, 0x20, 1},
11955         {0xE2, 0x1, 0},
11956         {0xE3, 0x30, 0},
11957         {0xE4, 0x70, 0},
11958         {0xE5, 0, 0},
11959         {0xE6, 0, 0},
11960         {0xE7, 0x33, 0},
11961         {0xE8, 0xf, 1},
11962         {0xE9, 0xf, 1},
11963         {0xEA, 0, 0},
11964         {0xEB, 0x11, 0},
11965         {0x105, 0x3c, 0},
11966         {0x106, 0x1, 1},
11967         {0x107, 0xa, 0},
11968         {0x10A, 0, 0},
11969         {0x10B, 0x40, 0},
11970         {0x10C, 0x40, 0},
11971         {0x10D, 0x88, 0},
11972         {0x10E, 0x10, 0},
11973         {0x10F, 0xf0, 0},
11974         {0x110, 0x10, 0},
11975         {0x111, 0xf0, 0},
11976         {0x114, 0x10, 0},
11977         {0x115, 0x55, 0},
11978         {0x116, 0x3f, 1},
11979         {0x117, 0x36, 1},
11980         {0x118, 0, 0},
11981         {0x119, 0, 0},
11982         {0x11A, 0, 0},
11983         {0x11B, 0x87, 0},
11984         {0x11C, 0x11, 0},
11985         {0x11D, 0, 0},
11986         {0x11E, 0x33, 0},
11987         {0x11F, 0x88, 0},
11988         {0x126, 0x20, 1},
11989         {0x127, 0x3f, 0},
11990         {0x128, 0x44, 0},
11991         {0x129, 0x8c, 0},
11992         {0x12A, 0x6c, 0},
11993         {0x12B, 0x22, 0},
11994         {0x12C, 0xbe, 0},
11995         {0x12D, 0x55, 0},
11996         {0x12F, 0xc, 0},
11997         {0x130, 0xaa, 0},
11998         {0x131, 0x2, 0},
11999         {0x132, 0, 0},
12000         {0x133, 0x10, 0},
12001         {0x134, 0x1, 0},
12002         {0x135, 0, 0},
12003         {0x136, 0, 0},
12004         {0x137, 0x80, 0},
12005         {0x138, 0x60, 0},
12006         {0x139, 0x44, 0},
12007         {0x13A, 0x55, 0},
12008         {0x13B, 0x1, 0},
12009         {0x13C, 0x55, 0},
12010         {0x13D, 0x1, 0},
12011         {0x13E, 0x5, 0},
12012         {0x13F, 0x55, 0},
12013         {0x140, 0x55, 0},
12014         {0x148, 0, 0},
12015         {0x149, 0, 0},
12016         {0x14A, 0, 0},
12017         {0x14B, 0, 0},
12018         {0x14C, 0, 0},
12019         {0x14D, 0, 0},
12020         {0x14E, 0, 0},
12021         {0x14F, 0, 0},
12022         {0x150, 0, 0},
12023         {0x154, 0xc, 0},
12024         {0x155, 0xc, 0},
12025         {0x156, 0xc, 0},
12026         {0x157, 0, 0},
12027         {0x158, 0x2b, 0},
12028         {0x159, 0x84, 0},
12029         {0x15A, 0x15, 0},
12030         {0x15B, 0xf, 0},
12031         {0x15C, 0, 0},
12032         {0x15D, 0, 0},
12033         {0x15E, 0, 1},
12034         {0x15F, 0, 1},
12035         {0x160, 0, 1},
12036         {0x161, 0, 1},
12037         {0x162, 0, 1},
12038         {0x163, 0, 1},
12039         {0x164, 0, 0},
12040         {0x165, 0, 0},
12041         {0x166, 0, 0},
12042         {0x167, 0, 0},
12043         {0x168, 0, 0},
12044         {0x169, 0, 0},
12045         {0x16A, 0, 1},
12046         {0x16B, 0, 1},
12047         {0x16C, 0, 1},
12048         {0x16D, 0, 0},
12049         {0x170, 0, 0},
12050         {0x171, 0x77, 0},
12051         {0x172, 0x77, 0},
12052         {0x173, 0x77, 0},
12053         {0x174, 0x77, 0},
12054         {0x175, 0, 0},
12055         {0x176, 0x3, 0},
12056         {0x177, 0x37, 0},
12057         {0x178, 0x3, 0},
12058         {0x179, 0, 0},
12059         {0x17B, 0x21, 0},
12060         {0x17C, 0, 0},
12061         {0x17D, 0xaa, 0},
12062         {0x17E, 0, 0},
12063         {0x190, 0, 0},
12064         {0x191, 0x77, 0},
12065         {0x192, 0x77, 0},
12066         {0x193, 0x77, 0},
12067         {0x194, 0x77, 0},
12068         {0x195, 0, 0},
12069         {0x196, 0x3, 0},
12070         {0x197, 0x37, 0},
12071         {0x198, 0x3, 0},
12072         {0x199, 0, 0},
12073         {0x19B, 0x21, 0},
12074         {0x19C, 0, 0},
12075         {0x19D, 0xaa, 0},
12076         {0x19E, 0, 0},
12077         {0x1A1, 0x2, 0},
12078         {0x1A2, 0xf, 0},
12079         {0x1A3, 0xf, 0},
12080         {0x1A4, 0, 1},
12081         {0x1A5, 0, 1},
12082         {0x1A6, 0, 1},
12083         {0x1A7, 0x2, 0},
12084         {0x1A8, 0xf, 0},
12085         {0x1A9, 0xf, 0},
12086         {0x1AA, 0, 1},
12087         {0x1AB, 0, 1},
12088         {0x1AC, 0, 1},
12089         {0x1AD, 0x84, 0},
12090         {0x1AE, 0x60, 0},
12091         {0x1AF, 0x47, 0},
12092         {0x1B0, 0x47, 0},
12093         {0x1B1, 0, 0},
12094         {0x1B2, 0, 0},
12095         {0x1B3, 0, 0},
12096         {0x1B4, 0, 0},
12097         {0x1B5, 0, 0},
12098         {0x1B6, 0, 0},
12099         {0x1B7, 0xc, 1},
12100         {0x1B8, 0, 0},
12101         {0x1B9, 0, 0},
12102         {0x1BA, 0, 0},
12103         {0x1BB, 0, 0},
12104         {0x1BC, 0, 0},
12105         {0x1BD, 0, 0},
12106         {0x1BE, 0, 0},
12107         {0x1BF, 0, 0},
12108         {0x1C0, 0, 0},
12109         {0x1C1, 0x1, 1},
12110         {0x1C2, 0x80, 1},
12111         {0x1C3, 0, 0},
12112         {0x1C4, 0, 0},
12113         {0x1C5, 0, 0},
12114         {0x1C6, 0, 0},
12115         {0x1C7, 0, 0},
12116         {0x1C8, 0, 0},
12117         {0x1C9, 0, 0},
12118         {0x1CA, 0, 0},
12119         {0xFFFF, 0, 0}
12120 };
12121
12122 radio_20xx_regs_t regs_2057_rev5v1[] = {
12123         {0x00, 0x15, 1},
12124         {0x01, 0x57, 1},
12125         {0x02, 0x20, 1},
12126         {0x03, 0x1f, 0},
12127         {0x04, 0x4, 0},
12128         {0x05, 0x2, 0},
12129         {0x06, 0x1, 0},
12130         {0x07, 0x1, 0},
12131         {0x08, 0x1, 0},
12132         {0x09, 0x69, 0},
12133         {0x0A, 0x66, 0},
12134         {0x0B, 0x6, 0},
12135         {0x0C, 0x18, 0},
12136         {0x0D, 0x3, 0},
12137         {0x0E, 0x20, 0},
12138         {0x0F, 0x20, 0},
12139         {0x10, 0, 0},
12140         {0x11, 0x7c, 0},
12141         {0x12, 0x42, 0},
12142         {0x13, 0xbd, 0},
12143         {0x14, 0x7, 0},
12144         {0x15, 0x87, 0},
12145         {0x16, 0x8, 0},
12146         {0x17, 0x17, 0},
12147         {0x18, 0x7, 0},
12148         {0x19, 0, 0},
12149         {0x1A, 0x2, 0},
12150         {0x1B, 0x13, 0},
12151         {0x1C, 0x3e, 0},
12152         {0x1D, 0x3e, 0},
12153         {0x1E, 0x96, 0},
12154         {0x1F, 0x4, 0},
12155         {0x20, 0, 0},
12156         {0x21, 0, 0},
12157         {0x22, 0x17, 0},
12158         {0x23, 0x6, 1},
12159         {0x24, 0x1, 0},
12160         {0x25, 0x6, 0},
12161         {0x26, 0x4, 0},
12162         {0x27, 0xd, 0},
12163         {0x28, 0xd, 0},
12164         {0x29, 0x30, 0},
12165         {0x2A, 0x32, 0},
12166         {0x2B, 0x8, 0},
12167         {0x2C, 0x1c, 0},
12168         {0x2D, 0x2, 0},
12169         {0x2E, 0x4, 0},
12170         {0x2F, 0x7f, 0},
12171         {0x30, 0x27, 0},
12172         {0x31, 0, 1},
12173         {0x32, 0, 1},
12174         {0x33, 0, 1},
12175         {0x34, 0, 0},
12176         {0x35, 0x20, 0},
12177         {0x36, 0x18, 0},
12178         {0x37, 0x7, 0},
12179         {0x38, 0x66, 0},
12180         {0x39, 0x66, 0},
12181         {0x3C, 0xff, 0},
12182         {0x3D, 0xff, 0},
12183         {0x40, 0x16, 0},
12184         {0x41, 0x7, 0},
12185         {0x45, 0x3, 0},
12186         {0x46, 0x1, 0},
12187         {0x47, 0x7, 0},
12188         {0x4B, 0x66, 0},
12189         {0x4C, 0x66, 0},
12190         {0x4D, 0, 0},
12191         {0x4E, 0x4, 0},
12192         {0x4F, 0xc, 0},
12193         {0x50, 0, 0},
12194         {0x51, 0x70, 1},
12195         {0x56, 0x7, 0},
12196         {0x57, 0, 0},
12197         {0x58, 0, 0},
12198         {0x59, 0x88, 1},
12199         {0x5A, 0, 0},
12200         {0x5B, 0x1f, 0},
12201         {0x5C, 0x20, 1},
12202         {0x5D, 0x1, 0},
12203         {0x5E, 0x30, 0},
12204         {0x5F, 0x70, 0},
12205         {0x60, 0, 0},
12206         {0x61, 0, 0},
12207         {0x62, 0x33, 1},
12208         {0x63, 0xf, 1},
12209         {0x64, 0xf, 1},
12210         {0x65, 0, 0},
12211         {0x66, 0x11, 0},
12212         {0x80, 0x3c, 0},
12213         {0x81, 0x1, 1},
12214         {0x82, 0xa, 0},
12215         {0x85, 0, 0},
12216         {0x86, 0x40, 0},
12217         {0x87, 0x40, 0},
12218         {0x88, 0x88, 0},
12219         {0x89, 0x10, 0},
12220         {0x8A, 0xf0, 0},
12221         {0x8B, 0x10, 0},
12222         {0x8C, 0xf0, 0},
12223         {0x8F, 0x10, 0},
12224         {0x90, 0x55, 0},
12225         {0x91, 0x3f, 1},
12226         {0x92, 0x36, 1},
12227         {0x93, 0, 0},
12228         {0x94, 0, 0},
12229         {0x95, 0, 0},
12230         {0x96, 0x87, 0},
12231         {0x97, 0x11, 0},
12232         {0x98, 0, 0},
12233         {0x99, 0x33, 0},
12234         {0x9A, 0x88, 0},
12235         {0xA1, 0x20, 1},
12236         {0xA2, 0x3f, 0},
12237         {0xA3, 0x44, 0},
12238         {0xA4, 0x8c, 0},
12239         {0xA5, 0x6c, 0},
12240         {0xA6, 0x22, 0},
12241         {0xA7, 0xbe, 0},
12242         {0xA8, 0x55, 0},
12243         {0xAA, 0xc, 0},
12244         {0xAB, 0xaa, 0},
12245         {0xAC, 0x2, 0},
12246         {0xAD, 0, 0},
12247         {0xAE, 0x10, 0},
12248         {0xAF, 0x1, 0},
12249         {0xB0, 0, 0},
12250         {0xB1, 0, 0},
12251         {0xB2, 0x80, 0},
12252         {0xB3, 0x60, 0},
12253         {0xB4, 0x44, 0},
12254         {0xB5, 0x55, 0},
12255         {0xB6, 0x1, 0},
12256         {0xB7, 0x55, 0},
12257         {0xB8, 0x1, 0},
12258         {0xB9, 0x5, 0},
12259         {0xBA, 0x55, 0},
12260         {0xBB, 0x55, 0},
12261         {0xC3, 0, 0},
12262         {0xC4, 0, 0},
12263         {0xC5, 0, 0},
12264         {0xC6, 0, 0},
12265         {0xC7, 0, 0},
12266         {0xC8, 0, 0},
12267         {0xC9, 0x1, 1},
12268         {0xCA, 0, 0},
12269         {0xCB, 0, 0},
12270         {0xCD, 0, 0},
12271         {0xCE, 0x5e, 0},
12272         {0xCF, 0xc, 0},
12273         {0xD0, 0xc, 0},
12274         {0xD1, 0xc, 0},
12275         {0xD2, 0, 0},
12276         {0xD3, 0x2b, 0},
12277         {0xD4, 0xc, 0},
12278         {0xD5, 0, 0},
12279         {0xD6, 0x70, 1},
12280         {0xDB, 0x7, 0},
12281         {0xDC, 0, 0},
12282         {0xDD, 0, 0},
12283         {0xDE, 0x88, 1},
12284         {0xDF, 0, 0},
12285         {0xE0, 0x1f, 0},
12286         {0xE1, 0x20, 1},
12287         {0xE2, 0x1, 0},
12288         {0xE3, 0x30, 0},
12289         {0xE4, 0x70, 0},
12290         {0xE5, 0, 0},
12291         {0xE6, 0, 0},
12292         {0xE7, 0x33, 0},
12293         {0xE8, 0xf, 1},
12294         {0xE9, 0xf, 1},
12295         {0xEA, 0, 0},
12296         {0xEB, 0x11, 0},
12297         {0x105, 0x3c, 0},
12298         {0x106, 0x1, 1},
12299         {0x107, 0xa, 0},
12300         {0x10A, 0, 0},
12301         {0x10B, 0x40, 0},
12302         {0x10C, 0x40, 0},
12303         {0x10D, 0x88, 0},
12304         {0x10E, 0x10, 0},
12305         {0x10F, 0xf0, 0},
12306         {0x110, 0x10, 0},
12307         {0x111, 0xf0, 0},
12308         {0x114, 0x10, 0},
12309         {0x115, 0x55, 0},
12310         {0x116, 0x3f, 1},
12311         {0x117, 0x36, 1},
12312         {0x118, 0, 0},
12313         {0x119, 0, 0},
12314         {0x11A, 0, 0},
12315         {0x11B, 0x87, 0},
12316         {0x11C, 0x11, 0},
12317         {0x11D, 0, 0},
12318         {0x11E, 0x33, 0},
12319         {0x11F, 0x88, 0},
12320         {0x126, 0x20, 1},
12321         {0x127, 0x3f, 0},
12322         {0x128, 0x44, 0},
12323         {0x129, 0x8c, 0},
12324         {0x12A, 0x6c, 0},
12325         {0x12B, 0x22, 0},
12326         {0x12C, 0xbe, 0},
12327         {0x12D, 0x55, 0},
12328         {0x12F, 0xc, 0},
12329         {0x130, 0xaa, 0},
12330         {0x131, 0x2, 0},
12331         {0x132, 0, 0},
12332         {0x133, 0x10, 0},
12333         {0x134, 0x1, 0},
12334         {0x135, 0, 0},
12335         {0x136, 0, 0},
12336         {0x137, 0x80, 0},
12337         {0x138, 0x60, 0},
12338         {0x139, 0x44, 0},
12339         {0x13A, 0x55, 0},
12340         {0x13B, 0x1, 0},
12341         {0x13C, 0x55, 0},
12342         {0x13D, 0x1, 0},
12343         {0x13E, 0x5, 0},
12344         {0x13F, 0x55, 0},
12345         {0x140, 0x55, 0},
12346         {0x148, 0, 0},
12347         {0x149, 0, 0},
12348         {0x14A, 0, 0},
12349         {0x14B, 0, 0},
12350         {0x14C, 0, 0},
12351         {0x14D, 0, 0},
12352         {0x14E, 0x1, 1},
12353         {0x14F, 0, 0},
12354         {0x150, 0, 0},
12355         {0x154, 0xc, 0},
12356         {0x155, 0xc, 0},
12357         {0x156, 0xc, 0},
12358         {0x157, 0, 0},
12359         {0x158, 0x2b, 0},
12360         {0x159, 0x84, 0},
12361         {0x15A, 0x15, 0},
12362         {0x15B, 0xf, 0},
12363         {0x15C, 0, 0},
12364         {0x15D, 0, 0},
12365         {0x15E, 0, 1},
12366         {0x15F, 0, 1},
12367         {0x160, 0, 1},
12368         {0x161, 0, 1},
12369         {0x162, 0, 1},
12370         {0x163, 0, 1},
12371         {0x164, 0, 0},
12372         {0x165, 0, 0},
12373         {0x166, 0, 0},
12374         {0x167, 0, 0},
12375         {0x168, 0, 0},
12376         {0x169, 0, 0},
12377         {0x16A, 0, 1},
12378         {0x16B, 0, 1},
12379         {0x16C, 0, 1},
12380         {0x16D, 0, 0},
12381         {0x170, 0, 0},
12382         {0x171, 0x77, 0},
12383         {0x172, 0x77, 0},
12384         {0x173, 0x77, 0},
12385         {0x174, 0x77, 0},
12386         {0x175, 0, 0},
12387         {0x176, 0x3, 0},
12388         {0x177, 0x37, 0},
12389         {0x178, 0x3, 0},
12390         {0x179, 0, 0},
12391         {0x17B, 0x21, 0},
12392         {0x17C, 0, 0},
12393         {0x17D, 0xaa, 0},
12394         {0x17E, 0, 0},
12395         {0x190, 0, 0},
12396         {0x191, 0x77, 0},
12397         {0x192, 0x77, 0},
12398         {0x193, 0x77, 0},
12399         {0x194, 0x77, 0},
12400         {0x195, 0, 0},
12401         {0x196, 0x3, 0},
12402         {0x197, 0x37, 0},
12403         {0x198, 0x3, 0},
12404         {0x199, 0, 0},
12405         {0x19B, 0x21, 0},
12406         {0x19C, 0, 0},
12407         {0x19D, 0xaa, 0},
12408         {0x19E, 0, 0},
12409         {0x1A1, 0x2, 0},
12410         {0x1A2, 0xf, 0},
12411         {0x1A3, 0xf, 0},
12412         {0x1A4, 0, 1},
12413         {0x1A5, 0, 1},
12414         {0x1A6, 0, 1},
12415         {0x1A7, 0x2, 0},
12416         {0x1A8, 0xf, 0},
12417         {0x1A9, 0xf, 0},
12418         {0x1AA, 0, 1},
12419         {0x1AB, 0, 1},
12420         {0x1AC, 0, 1},
12421         {0x1AD, 0x84, 0},
12422         {0x1AE, 0x60, 0},
12423         {0x1AF, 0x47, 0},
12424         {0x1B0, 0x47, 0},
12425         {0x1B1, 0, 0},
12426         {0x1B2, 0, 0},
12427         {0x1B3, 0, 0},
12428         {0x1B4, 0, 0},
12429         {0x1B5, 0, 0},
12430         {0x1B6, 0, 0},
12431         {0x1B7, 0xc, 1},
12432         {0x1B8, 0, 0},
12433         {0x1B9, 0, 0},
12434         {0x1BA, 0, 0},
12435         {0x1BB, 0, 0},
12436         {0x1BC, 0, 0},
12437         {0x1BD, 0, 0},
12438         {0x1BE, 0, 0},
12439         {0x1BF, 0, 0},
12440         {0x1C0, 0, 0},
12441         {0x1C1, 0x1, 1},
12442         {0x1C2, 0x80, 1},
12443         {0x1C3, 0, 0},
12444         {0x1C4, 0, 0},
12445         {0x1C5, 0, 0},
12446         {0x1C6, 0, 0},
12447         {0x1C7, 0, 0},
12448         {0x1C8, 0, 0},
12449         {0x1C9, 0, 0},
12450         {0x1CA, 0, 0},
12451         {0xFFFF, 0, 0}
12452 };
12453
12454 radio_20xx_regs_t regs_2057_rev7[] = {
12455         {0x00, 0, 1},
12456         {0x01, 0x57, 1},
12457         {0x02, 0x20, 1},
12458         {0x03, 0x1f, 0},
12459         {0x04, 0x4, 0},
12460         {0x05, 0x2, 0},
12461         {0x06, 0x1, 0},
12462         {0x07, 0x1, 0},
12463         {0x08, 0x1, 0},
12464         {0x09, 0x69, 0},
12465         {0x0A, 0x66, 0},
12466         {0x0B, 0x6, 0},
12467         {0x0C, 0x18, 0},
12468         {0x0D, 0x3, 0},
12469         {0x0E, 0x20, 0},
12470         {0x0F, 0x20, 0},
12471         {0x10, 0, 0},
12472         {0x11, 0x7c, 0},
12473         {0x12, 0x42, 0},
12474         {0x13, 0xbd, 0},
12475         {0x14, 0x7, 0},
12476         {0x15, 0x87, 0},
12477         {0x16, 0x8, 0},
12478         {0x17, 0x17, 0},
12479         {0x18, 0x7, 0},
12480         {0x19, 0, 0},
12481         {0x1A, 0x2, 0},
12482         {0x1B, 0x13, 0},
12483         {0x1C, 0x3e, 0},
12484         {0x1D, 0x3e, 0},
12485         {0x1E, 0x96, 0},
12486         {0x1F, 0x4, 0},
12487         {0x20, 0, 0},
12488         {0x21, 0, 0},
12489         {0x22, 0x17, 0},
12490         {0x23, 0x6, 0},
12491         {0x24, 0x1, 0},
12492         {0x25, 0x6, 0},
12493         {0x26, 0x4, 0},
12494         {0x27, 0xd, 0},
12495         {0x28, 0xd, 0},
12496         {0x29, 0x30, 0},
12497         {0x2A, 0x32, 0},
12498         {0x2B, 0x8, 0},
12499         {0x2C, 0x1c, 0},
12500         {0x2D, 0x2, 0},
12501         {0x2E, 0x4, 0},
12502         {0x2F, 0x7f, 0},
12503         {0x30, 0x27, 0},
12504         {0x31, 0, 1},
12505         {0x32, 0, 1},
12506         {0x33, 0, 1},
12507         {0x34, 0, 0},
12508         {0x35, 0x20, 0},
12509         {0x36, 0x18, 0},
12510         {0x37, 0x7, 0},
12511         {0x38, 0x66, 0},
12512         {0x39, 0x66, 0},
12513         {0x3A, 0x66, 0},
12514         {0x3B, 0x66, 0},
12515         {0x3C, 0xff, 0},
12516         {0x3D, 0xff, 0},
12517         {0x3E, 0xff, 0},
12518         {0x3F, 0xff, 0},
12519         {0x40, 0x16, 0},
12520         {0x41, 0x7, 0},
12521         {0x42, 0x19, 0},
12522         {0x43, 0x7, 0},
12523         {0x44, 0x6, 0},
12524         {0x45, 0x3, 0},
12525         {0x46, 0x1, 0},
12526         {0x47, 0x7, 0},
12527         {0x48, 0x33, 0},
12528         {0x49, 0x5, 0},
12529         {0x4A, 0x77, 0},
12530         {0x4B, 0x66, 0},
12531         {0x4C, 0x66, 0},
12532         {0x4D, 0, 0},
12533         {0x4E, 0x4, 0},
12534         {0x4F, 0xc, 0},
12535         {0x50, 0, 0},
12536         {0x51, 0x70, 1},
12537         {0x56, 0x7, 0},
12538         {0x57, 0, 0},
12539         {0x58, 0, 0},
12540         {0x59, 0x88, 1},
12541         {0x5A, 0, 0},
12542         {0x5B, 0x1f, 0},
12543         {0x5C, 0x20, 1},
12544         {0x5D, 0x1, 0},
12545         {0x5E, 0x30, 0},
12546         {0x5F, 0x70, 0},
12547         {0x60, 0, 0},
12548         {0x61, 0, 0},
12549         {0x62, 0x33, 1},
12550         {0x63, 0xf, 1},
12551         {0x64, 0x13, 1},
12552         {0x65, 0, 0},
12553         {0x66, 0xee, 1},
12554         {0x69, 0, 0},
12555         {0x6A, 0x7e, 0},
12556         {0x6B, 0x3f, 0},
12557         {0x6C, 0x7f, 0},
12558         {0x6D, 0x78, 0},
12559         {0x6E, 0x58, 1},
12560         {0x6F, 0x88, 0},
12561         {0x70, 0x8, 0},
12562         {0x71, 0xf, 0},
12563         {0x72, 0xbc, 0},
12564         {0x73, 0x8, 0},
12565         {0x74, 0x60, 0},
12566         {0x75, 0x13, 1},
12567         {0x76, 0x70, 0},
12568         {0x77, 0, 0},
12569         {0x78, 0, 0},
12570         {0x79, 0, 0},
12571         {0x7A, 0x33, 0},
12572         {0x7B, 0x13, 1},
12573         {0x7C, 0x14, 1},
12574         {0x7D, 0xee, 1},
12575         {0x80, 0x3c, 0},
12576         {0x81, 0x1, 1},
12577         {0x82, 0xa, 0},
12578         {0x83, 0x9d, 0},
12579         {0x84, 0xa, 0},
12580         {0x85, 0, 0},
12581         {0x86, 0x40, 0},
12582         {0x87, 0x40, 0},
12583         {0x88, 0x88, 0},
12584         {0x89, 0x10, 0},
12585         {0x8A, 0xf0, 0},
12586         {0x8B, 0x10, 0},
12587         {0x8C, 0xf0, 0},
12588         {0x8D, 0, 0},
12589         {0x8E, 0, 0},
12590         {0x8F, 0x10, 0},
12591         {0x90, 0x55, 0},
12592         {0x91, 0x3f, 1},
12593         {0x92, 0x36, 1},
12594         {0x93, 0, 0},
12595         {0x94, 0, 0},
12596         {0x95, 0, 0},
12597         {0x96, 0x87, 0},
12598         {0x97, 0x11, 0},
12599         {0x98, 0, 0},
12600         {0x99, 0x33, 0},
12601         {0x9A, 0x88, 0},
12602         {0x9B, 0, 0},
12603         {0x9C, 0x87, 0},
12604         {0x9D, 0x11, 0},
12605         {0x9E, 0, 0},
12606         {0x9F, 0x33, 0},
12607         {0xA0, 0x88, 0},
12608         {0xA1, 0x20, 1},
12609         {0xA2, 0x3f, 0},
12610         {0xA3, 0x44, 0},
12611         {0xA4, 0x8c, 0},
12612         {0xA5, 0x6c, 0},
12613         {0xA6, 0x22, 0},
12614         {0xA7, 0xbe, 0},
12615         {0xA8, 0x55, 0},
12616         {0xAA, 0xc, 0},
12617         {0xAB, 0xaa, 0},
12618         {0xAC, 0x2, 0},
12619         {0xAD, 0, 0},
12620         {0xAE, 0x10, 0},
12621         {0xAF, 0x1, 0},
12622         {0xB0, 0, 0},
12623         {0xB1, 0, 0},
12624         {0xB2, 0x80, 0},
12625         {0xB3, 0x60, 0},
12626         {0xB4, 0x44, 0},
12627         {0xB5, 0x55, 0},
12628         {0xB6, 0x1, 0},
12629         {0xB7, 0x55, 0},
12630         {0xB8, 0x1, 0},
12631         {0xB9, 0x5, 0},
12632         {0xBA, 0x55, 0},
12633         {0xBB, 0x55, 0},
12634         {0xC1, 0, 0},
12635         {0xC2, 0, 0},
12636         {0xC3, 0, 0},
12637         {0xC4, 0, 0},
12638         {0xC5, 0, 0},
12639         {0xC6, 0, 0},
12640         {0xC7, 0, 0},
12641         {0xC8, 0, 0},
12642         {0xC9, 0, 0},
12643         {0xCA, 0, 0},
12644         {0xCB, 0, 0},
12645         {0xCC, 0, 0},
12646         {0xCD, 0, 0},
12647         {0xCE, 0x5e, 0},
12648         {0xCF, 0xc, 0},
12649         {0xD0, 0xc, 0},
12650         {0xD1, 0xc, 0},
12651         {0xD2, 0, 0},
12652         {0xD3, 0x2b, 0},
12653         {0xD4, 0xc, 0},
12654         {0xD5, 0, 0},
12655         {0xD6, 0x70, 1},
12656         {0xDB, 0x7, 0},
12657         {0xDC, 0, 0},
12658         {0xDD, 0, 0},
12659         {0xDE, 0x88, 1},
12660         {0xDF, 0, 0},
12661         {0xE0, 0x1f, 0},
12662         {0xE1, 0x20, 1},
12663         {0xE2, 0x1, 0},
12664         {0xE3, 0x30, 0},
12665         {0xE4, 0x70, 0},
12666         {0xE5, 0, 0},
12667         {0xE6, 0, 0},
12668         {0xE7, 0x33, 0},
12669         {0xE8, 0xf, 1},
12670         {0xE9, 0x13, 1},
12671         {0xEA, 0, 0},
12672         {0xEB, 0xee, 1},
12673         {0xEE, 0, 0},
12674         {0xEF, 0x7e, 0},
12675         {0xF0, 0x3f, 0},
12676         {0xF1, 0x7f, 0},
12677         {0xF2, 0x78, 0},
12678         {0xF3, 0x58, 1},
12679         {0xF4, 0x88, 0},
12680         {0xF5, 0x8, 0},
12681         {0xF6, 0xf, 0},
12682         {0xF7, 0xbc, 0},
12683         {0xF8, 0x8, 0},
12684         {0xF9, 0x60, 0},
12685         {0xFA, 0x13, 1},
12686         {0xFB, 0x70, 0},
12687         {0xFC, 0, 0},
12688         {0xFD, 0, 0},
12689         {0xFE, 0, 0},
12690         {0xFF, 0x33, 0},
12691         {0x100, 0x13, 1},
12692         {0x101, 0x14, 1},
12693         {0x102, 0xee, 1},
12694         {0x105, 0x3c, 0},
12695         {0x106, 0x1, 1},
12696         {0x107, 0xa, 0},
12697         {0x108, 0x9d, 0},
12698         {0x109, 0xa, 0},
12699         {0x10A, 0, 0},
12700         {0x10B, 0x40, 0},
12701         {0x10C, 0x40, 0},
12702         {0x10D, 0x88, 0},
12703         {0x10E, 0x10, 0},
12704         {0x10F, 0xf0, 0},
12705         {0x110, 0x10, 0},
12706         {0x111, 0xf0, 0},
12707         {0x112, 0, 0},
12708         {0x113, 0, 0},
12709         {0x114, 0x10, 0},
12710         {0x115, 0x55, 0},
12711         {0x116, 0x3f, 1},
12712         {0x117, 0x36, 1},
12713         {0x118, 0, 0},
12714         {0x119, 0, 0},
12715         {0x11A, 0, 0},
12716         {0x11B, 0x87, 0},
12717         {0x11C, 0x11, 0},
12718         {0x11D, 0, 0},
12719         {0x11E, 0x33, 0},
12720         {0x11F, 0x88, 0},
12721         {0x120, 0, 0},
12722         {0x121, 0x87, 0},
12723         {0x122, 0x11, 0},
12724         {0x123, 0, 0},
12725         {0x124, 0x33, 0},
12726         {0x125, 0x88, 0},
12727         {0x126, 0x20, 1},
12728         {0x127, 0x3f, 0},
12729         {0x128, 0x44, 0},
12730         {0x129, 0x8c, 0},
12731         {0x12A, 0x6c, 0},
12732         {0x12B, 0x22, 0},
12733         {0x12C, 0xbe, 0},
12734         {0x12D, 0x55, 0},
12735         {0x12F, 0xc, 0},
12736         {0x130, 0xaa, 0},
12737         {0x131, 0x2, 0},
12738         {0x132, 0, 0},
12739         {0x133, 0x10, 0},
12740         {0x134, 0x1, 0},
12741         {0x135, 0, 0},
12742         {0x136, 0, 0},
12743         {0x137, 0x80, 0},
12744         {0x138, 0x60, 0},
12745         {0x139, 0x44, 0},
12746         {0x13A, 0x55, 0},
12747         {0x13B, 0x1, 0},
12748         {0x13C, 0x55, 0},
12749         {0x13D, 0x1, 0},
12750         {0x13E, 0x5, 0},
12751         {0x13F, 0x55, 0},
12752         {0x140, 0x55, 0},
12753         {0x146, 0, 0},
12754         {0x147, 0, 0},
12755         {0x148, 0, 0},
12756         {0x149, 0, 0},
12757         {0x14A, 0, 0},
12758         {0x14B, 0, 0},
12759         {0x14C, 0, 0},
12760         {0x14D, 0, 0},
12761         {0x14E, 0, 0},
12762         {0x14F, 0, 0},
12763         {0x150, 0, 0},
12764         {0x151, 0, 0},
12765         {0x154, 0xc, 0},
12766         {0x155, 0xc, 0},
12767         {0x156, 0xc, 0},
12768         {0x157, 0, 0},
12769         {0x158, 0x2b, 0},
12770         {0x159, 0x84, 0},
12771         {0x15A, 0x15, 0},
12772         {0x15B, 0xf, 0},
12773         {0x15C, 0, 0},
12774         {0x15D, 0, 0},
12775         {0x15E, 0, 1},
12776         {0x15F, 0, 1},
12777         {0x160, 0, 1},
12778         {0x161, 0, 1},
12779         {0x162, 0, 1},
12780         {0x163, 0, 1},
12781         {0x164, 0, 0},
12782         {0x165, 0, 0},
12783         {0x166, 0, 0},
12784         {0x167, 0, 0},
12785         {0x168, 0, 0},
12786         {0x169, 0, 0},
12787         {0x16A, 0, 1},
12788         {0x16B, 0, 1},
12789         {0x16C, 0, 1},
12790         {0x16D, 0, 0},
12791         {0x170, 0, 0},
12792         {0x171, 0x77, 0},
12793         {0x172, 0x77, 0},
12794         {0x173, 0x77, 0},
12795         {0x174, 0x77, 0},
12796         {0x175, 0, 0},
12797         {0x176, 0x3, 0},
12798         {0x177, 0x37, 0},
12799         {0x178, 0x3, 0},
12800         {0x179, 0, 0},
12801         {0x17A, 0x21, 0},
12802         {0x17B, 0x21, 0},
12803         {0x17C, 0, 0},
12804         {0x17D, 0xaa, 0},
12805         {0x17E, 0, 0},
12806         {0x17F, 0xaa, 0},
12807         {0x180, 0, 0},
12808         {0x190, 0, 0},
12809         {0x191, 0x77, 0},
12810         {0x192, 0x77, 0},
12811         {0x193, 0x77, 0},
12812         {0x194, 0x77, 0},
12813         {0x195, 0, 0},
12814         {0x196, 0x3, 0},
12815         {0x197, 0x37, 0},
12816         {0x198, 0x3, 0},
12817         {0x199, 0, 0},
12818         {0x19A, 0x21, 0},
12819         {0x19B, 0x21, 0},
12820         {0x19C, 0, 0},
12821         {0x19D, 0xaa, 0},
12822         {0x19E, 0, 0},
12823         {0x19F, 0xaa, 0},
12824         {0x1A0, 0, 0},
12825         {0x1A1, 0x2, 0},
12826         {0x1A2, 0xf, 0},
12827         {0x1A3, 0xf, 0},
12828         {0x1A4, 0, 1},
12829         {0x1A5, 0, 1},
12830         {0x1A6, 0, 1},
12831         {0x1A7, 0x2, 0},
12832         {0x1A8, 0xf, 0},
12833         {0x1A9, 0xf, 0},
12834         {0x1AA, 0, 1},
12835         {0x1AB, 0, 1},
12836         {0x1AC, 0, 1},
12837         {0x1AD, 0x84, 0},
12838         {0x1AE, 0x60, 0},
12839         {0x1AF, 0x47, 0},
12840         {0x1B0, 0x47, 0},
12841         {0x1B1, 0, 0},
12842         {0x1B2, 0, 0},
12843         {0x1B3, 0, 0},
12844         {0x1B4, 0, 0},
12845         {0x1B5, 0, 0},
12846         {0x1B6, 0, 0},
12847         {0x1B7, 0x5, 1},
12848         {0x1B8, 0, 0},
12849         {0x1B9, 0, 0},
12850         {0x1BA, 0, 0},
12851         {0x1BB, 0, 0},
12852         {0x1BC, 0, 0},
12853         {0x1BD, 0, 0},
12854         {0x1BE, 0, 0},
12855         {0x1BF, 0, 0},
12856         {0x1C0, 0, 0},
12857         {0x1C1, 0, 0},
12858         {0x1C2, 0xa0, 1},
12859         {0x1C3, 0, 0},
12860         {0x1C4, 0, 0},
12861         {0x1C5, 0, 0},
12862         {0x1C6, 0, 0},
12863         {0x1C7, 0, 0},
12864         {0x1C8, 0, 0},
12865         {0x1C9, 0, 0},
12866         {0x1CA, 0, 0},
12867         {0xFFFF, 0, 0}
12868 };
12869
12870 radio_20xx_regs_t regs_2057_rev8[] = {
12871         {0x00, 0x8, 1},
12872         {0x01, 0x57, 1},
12873         {0x02, 0x20, 1},
12874         {0x03, 0x1f, 0},
12875         {0x04, 0x4, 0},
12876         {0x05, 0x2, 0},
12877         {0x06, 0x1, 0},
12878         {0x07, 0x1, 0},
12879         {0x08, 0x1, 0},
12880         {0x09, 0x69, 0},
12881         {0x0A, 0x66, 0},
12882         {0x0B, 0x6, 0},
12883         {0x0C, 0x18, 0},
12884         {0x0D, 0x3, 0},
12885         {0x0E, 0x20, 0},
12886         {0x0F, 0x20, 0},
12887         {0x10, 0, 0},
12888         {0x11, 0x7c, 0},
12889         {0x12, 0x42, 0},
12890         {0x13, 0xbd, 0},
12891         {0x14, 0x7, 0},
12892         {0x15, 0x87, 0},
12893         {0x16, 0x8, 0},
12894         {0x17, 0x17, 0},
12895         {0x18, 0x7, 0},
12896         {0x19, 0, 0},
12897         {0x1A, 0x2, 0},
12898         {0x1B, 0x13, 0},
12899         {0x1C, 0x3e, 0},
12900         {0x1D, 0x3e, 0},
12901         {0x1E, 0x96, 0},
12902         {0x1F, 0x4, 0},
12903         {0x20, 0, 0},
12904         {0x21, 0, 0},
12905         {0x22, 0x17, 0},
12906         {0x23, 0x6, 0},
12907         {0x24, 0x1, 0},
12908         {0x25, 0x6, 0},
12909         {0x26, 0x4, 0},
12910         {0x27, 0xd, 0},
12911         {0x28, 0xd, 0},
12912         {0x29, 0x30, 0},
12913         {0x2A, 0x32, 0},
12914         {0x2B, 0x8, 0},
12915         {0x2C, 0x1c, 0},
12916         {0x2D, 0x2, 0},
12917         {0x2E, 0x4, 0},
12918         {0x2F, 0x7f, 0},
12919         {0x30, 0x27, 0},
12920         {0x31, 0, 1},
12921         {0x32, 0, 1},
12922         {0x33, 0, 1},
12923         {0x34, 0, 0},
12924         {0x35, 0x20, 0},
12925         {0x36, 0x18, 0},
12926         {0x37, 0x7, 0},
12927         {0x38, 0x66, 0},
12928         {0x39, 0x66, 0},
12929         {0x3A, 0x66, 0},
12930         {0x3B, 0x66, 0},
12931         {0x3C, 0xff, 0},
12932         {0x3D, 0xff, 0},
12933         {0x3E, 0xff, 0},
12934         {0x3F, 0xff, 0},
12935         {0x40, 0x16, 0},
12936         {0x41, 0x7, 0},
12937         {0x42, 0x19, 0},
12938         {0x43, 0x7, 0},
12939         {0x44, 0x6, 0},
12940         {0x45, 0x3, 0},
12941         {0x46, 0x1, 0},
12942         {0x47, 0x7, 0},
12943         {0x48, 0x33, 0},
12944         {0x49, 0x5, 0},
12945         {0x4A, 0x77, 0},
12946         {0x4B, 0x66, 0},
12947         {0x4C, 0x66, 0},
12948         {0x4D, 0, 0},
12949         {0x4E, 0x4, 0},
12950         {0x4F, 0xc, 0},
12951         {0x50, 0, 0},
12952         {0x51, 0x70, 1},
12953         {0x56, 0x7, 0},
12954         {0x57, 0, 0},
12955         {0x58, 0, 0},
12956         {0x59, 0x88, 1},
12957         {0x5A, 0, 0},
12958         {0x5B, 0x1f, 0},
12959         {0x5C, 0x20, 1},
12960         {0x5D, 0x1, 0},
12961         {0x5E, 0x30, 0},
12962         {0x5F, 0x70, 0},
12963         {0x60, 0, 0},
12964         {0x61, 0, 0},
12965         {0x62, 0x33, 1},
12966         {0x63, 0xf, 1},
12967         {0x64, 0xf, 1},
12968         {0x65, 0, 0},
12969         {0x66, 0x11, 0},
12970         {0x69, 0, 0},
12971         {0x6A, 0x7e, 0},
12972         {0x6B, 0x3f, 0},
12973         {0x6C, 0x7f, 0},
12974         {0x6D, 0x78, 0},
12975         {0x6E, 0x58, 1},
12976         {0x6F, 0x88, 0},
12977         {0x70, 0x8, 0},
12978         {0x71, 0xf, 0},
12979         {0x72, 0xbc, 0},
12980         {0x73, 0x8, 0},
12981         {0x74, 0x60, 0},
12982         {0x75, 0x13, 1},
12983         {0x76, 0x70, 0},
12984         {0x77, 0, 0},
12985         {0x78, 0, 0},
12986         {0x79, 0, 0},
12987         {0x7A, 0x33, 0},
12988         {0x7B, 0x13, 1},
12989         {0x7C, 0xf, 1},
12990         {0x7D, 0xee, 1},
12991         {0x80, 0x3c, 0},
12992         {0x81, 0x1, 1},
12993         {0x82, 0xa, 0},
12994         {0x83, 0x9d, 0},
12995         {0x84, 0xa, 0},
12996         {0x85, 0, 0},
12997         {0x86, 0x40, 0},
12998         {0x87, 0x40, 0},
12999         {0x88, 0x88, 0},
13000         {0x89, 0x10, 0},
13001         {0x8A, 0xf0, 0},
13002         {0x8B, 0x10, 0},
13003         {0x8C, 0xf0, 0},
13004         {0x8D, 0, 0},
13005         {0x8E, 0, 0},
13006         {0x8F, 0x10, 0},
13007         {0x90, 0x55, 0},
13008         {0x91, 0x3f, 1},
13009         {0x92, 0x36, 1},
13010         {0x93, 0, 0},
13011         {0x94, 0, 0},
13012         {0x95, 0, 0},
13013         {0x96, 0x87, 0},
13014         {0x97, 0x11, 0},
13015         {0x98, 0, 0},
13016         {0x99, 0x33, 0},
13017         {0x9A, 0x88, 0},
13018         {0x9B, 0, 0},
13019         {0x9C, 0x87, 0},
13020         {0x9D, 0x11, 0},
13021         {0x9E, 0, 0},
13022         {0x9F, 0x33, 0},
13023         {0xA0, 0x88, 0},
13024         {0xA1, 0x20, 1},
13025         {0xA2, 0x3f, 0},
13026         {0xA3, 0x44, 0},
13027         {0xA4, 0x8c, 0},
13028         {0xA5, 0x6c, 0},
13029         {0xA6, 0x22, 0},
13030         {0xA7, 0xbe, 0},
13031         {0xA8, 0x55, 0},
13032         {0xAA, 0xc, 0},
13033         {0xAB, 0xaa, 0},
13034         {0xAC, 0x2, 0},
13035         {0xAD, 0, 0},
13036         {0xAE, 0x10, 0},
13037         {0xAF, 0x1, 0},
13038         {0xB0, 0, 0},
13039         {0xB1, 0, 0},
13040         {0xB2, 0x80, 0},
13041         {0xB3, 0x60, 0},
13042         {0xB4, 0x44, 0},
13043         {0xB5, 0x55, 0},
13044         {0xB6, 0x1, 0},
13045         {0xB7, 0x55, 0},
13046         {0xB8, 0x1, 0},
13047         {0xB9, 0x5, 0},
13048         {0xBA, 0x55, 0},
13049         {0xBB, 0x55, 0},
13050         {0xC1, 0, 0},
13051         {0xC2, 0, 0},
13052         {0xC3, 0, 0},
13053         {0xC4, 0, 0},
13054         {0xC5, 0, 0},
13055         {0xC6, 0, 0},
13056         {0xC7, 0, 0},
13057         {0xC8, 0, 0},
13058         {0xC9, 0x1, 1},
13059         {0xCA, 0, 0},
13060         {0xCB, 0, 0},
13061         {0xCC, 0, 0},
13062         {0xCD, 0, 0},
13063         {0xCE, 0x5e, 0},
13064         {0xCF, 0xc, 0},
13065         {0xD0, 0xc, 0},
13066         {0xD1, 0xc, 0},
13067         {0xD2, 0, 0},
13068         {0xD3, 0x2b, 0},
13069         {0xD4, 0xc, 0},
13070         {0xD5, 0, 0},
13071         {0xD6, 0x70, 1},
13072         {0xDB, 0x7, 0},
13073         {0xDC, 0, 0},
13074         {0xDD, 0, 0},
13075         {0xDE, 0x88, 1},
13076         {0xDF, 0, 0},
13077         {0xE0, 0x1f, 0},
13078         {0xE1, 0x20, 1},
13079         {0xE2, 0x1, 0},
13080         {0xE3, 0x30, 0},
13081         {0xE4, 0x70, 0},
13082         {0xE5, 0, 0},
13083         {0xE6, 0, 0},
13084         {0xE7, 0x33, 0},
13085         {0xE8, 0xf, 1},
13086         {0xE9, 0xf, 1},
13087         {0xEA, 0, 0},
13088         {0xEB, 0x11, 0},
13089         {0xEE, 0, 0},
13090         {0xEF, 0x7e, 0},
13091         {0xF0, 0x3f, 0},
13092         {0xF1, 0x7f, 0},
13093         {0xF2, 0x78, 0},
13094         {0xF3, 0x58, 1},
13095         {0xF4, 0x88, 0},
13096         {0xF5, 0x8, 0},
13097         {0xF6, 0xf, 0},
13098         {0xF7, 0xbc, 0},
13099         {0xF8, 0x8, 0},
13100         {0xF9, 0x60, 0},
13101         {0xFA, 0x13, 1},
13102         {0xFB, 0x70, 0},
13103         {0xFC, 0, 0},
13104         {0xFD, 0, 0},
13105         {0xFE, 0, 0},
13106         {0xFF, 0x33, 0},
13107         {0x100, 0x13, 1},
13108         {0x101, 0xf, 1},
13109         {0x102, 0xee, 1},
13110         {0x105, 0x3c, 0},
13111         {0x106, 0x1, 1},
13112         {0x107, 0xa, 0},
13113         {0x108, 0x9d, 0},
13114         {0x109, 0xa, 0},
13115         {0x10A, 0, 0},
13116         {0x10B, 0x40, 0},
13117         {0x10C, 0x40, 0},
13118         {0x10D, 0x88, 0},
13119         {0x10E, 0x10, 0},
13120         {0x10F, 0xf0, 0},
13121         {0x110, 0x10, 0},
13122         {0x111, 0xf0, 0},
13123         {0x112, 0, 0},
13124         {0x113, 0, 0},
13125         {0x114, 0x10, 0},
13126         {0x115, 0x55, 0},
13127         {0x116, 0x3f, 1},
13128         {0x117, 0x36, 1},
13129         {0x118, 0, 0},
13130         {0x119, 0, 0},
13131         {0x11A, 0, 0},
13132         {0x11B, 0x87, 0},
13133         {0x11C, 0x11, 0},
13134         {0x11D, 0, 0},
13135         {0x11E, 0x33, 0},
13136         {0x11F, 0x88, 0},
13137         {0x120, 0, 0},
13138         {0x121, 0x87, 0},
13139         {0x122, 0x11, 0},
13140         {0x123, 0, 0},
13141         {0x124, 0x33, 0},
13142         {0x125, 0x88, 0},
13143         {0x126, 0x20, 1},
13144         {0x127, 0x3f, 0},
13145         {0x128, 0x44, 0},
13146         {0x129, 0x8c, 0},
13147         {0x12A, 0x6c, 0},
13148         {0x12B, 0x22, 0},
13149         {0x12C, 0xbe, 0},
13150         {0x12D, 0x55, 0},
13151         {0x12F, 0xc, 0},
13152         {0x130, 0xaa, 0},
13153         {0x131, 0x2, 0},
13154         {0x132, 0, 0},
13155         {0x133, 0x10, 0},
13156         {0x134, 0x1, 0},
13157         {0x135, 0, 0},
13158         {0x136, 0, 0},
13159         {0x137, 0x80, 0},
13160         {0x138, 0x60, 0},
13161         {0x139, 0x44, 0},
13162         {0x13A, 0x55, 0},
13163         {0x13B, 0x1, 0},
13164         {0x13C, 0x55, 0},
13165         {0x13D, 0x1, 0},
13166         {0x13E, 0x5, 0},
13167         {0x13F, 0x55, 0},
13168         {0x140, 0x55, 0},
13169         {0x146, 0, 0},
13170         {0x147, 0, 0},
13171         {0x148, 0, 0},
13172         {0x149, 0, 0},
13173         {0x14A, 0, 0},
13174         {0x14B, 0, 0},
13175         {0x14C, 0, 0},
13176         {0x14D, 0, 0},
13177         {0x14E, 0x1, 1},
13178         {0x14F, 0, 0},
13179         {0x150, 0, 0},
13180         {0x151, 0, 0},
13181         {0x154, 0xc, 0},
13182         {0x155, 0xc, 0},
13183         {0x156, 0xc, 0},
13184         {0x157, 0, 0},
13185         {0x158, 0x2b, 0},
13186         {0x159, 0x84, 0},
13187         {0x15A, 0x15, 0},
13188         {0x15B, 0xf, 0},
13189         {0x15C, 0, 0},
13190         {0x15D, 0, 0},
13191         {0x15E, 0, 1},
13192         {0x15F, 0, 1},
13193         {0x160, 0, 1},
13194         {0x161, 0, 1},
13195         {0x162, 0, 1},
13196         {0x163, 0, 1},
13197         {0x164, 0, 0},
13198         {0x165, 0, 0},
13199         {0x166, 0, 0},
13200         {0x167, 0, 0},
13201         {0x168, 0, 0},
13202         {0x169, 0, 0},
13203         {0x16A, 0, 1},
13204         {0x16B, 0, 1},
13205         {0x16C, 0, 1},
13206         {0x16D, 0, 0},
13207         {0x170, 0, 0},
13208         {0x171, 0x77, 0},
13209         {0x172, 0x77, 0},
13210         {0x173, 0x77, 0},
13211         {0x174, 0x77, 0},
13212         {0x175, 0, 0},
13213         {0x176, 0x3, 0},
13214         {0x177, 0x37, 0},
13215         {0x178, 0x3, 0},
13216         {0x179, 0, 0},
13217         {0x17A, 0x21, 0},
13218         {0x17B, 0x21, 0},
13219         {0x17C, 0, 0},
13220         {0x17D, 0xaa, 0},
13221         {0x17E, 0, 0},
13222         {0x17F, 0xaa, 0},
13223         {0x180, 0, 0},
13224         {0x190, 0, 0},
13225         {0x191, 0x77, 0},
13226         {0x192, 0x77, 0},
13227         {0x193, 0x77, 0},
13228         {0x194, 0x77, 0},
13229         {0x195, 0, 0},
13230         {0x196, 0x3, 0},
13231         {0x197, 0x37, 0},
13232         {0x198, 0x3, 0},
13233         {0x199, 0, 0},
13234         {0x19A, 0x21, 0},
13235         {0x19B, 0x21, 0},
13236         {0x19C, 0, 0},
13237         {0x19D, 0xaa, 0},
13238         {0x19E, 0, 0},
13239         {0x19F, 0xaa, 0},
13240         {0x1A0, 0, 0},
13241         {0x1A1, 0x2, 0},
13242         {0x1A2, 0xf, 0},
13243         {0x1A3, 0xf, 0},
13244         {0x1A4, 0, 1},
13245         {0x1A5, 0, 1},
13246         {0x1A6, 0, 1},
13247         {0x1A7, 0x2, 0},
13248         {0x1A8, 0xf, 0},
13249         {0x1A9, 0xf, 0},
13250         {0x1AA, 0, 1},
13251         {0x1AB, 0, 1},
13252         {0x1AC, 0, 1},
13253         {0x1AD, 0x84, 0},
13254         {0x1AE, 0x60, 0},
13255         {0x1AF, 0x47, 0},
13256         {0x1B0, 0x47, 0},
13257         {0x1B1, 0, 0},
13258         {0x1B2, 0, 0},
13259         {0x1B3, 0, 0},
13260         {0x1B4, 0, 0},
13261         {0x1B5, 0, 0},
13262         {0x1B6, 0, 0},
13263         {0x1B7, 0x5, 1},
13264         {0x1B8, 0, 0},
13265         {0x1B9, 0, 0},
13266         {0x1BA, 0, 0},
13267         {0x1BB, 0, 0},
13268         {0x1BC, 0, 0},
13269         {0x1BD, 0, 0},
13270         {0x1BE, 0, 0},
13271         {0x1BF, 0, 0},
13272         {0x1C0, 0, 0},
13273         {0x1C1, 0, 0},
13274         {0x1C2, 0xa0, 1},
13275         {0x1C3, 0, 0},
13276         {0x1C4, 0, 0},
13277         {0x1C5, 0, 0},
13278         {0x1C6, 0, 0},
13279         {0x1C7, 0, 0},
13280         {0x1C8, 0, 0},
13281         {0x1C9, 0, 0},
13282         {0x1CA, 0, 0},
13283         {0xFFFF, 0, 0}
13284 };
13285
13286 static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13287
13288 static s32 nphy_lnagain_est0[] = { -315, 40370 };
13289 static s32 nphy_lnagain_est1[] = { -224, 23242 };
13290
13291 static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13292         {
13293          {0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13294          {0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13295          {0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13296          {0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13297          {0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13298          {0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13299          {0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13300          {0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13301          {0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13302          },
13303         {
13304          {0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13305          {0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13306          {0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13307          {0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13308          {0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13309          {0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13310          {0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13311          {0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13312          {0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13313          }
13314 };
13315
13316 static const u32 nphy_tpc_txgain[] = {
13317         0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13318         0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13319         0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13320         0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13321         0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13322         0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13323         0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13324         0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13325         0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13326         0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13327         0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13328         0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13329         0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13330         0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13331         0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13332         0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13333         0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13334         0x03902942, 0x03902844, 0x03902842, 0x03902744,
13335         0x03902742, 0x03902644, 0x03902642, 0x03902544,
13336         0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13337         0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13338         0x03802842, 0x03802744, 0x03802742, 0x03802644,
13339         0x03802642, 0x03802544, 0x03802542, 0x03802444,
13340         0x03802442, 0x03802344, 0x03802342, 0x03802244,
13341         0x03802242, 0x03802144, 0x03802142, 0x03802044,
13342         0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13343         0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13344         0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13345         0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13346         0x03801842, 0x03801744, 0x03801742, 0x03801644,
13347         0x03801642, 0x03801544, 0x03801542, 0x03801444,
13348         0x03801442, 0x03801344, 0x03801342, 0x00002b00
13349 };
13350
13351 static const u16 nphy_tpc_loscale[] = {
13352         256, 256, 271, 271, 287, 256, 256, 271,
13353         271, 287, 287, 304, 304, 256, 256, 271,
13354         271, 287, 287, 304, 304, 322, 322, 341,
13355         341, 362, 362, 383, 383, 256, 256, 271,
13356         271, 287, 287, 304, 304, 322, 322, 256,
13357         256, 271, 271, 287, 287, 304, 304, 322,
13358         322, 341, 341, 362, 362, 256, 256, 271,
13359         271, 287, 287, 304, 304, 322, 322, 256,
13360         256, 271, 271, 287, 287, 304, 304, 322,
13361         322, 341, 341, 362, 362, 256, 256, 271,
13362         271, 287, 287, 304, 304, 322, 322, 341,
13363         341, 362, 362, 383, 383, 406, 406, 430,
13364         430, 455, 455, 482, 482, 511, 511, 541,
13365         541, 573, 573, 607, 607, 643, 643, 681,
13366         681, 722, 722, 764, 764, 810, 810, 858,
13367         858, 908, 908, 962, 962, 1019, 1019, 256
13368 };
13369
13370 static u32 nphy_tpc_txgain_ipa[] = {
13371         0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13372         0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13373         0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13374         0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13375         0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13376         0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13377         0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13378         0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13379         0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13380         0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13381         0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13382         0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13383         0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13384         0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13385         0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13386         0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13387         0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13388         0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13389         0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13390         0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13391         0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13392         0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13393         0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13394         0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13395         0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13396         0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13397         0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13398         0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13399         0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13400         0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13401         0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13402         0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13403 };
13404
13405 static u32 nphy_tpc_txgain_ipa_rev5[] = {
13406         0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13407         0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13408         0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13409         0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13410         0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13411         0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13412         0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13413         0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13414         0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13415         0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13416         0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13417         0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13418         0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13419         0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13420         0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13421         0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13422         0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13423         0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13424         0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13425         0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13426         0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13427         0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13428         0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13429         0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13430         0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13431         0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13432         0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13433         0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13434         0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13435         0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13436         0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13437         0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13438 };
13439
13440 static u32 nphy_tpc_txgain_ipa_rev6[] = {
13441         0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13442         0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13443         0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13444         0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13445         0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13446         0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13447         0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13448         0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13449         0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13450         0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13451         0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13452         0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13453         0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13454         0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13455         0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13456         0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13457         0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13458         0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13459         0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13460         0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13461         0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13462         0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13463         0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13464         0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13465         0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13466         0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13467         0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13468         0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13469         0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13470         0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13471         0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13472         0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13473 };
13474
13475 static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13476         0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13477         0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13478         0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13479         0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13480         0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13481         0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13482         0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13483         0x70470028, 0x70470026, 0x70470024, 0x70470022,
13484         0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13485         0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13486         0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13487         0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13488         0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13489         0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13490         0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13491         0x70170019, 0x70170018, 0x70170016, 0x70170015,
13492         0x70170014, 0x70170013, 0x70170012, 0x70170010,
13493         0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13494         0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13495         0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13496         0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13497         0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13498         0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13499         0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13500         0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13501         0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13502         0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13503         0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13504         0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13505         0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13506         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13507         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13508 };
13509
13510 static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13511         0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13512         0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13513         0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13514         0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13515         0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13516         0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13517         0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13518         0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13519         0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13520         0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13521         0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13522         0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13523         0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13524         0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13525         0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13526         0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13527         0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13528         0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13529         0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13530         0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13531         0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13532         0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13533         0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13534         0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13535         0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13536         0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13537         0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13538         0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13539         0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13540         0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13541         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13542         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13543 };
13544
13545 static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13546         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13547         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13548         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13549         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13550         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13551         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13552         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13553         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13554         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13555         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13556         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13557         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13558         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13559         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13560         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13561         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13562         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13563         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13564         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13565         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13566         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13567         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13568         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13569         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13570         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13571         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13572         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13573         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13574         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13575         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13576         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13577         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13578 };
13579
13580 static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13581         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13582         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13583         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13584         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13585         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13586         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13587         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13588         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13589         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13590         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13591         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13592         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13593         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13594         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13595         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13596         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13597         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13598         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13599         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13600         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13601         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13602         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13603         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13604         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13605         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13606         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13607         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13608         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13609         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13610         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13611         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13612         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13613 };
13614
13615 static u32 nphy_tpc_txgain_ipa_5g[] = {
13616         0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13617         0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13618         0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13619         0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13620         0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13621         0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13622         0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13623         0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13624         0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13625         0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13626         0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13627         0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13628         0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13629         0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13630         0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13631         0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13632         0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13633         0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13634         0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13635         0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13636         0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13637         0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13638         0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13639         0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13640         0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13641         0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13642         0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13643         0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13644         0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13645         0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13646         0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13647         0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13648 };
13649
13650 static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13651         0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13652         0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13653         0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13654         0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13655         0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13656         0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13657         0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13658         0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13659         0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13660         0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13661         0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13662         0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13663         0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13664         0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13665         0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13666         0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13667         0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13668         0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13669         0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13670         0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13671         0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13672         0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13673         0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13674         0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13675         0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13676         0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13677         0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13678         0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13679         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13680         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13681         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13682         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13683 };
13684
13685 static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13686         0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13687         0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13688         0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13689         0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13690         0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13691         0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13692         0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13693         0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13694         0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13695         0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13696         0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13697         0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13698         0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13699         0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13700         0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13701         0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13702         0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13703         0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13704         0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13705         0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13706         0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13707         0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13708         0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13709         0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13710         0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13711         0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13712         0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13713         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13714         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13715         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13716         0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13717         0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13718 };
13719
13720 static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13721         -114, -108, -98, -91, -84, -78, -70, -62,
13722         -54, -46, -39, -31, -23, -15, -8, 0
13723 };
13724
13725 static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13726         -100, -95, -89, -83, -77, -70, -63, -56,
13727         -48, -41, -33, -25, -19, -12, -6, 0
13728 };
13729
13730 static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13731         -159, -113, -86, -72, -62, -54, -48, -43,
13732         -39, -35, -31, -28, -25, -23, -20, -18,
13733         -17, -15, -13, -11, -10, -8, -7, -6,
13734         -5, -4, -3, -3, -2, -1, -1, 0
13735 };
13736
13737 static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13738         -109, -109, -82, -68, -58, -50, -44, -39,
13739         -35, -31, -28, -26, -23, -21, -19, -17,
13740         -16, -14, -13, -11, -10, -9, -8, -7,
13741         -5, -5, -4, -3, -2, -1, -1, 0
13742 };
13743
13744 static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13745         -122, -122, -95, -80, -69, -61, -54, -49,
13746         -43, -39, -35, -32, -28, -26, -23, -21,
13747         -18, -16, -15, -13, -11, -10, -8, -7,
13748         -6, -5, -4, -3, -2, -1, -1, 0
13749 };
13750
13751 static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13752         -107, -101, -92, -85, -78, -71, -62, -55,
13753         -47, -39, -32, -24, -19, -12, -6, 0
13754 };
13755
13756 static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13757         -110, -104, -95, -88, -81, -74, -66, -58,
13758         -50, -44, -36, -28, -23, -15, -8, 0
13759 };
13760
13761 static u8 pad_gain_codes_used_2057rev5[] = {
13762         20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13763         10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13764 };
13765
13766 static u8 pad_gain_codes_used_2057rev7[] = {
13767         15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13768         5, 4, 3, 2, 1
13769 };
13770
13771 static u8 pad_all_gain_codes_2057[] = {
13772         31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13773         21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13774         11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13775         1, 0
13776 };
13777
13778 static u8 pga_all_gain_codes_2057[] = {
13779         15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13780 };
13781
13782 static u32 nphy_papd_scaltbl[] = {
13783         0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13784         0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13785         0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13786         0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13787         0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13788         0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13789         0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13790         0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13791         0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13792         0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13793         0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13794         0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13795         0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13796         0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13797         0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13798         0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13799 };
13800
13801 static u32 nphy_tpc_txgain_rev3[] = {
13802         0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13803         0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13804         0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13805         0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13806         0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13807         0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13808         0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13809         0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13810         0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13811         0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13812         0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13813         0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13814         0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13815         0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13816         0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13817         0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13818         0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13819         0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13820         0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13821         0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13822         0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13823         0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13824         0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13825         0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13826         0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13827         0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13828         0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13829         0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13830         0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13831         0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13832         0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13833         0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13834 };
13835
13836 static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13837         0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13838         0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13839         0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13840         0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13841         0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13842         0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13843         0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13844         0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13845         0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13846         0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13847         0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13848         0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13849         0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13850         0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13851         0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13852         0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13853         0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13854         0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13855         0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13856         0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13857         0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13858         0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13859         0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13860         0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13861         0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13862         0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13863         0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13864         0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13865         0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13866         0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13867         0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13868         0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13869 };
13870
13871 static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13872         0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13873         0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13874         0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13875         0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13876         0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13877         0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13878         0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13879         0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13880         0x80290031, 0x80210039, 0x80210036, 0x80210033,
13881         0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13882         0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13883         0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13884         0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13885         0x80110027, 0x80110024, 0x80110022, 0x80110020,
13886         0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13887         0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13888         0x80090029, 0x80090027, 0x80090025, 0x80090023,
13889         0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13890         0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13891         0x8009061d, 0x8009071d, 0x8009071d, 0x8009071d,
13892         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13893         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13894         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13895         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13896         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13897         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13898         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13899         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13900         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13901         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13902         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13903         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d
13904 };
13905
13906 static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13907         0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13908         0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13909         0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13910         0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13911         0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13912         0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13913         0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13914         0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13915         0x10290031, 0x10210039, 0x10210036, 0x10210033,
13916         0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13917         0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13918         0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13919         0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13920         0x10110027, 0x10110024, 0x10110022, 0x10110020,
13921         0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13922         0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13923         0x10090029, 0x10090027, 0x10090025, 0x10090023,
13924         0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13925         0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13926         0x10090015, 0x10090013, 0x10090012, 0x10090011,
13927         0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13928         0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13929         0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13930         0x10090008, 0x10090008, 0x10090007, 0x10090007,
13931         0x10090007, 0x10090006, 0x10090006, 0x10090005,
13932         0x10090005, 0x10090005, 0x10090005, 0x10090004,
13933         0x10090004, 0x10090004, 0x10090004, 0x10090003,
13934         0x10090003, 0x10090003, 0x10090003, 0x10090003,
13935         0x10090003, 0x10090002, 0x10090002, 0x10090002,
13936         0x10090002, 0x10090002, 0x10090002, 0x10090002,
13937         0x10090002, 0x10090002, 0x10090001, 0x10090001,
13938         0x10090001, 0x10090001, 0x10090001, 0x10090001
13939 };
13940
13941 static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13942         0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13943         0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13944         0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13945         0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13946         0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13947         0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13948         0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13949         0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13950         0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13951         0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13952         0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13953         0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13954         0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13955         0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13956         0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13957         0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13958         0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13959         0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13960         0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13961         0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13962         0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13963         0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13964         0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13965         0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13966         0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13967         0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
13968         0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
13969         0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
13970         0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
13971         0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
13972         0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
13973         0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
13974 };
13975
13976 static u32 nphy_tpc_5GHz_txgain_rev4[] = {
13977         0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
13978         0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
13979         0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
13980         0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
13981         0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
13982         0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
13983         0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
13984         0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
13985         0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
13986         0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
13987         0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
13988         0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
13989         0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
13990         0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
13991         0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
13992         0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
13993         0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
13994         0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
13995         0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
13996         0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
13997         0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
13998         0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
13999         0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
14000         0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
14001         0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
14002         0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
14003         0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14004         0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14005         0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14006         0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14007         0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14008         0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14009 };
14010
14011 static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14012         0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14013         0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14014         0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14015         0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14016         0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14017         0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14018         0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14019         0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14020         0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14021         0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14022         0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14023         0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14024         0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14025         0x09620039, 0x09620037, 0x09620035, 0x09620033,
14026         0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14027         0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14028         0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14029         0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14030         0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14031         0x06620039, 0x06620037, 0x06620035, 0x06620033,
14032         0x05620046, 0x05620044, 0x05620042, 0x05620040,
14033         0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14034         0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14035         0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14036         0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14037         0x03620038, 0x03620037, 0x03620035, 0x03620033,
14038         0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14039         0x02620046, 0x02620044, 0x02620043, 0x02620042,
14040         0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14041         0x01620043, 0x01620042, 0x01620041, 0x01620040,
14042         0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14043         0x0062003b, 0x00620039, 0x00620037, 0x00620035
14044 };
14045
14046 static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14047         0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14048         0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14049         0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14050         0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14051         0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14052         0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14053         0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14054         0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14055         0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14056         0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14057         0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14058         0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14059         0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14060         0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14061         0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14062         0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14063         0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14064         0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14065         0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14066         0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14067         0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14068         0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14069         0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14070         0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14071         0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14072         0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14073         0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14074         0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14075         0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14076         0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14077         0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14078         0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14079 };
14080
14081 static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14082 static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14083 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14084         0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a };
14085 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14086         0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16 };
14087
14088 static bool wlc_phy_chan2freq_nphy(phy_info_t *pi, uint channel, int *f,
14089                                    chan_info_nphy_radio2057_t **t0,
14090                                    chan_info_nphy_radio205x_t **t1,
14091                                    chan_info_nphy_radio2057_rev5_t **t2,
14092                                    chan_info_nphy_2055_t **t3);
14093 static void wlc_phy_chanspec_nphy_setup(phy_info_t *pi, chanspec_t chans,
14094                                         const nphy_sfo_cfg_t *c);
14095
14096 static void wlc_phy_adjust_rx_analpfbw_nphy(phy_info_t *pi,
14097                                             u16 reduction_factr);
14098 static void wlc_phy_adjust_min_noisevar_nphy(phy_info_t *pi, int ntones, int *,
14099                                              u32 *buf);
14100 static void wlc_phy_adjust_crsminpwr_nphy(phy_info_t *pi, u8 minpwr);
14101 static void wlc_phy_txlpfbw_nphy(phy_info_t *pi);
14102 static void wlc_phy_spurwar_nphy(phy_info_t *pi);
14103
14104 static void wlc_phy_radio_preinit_2055(phy_info_t *pi);
14105 static void wlc_phy_radio_init_2055(phy_info_t *pi);
14106 static void wlc_phy_radio_postinit_2055(phy_info_t *pi);
14107 static void wlc_phy_radio_preinit_205x(phy_info_t *pi);
14108 static void wlc_phy_radio_init_2056(phy_info_t *pi);
14109 static void wlc_phy_radio_postinit_2056(phy_info_t *pi);
14110 static void wlc_phy_radio_init_2057(phy_info_t *pi);
14111 static void wlc_phy_radio_postinit_2057(phy_info_t *pi);
14112 static void wlc_phy_workarounds_nphy(phy_info_t *pi);
14113 static void wlc_phy_workarounds_nphy_gainctrl(phy_info_t *pi);
14114 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(phy_info_t *pi);
14115 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(phy_info_t *pi);
14116 static void wlc_phy_adjust_lnagaintbl_nphy(phy_info_t *pi);
14117
14118 static void wlc_phy_restore_rssical_nphy(phy_info_t *pi);
14119 static void wlc_phy_reapply_txcal_coeffs_nphy(phy_info_t *pi);
14120 static void wlc_phy_tx_iq_war_nphy(phy_info_t *pi);
14121 static int wlc_phy_cal_rxiq_nphy_rev3(phy_info_t *pi, nphy_txgains_t tg,
14122                                       u8 type, bool d);
14123 static void wlc_phy_rxcal_gainctrl_nphy_rev5(phy_info_t *pi, u8 rxcore,
14124                                              u16 *rg, u8 type);
14125 static void wlc_phy_update_mimoconfig_nphy(phy_info_t *pi, s32 preamble);
14126 static void wlc_phy_savecal_nphy(phy_info_t *pi);
14127 static void wlc_phy_restorecal_nphy(phy_info_t *pi);
14128 static void wlc_phy_resetcca_nphy(phy_info_t *pi);
14129
14130 static void wlc_phy_txpwrctrl_config_nphy(phy_info_t *pi);
14131 static void wlc_phy_internal_cal_txgain_nphy(phy_info_t *pi);
14132 static void wlc_phy_precal_txgain_nphy(phy_info_t *pi);
14133 static void wlc_phy_update_txcal_ladder_nphy(phy_info_t *pi, u16 core);
14134
14135 static void wlc_phy_extpa_set_tx_digi_filts_nphy(phy_info_t *pi);
14136 static void wlc_phy_ipa_set_tx_digi_filts_nphy(phy_info_t *pi);
14137 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(phy_info_t *pi);
14138 static u16 wlc_phy_ipa_get_bbmult_nphy(phy_info_t *pi);
14139 static void wlc_phy_ipa_set_bbmult_nphy(phy_info_t *pi, u8 m0, u8 m1);
14140 static u32 *wlc_phy_get_ipa_gaintbl_nphy(phy_info_t *pi);
14141
14142 static void wlc_phy_a1_nphy(phy_info_t *pi, u8 core, u32 winsz, u32,
14143                             u32 e);
14144 static u8 wlc_phy_a3_nphy(phy_info_t *pi, u8 start_gain, u8 core);
14145 static void wlc_phy_a2_nphy(phy_info_t *pi, nphy_ipa_txcalgains_t *,
14146                             phy_cal_mode_t, u8);
14147 static void wlc_phy_papd_cal_cleanup_nphy(phy_info_t *pi,
14148                                           nphy_papd_restore_state *state);
14149 static void wlc_phy_papd_cal_setup_nphy(phy_info_t *pi,
14150                                         nphy_papd_restore_state *state, u8);
14151
14152 static void wlc_phy_clip_det_nphy(phy_info_t *pi, u8 write, u16 *vals);
14153
14154 static void wlc_phy_set_rfseq_nphy(phy_info_t *pi, u8 cmd, u8 *evts,
14155                                    u8 *dlys, u8 len);
14156
14157 static u16 wlc_phy_read_lpf_bw_ctl_nphy(phy_info_t *pi, u16 offset);
14158
14159 static void
14160 wlc_phy_rfctrl_override_nphy_rev7(phy_info_t *pi, u16 field, u16 value,
14161                                   u8 core_mask, u8 off,
14162                                   u8 override_id);
14163
14164 static void wlc_phy_rssi_cal_nphy_rev2(phy_info_t *pi, u8 rssi_type);
14165 static void wlc_phy_rssi_cal_nphy_rev3(phy_info_t *pi);
14166
14167 static bool wlc_phy_txpwr_srom_read_nphy(phy_info_t *pi);
14168 static void wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max,
14169                                             u16 *pwr_offset,
14170                                             u8 tmp_max_pwr, u8 rate_start,
14171                                             u8 rate_end);
14172
14173 static void wlc_phy_txpwr_limit_to_tbl_nphy(phy_info_t *pi);
14174 static void wlc_phy_txpwrctrl_coeff_setup_nphy(phy_info_t *pi);
14175 static void wlc_phy_txpwrctrl_idle_tssi_nphy(phy_info_t *pi);
14176 static void wlc_phy_txpwrctrl_pwr_setup_nphy(phy_info_t *pi);
14177
14178 static bool wlc_phy_txpwr_ison_nphy(phy_info_t *pi);
14179 static u8 wlc_phy_txpwr_idx_cur_get_nphy(phy_info_t *pi, u8 core);
14180 static void wlc_phy_txpwr_idx_cur_set_nphy(phy_info_t *pi, u8 idx0,
14181                                            u8 idx1);
14182 static void wlc_phy_a4(phy_info_t *pi, bool full_cal);
14183
14184 static u16 wlc_phy_radio205x_rcal(phy_info_t *pi);
14185
14186 static u16 wlc_phy_radio2057_rccal(phy_info_t *pi);
14187
14188 static u16 wlc_phy_gen_load_samples_nphy(phy_info_t *pi, u32 f_kHz,
14189                                             u16 max_val,
14190                                             u8 dac_test_mode);
14191 static void wlc_phy_loadsampletable_nphy(phy_info_t *pi, cs32 *tone_buf,
14192                                          u16 num_samps);
14193 static void wlc_phy_runsamples_nphy(phy_info_t *pi, u16 n, u16 lps,
14194                                     u16 wait, u8 iq, u8 dac_test_mode,
14195                                     bool modify_bbmult);
14196
14197 bool wlc_phy_bist_check_phy(wlc_phy_t *pih)
14198 {
14199         phy_info_t *pi = (phy_info_t *) pih;
14200         u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14201
14202         if (NREV_GE(pi->pubpi.phy_rev, 16))
14203                 return true;
14204
14205         phybist0 = read_phy_reg(pi, 0x0e);
14206         phybist1 = read_phy_reg(pi, 0x0f);
14207         phybist2 = read_phy_reg(pi, 0xea);
14208         phybist3 = read_phy_reg(pi, 0xeb);
14209         phybist4 = read_phy_reg(pi, 0x156);
14210
14211         if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14212             (phybist3 == 0) && (phybist4 == 0)) {
14213                 return true;
14214         }
14215
14216         return false;
14217 }
14218
14219 static void WLBANDINITFN(wlc_phy_bphy_init_nphy) (phy_info_t *pi)
14220 {
14221         u16 addr, val;
14222
14223         ASSERT(ISNPHY(pi));
14224
14225         val = 0x1e1f;
14226         for (addr = (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT);
14227              addr <= (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT_END); addr++) {
14228                 write_phy_reg(pi, addr, val);
14229                 if (addr == (NPHY_TO_BPHY_OFF + 0x97))
14230                         val = 0x3e3f;
14231                 else
14232                         val -= 0x0202;
14233         }
14234
14235         if (NORADIO_ENAB(pi->pubpi)) {
14236
14237                 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_PHYCRSTH, 0x3206);
14238
14239                 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_RSSI_TRESH, 0x281e);
14240
14241                 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_LNA_GAIN_RANGE, 0x1a);
14242
14243         } else {
14244
14245                 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_STEP, 0x668);
14246         }
14247 }
14248
14249 void
14250 wlc_phy_table_write_nphy(phy_info_t *pi, u32 id, u32 len, u32 offset,
14251                          u32 width, const void *data)
14252 {
14253         mimophytbl_info_t tbl;
14254
14255         tbl.tbl_id = id;
14256         tbl.tbl_len = len;
14257         tbl.tbl_offset = offset;
14258         tbl.tbl_width = width;
14259         tbl.tbl_ptr = data;
14260         wlc_phy_write_table_nphy(pi, &tbl);
14261 }
14262
14263 void
14264 wlc_phy_table_read_nphy(phy_info_t *pi, u32 id, u32 len, u32 offset,
14265                         u32 width, void *data)
14266 {
14267         mimophytbl_info_t tbl;
14268
14269         tbl.tbl_id = id;
14270         tbl.tbl_len = len;
14271         tbl.tbl_offset = offset;
14272         tbl.tbl_width = width;
14273         tbl.tbl_ptr = data;
14274         wlc_phy_read_table_nphy(pi, &tbl);
14275 }
14276
14277 static void WLBANDINITFN(wlc_phy_static_table_download_nphy) (phy_info_t *pi)
14278 {
14279         uint idx;
14280
14281         if (NREV_GE(pi->pubpi.phy_rev, 16)) {
14282                 for (idx = 0; idx < mimophytbl_info_sz_rev16; idx++)
14283                         wlc_phy_write_table_nphy(pi,
14284                                                  &mimophytbl_info_rev16[idx]);
14285         } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14286                 for (idx = 0; idx < mimophytbl_info_sz_rev7; idx++)
14287                         wlc_phy_write_table_nphy(pi,
14288                                                  &mimophytbl_info_rev7[idx]);
14289         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14290                 for (idx = 0; idx < mimophytbl_info_sz_rev3; idx++)
14291                         wlc_phy_write_table_nphy(pi,
14292                                                  &mimophytbl_info_rev3[idx]);
14293         } else {
14294                 for (idx = 0; idx < mimophytbl_info_sz_rev0; idx++)
14295                         wlc_phy_write_table_nphy(pi,
14296                                                  &mimophytbl_info_rev0[idx]);
14297         }
14298 }
14299
14300 static void WLBANDINITFN(wlc_phy_tbl_init_nphy) (phy_info_t *pi)
14301 {
14302         uint idx = 0;
14303         u8 antswctrllut;
14304
14305         if (pi->phy_init_por)
14306                 wlc_phy_static_table_download_nphy(pi);
14307
14308         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14309
14310                 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14311                     pi->srom_fem2g.antswctrllut : pi->srom_fem5g.antswctrllut;
14312
14313                 switch (antswctrllut) {
14314                 case 0:
14315
14316                         break;
14317
14318                 case 1:
14319
14320                         if (pi->aa2g == 7) {
14321
14322                                 wlc_phy_table_write_nphy(pi,
14323                                                          NPHY_TBL_ID_ANTSWCTRLLUT,
14324                                                          2, 0x21, 8,
14325                                                          &ant_sw_ctrl_tbl_rev8_2o3
14326                                                          [0]);
14327                         } else {
14328                                 wlc_phy_table_write_nphy(pi,
14329                                                          NPHY_TBL_ID_ANTSWCTRLLUT,
14330                                                          2, 0x21, 8,
14331                                                          &ant_sw_ctrl_tbl_rev8
14332                                                          [0]);
14333                         }
14334                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14335                                                  2, 0x25, 8,
14336                                                  &ant_sw_ctrl_tbl_rev8[2]);
14337                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14338                                                  2, 0x29, 8,
14339                                                  &ant_sw_ctrl_tbl_rev8[4]);
14340                         break;
14341
14342                 case 2:
14343
14344                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14345                                                  2, 0x1, 8,
14346                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core0
14347                                                  [0]);
14348                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14349                                                  2, 0x5, 8,
14350                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core0
14351                                                  [2]);
14352                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14353                                                  2, 0x9, 8,
14354                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core0
14355                                                  [4]);
14356
14357                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14358                                                  2, 0x21, 8,
14359                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core1
14360                                                  [0]);
14361                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14362                                                  2, 0x25, 8,
14363                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core1
14364                                                  [2]);
14365                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14366                                                  2, 0x29, 8,
14367                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core1
14368                                                  [4]);
14369                         break;
14370
14371                 default:
14372
14373                         ASSERT(0);
14374                         break;
14375                 }
14376
14377         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14378                 for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14379
14380                         if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14381                                 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14382                                     pi->srom_fem2g.antswctrllut : pi->
14383                                     srom_fem5g.antswctrllut;
14384                                 switch (antswctrllut) {
14385                                 case 0:
14386                                         wlc_phy_write_table_nphy(pi,
14387                                                                  &mimophytbl_info_rev3_volatile
14388                                                                  [idx]);
14389                                         break;
14390                                 case 1:
14391                                         wlc_phy_write_table_nphy(pi,
14392                                                                  &mimophytbl_info_rev3_volatile1
14393                                                                  [idx]);
14394                                         break;
14395                                 case 2:
14396                                         wlc_phy_write_table_nphy(pi,
14397                                                                  &mimophytbl_info_rev3_volatile2
14398                                                                  [idx]);
14399                                         break;
14400                                 case 3:
14401                                         wlc_phy_write_table_nphy(pi,
14402                                                                  &mimophytbl_info_rev3_volatile3
14403                                                                  [idx]);
14404                                         break;
14405                                 default:
14406
14407                                         ASSERT(0);
14408                                         break;
14409                                 }
14410                         } else {
14411                                 wlc_phy_write_table_nphy(pi,
14412                                                          &mimophytbl_info_rev3_volatile
14413                                                          [idx]);
14414                         }
14415                 }
14416         } else {
14417                 for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++) {
14418                         wlc_phy_write_table_nphy(pi,
14419                                                  &mimophytbl_info_rev0_volatile
14420                                                  [idx]);
14421                 }
14422         }
14423 }
14424
14425 static void
14426 wlc_phy_write_txmacreg_nphy(phy_info_t *pi, u16 holdoff, u16 delay)
14427 {
14428         write_phy_reg(pi, 0x77, holdoff);
14429         write_phy_reg(pi, 0xb4, delay);
14430 }
14431
14432 void wlc_phy_nphy_tkip_rifs_war(phy_info_t *pi, u8 rifs)
14433 {
14434         u16 holdoff, delay;
14435
14436         if (rifs) {
14437
14438                 holdoff = 0x10;
14439                 delay = 0x258;
14440         } else {
14441
14442                 holdoff = 0x15;
14443                 delay = 0x320;
14444         }
14445
14446         wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14447
14448         if (pi && pi->sh && (pi->sh->_rifs_phy != rifs)) {
14449                 pi->sh->_rifs_phy = rifs;
14450         }
14451 }
14452
14453 bool wlc_phy_attach_nphy(phy_info_t *pi)
14454 {
14455         uint i;
14456
14457         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6)) {
14458                 pi->phyhang_avoid = true;
14459         }
14460
14461         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14462
14463                 pi->nphy_gband_spurwar_en = true;
14464
14465                 if (pi->sh->boardflags2 & BFL2_SPUR_WAR) {
14466                         pi->nphy_aband_spurwar_en = true;
14467                 }
14468         }
14469         if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14470
14471                 if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR) {
14472                         pi->nphy_gband_spurwar2_en = true;
14473                 }
14474         }
14475
14476         pi->n_preamble_override = AUTO;
14477         if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14478                 pi->n_preamble_override = WLC_N_PREAMBLE_MIXEDMODE;
14479
14480         pi->nphy_txrx_chain = AUTO;
14481         pi->phy_scraminit = AUTO;
14482
14483         pi->nphy_rxcalparams = 0x010100B5;
14484
14485         pi->nphy_perical = PHY_PERICAL_MPHASE;
14486         pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14487         pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14488
14489         pi->nphy_gain_boost = true;
14490         pi->nphy_elna_gain_config = false;
14491         pi->radio_is_on = false;
14492
14493         for (i = 0; i < pi->pubpi.phy_corenum; i++) {
14494                 pi->nphy_txpwrindex[i].index = AUTO;
14495         }
14496
14497         wlc_phy_txpwrctrl_config_nphy(pi);
14498         if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14499                 pi->hwpwrctrl_capable = true;
14500
14501         pi->pi_fptr.init = wlc_phy_init_nphy;
14502         pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14503         pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14504         pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14505
14506         if (!wlc_phy_txpwr_srom_read_nphy(pi))
14507                 return false;
14508
14509         return true;
14510 }
14511
14512 static void wlc_phy_txpwrctrl_config_nphy(phy_info_t *pi)
14513 {
14514
14515         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14516                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14517                 pi->phy_5g_pwrgain = true;
14518                 return;
14519         }
14520
14521         pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14522         pi->phy_5g_pwrgain = false;
14523
14524         if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14525             NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14526                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14527         else if ((pi->sh->sromrev >= 4)
14528                  && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14529                 pi->phy_5g_pwrgain = true;
14530 }
14531
14532 void WLBANDINITFN(wlc_phy_init_nphy) (phy_info_t *pi)
14533 {
14534         u16 val;
14535         u16 clip1_ths[2];
14536         nphy_txgains_t target_gain;
14537         u8 tx_pwr_ctrl_state;
14538         bool do_nphy_cal = false;
14539         uint core;
14540         uint origidx, intr_val;
14541         d11regs_t *regs;
14542         u32 d11_clk_ctl_st;
14543
14544         core = 0;
14545
14546         if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN)) {
14547                 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
14548         }
14549
14550         if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
14551             ((pi->sh->chippkg == BCM4717_PKG_ID) ||
14552              (pi->sh->chippkg == BCM4718_PKG_ID))) {
14553                 if ((pi->sh->boardflags & BFL_EXTLNA) &&
14554                     (CHSPEC_IS2G(pi->radio_chanspec))) {
14555                         si_corereg(pi->sh->sih, SI_CC_IDX,
14556                                    offsetof(chipcregs_t, chipcontrol), 0x40,
14557                                    0x40);
14558                 }
14559         }
14560
14561         if ((!PHY_IPA(pi)) && (pi->sh->chip == BCM5357_CHIP_ID)) {
14562                 si_pmu_chipcontrol(pi->sh->sih, 1, CCTRL5357_EXTPA,
14563                                    CCTRL5357_EXTPA);
14564         }
14565
14566         if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
14567             CHSPEC_IS40(pi->radio_chanspec)) {
14568
14569                 regs = (d11regs_t *) si_switch_core(pi->sh->sih, D11_CORE_ID,
14570                                                     &origidx, &intr_val);
14571                 ASSERT(regs != NULL);
14572
14573                 d11_clk_ctl_st = R_REG(pi->sh->osh, &regs->clk_ctl_st);
14574                 AND_REG(pi->sh->osh, &regs->clk_ctl_st,
14575                         ~(CCS_FORCEHT | CCS_HTAREQ));
14576
14577                 W_REG(pi->sh->osh, &regs->clk_ctl_st, d11_clk_ctl_st);
14578
14579                 si_restore_core(pi->sh->sih, origidx, intr_val);
14580         }
14581
14582         pi->use_int_tx_iqlo_cal_nphy =
14583             (PHY_IPA(pi) ||
14584              (NREV_GE(pi->pubpi.phy_rev, 7) ||
14585               (NREV_GE(pi->pubpi.phy_rev, 5)
14586                && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
14587
14588         pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
14589
14590         pi->nphy_deaf_count = 0;
14591
14592         wlc_phy_tbl_init_nphy(pi);
14593
14594         pi->nphy_crsminpwr_adjusted = false;
14595         pi->nphy_noisevars_adjusted = false;
14596
14597         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14598                 write_phy_reg(pi, 0xe7, 0);
14599                 write_phy_reg(pi, 0xec, 0);
14600                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14601                         write_phy_reg(pi, 0x342, 0);
14602                         write_phy_reg(pi, 0x343, 0);
14603                         write_phy_reg(pi, 0x346, 0);
14604                         write_phy_reg(pi, 0x347, 0);
14605                 }
14606                 write_phy_reg(pi, 0xe5, 0);
14607                 write_phy_reg(pi, 0xe6, 0);
14608         } else {
14609                 write_phy_reg(pi, 0xec, 0);
14610         }
14611
14612         write_phy_reg(pi, 0x91, 0);
14613         write_phy_reg(pi, 0x92, 0);
14614         if (NREV_LT(pi->pubpi.phy_rev, 6)) {
14615                 write_phy_reg(pi, 0x93, 0);
14616                 write_phy_reg(pi, 0x94, 0);
14617         }
14618
14619         and_phy_reg(pi, 0xa1, ~3);
14620
14621         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14622                 write_phy_reg(pi, 0x8f, 0);
14623                 write_phy_reg(pi, 0xa5, 0);
14624         } else {
14625                 write_phy_reg(pi, 0xa5, 0);
14626         }
14627
14628         if (NREV_IS(pi->pubpi.phy_rev, 2))
14629                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
14630         else if (NREV_LT(pi->pubpi.phy_rev, 2))
14631                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
14632
14633         write_phy_reg(pi, 0x203, 32);
14634         write_phy_reg(pi, 0x201, 32);
14635
14636         if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
14637                 write_phy_reg(pi, 0x20d, 160);
14638         else
14639                 write_phy_reg(pi, 0x20d, 184);
14640
14641         write_phy_reg(pi, 0x13a, 200);
14642
14643         write_phy_reg(pi, 0x70, 80);
14644
14645         write_phy_reg(pi, 0x1ff, 48);
14646
14647         if (NREV_LT(pi->pubpi.phy_rev, 8)) {
14648                 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
14649         }
14650
14651         wlc_phy_stf_chain_upd_nphy(pi);
14652
14653         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
14654                 write_phy_reg(pi, 0x180, 0xaa8);
14655                 write_phy_reg(pi, 0x181, 0x9a4);
14656         }
14657
14658         if (PHY_IPA(pi)) {
14659                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
14660
14661                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
14662                                     0x29b, (0x1 << 0), (1) << 0);
14663
14664                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
14665                                     0x29c, (0x1ff << 7),
14666                                     (pi->nphy_papd_epsilon_offset[core]) << 7);
14667
14668                 }
14669
14670                 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
14671         } else {
14672
14673                 if (NREV_GE(pi->pubpi.phy_rev, 5)) {
14674                         wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
14675                 }
14676         }
14677
14678         wlc_phy_workarounds_nphy(pi);
14679
14680         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
14681
14682         val = read_phy_reg(pi, 0x01);
14683         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
14684         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
14685         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
14686
14687         wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
14688
14689         wlc_phy_pa_override_nphy(pi, OFF);
14690         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
14691         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
14692         wlc_phy_pa_override_nphy(pi, ON);
14693
14694         wlc_phy_classifier_nphy(pi, 0, 0);
14695         wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
14696
14697         if (CHSPEC_IS2G(pi->radio_chanspec))
14698                 wlc_phy_bphy_init_nphy(pi);
14699
14700         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
14701         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
14702
14703         wlc_phy_txpwr_fixpower_nphy(pi);
14704
14705         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
14706
14707         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
14708
14709         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14710                 u32 *tx_pwrctrl_tbl = NULL;
14711                 u16 idx;
14712                 s16 pga_gn = 0;
14713                 s16 pad_gn = 0;
14714                 s32 rfpwr_offset = 0;
14715
14716                 if (PHY_IPA(pi)) {
14717                         tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
14718                 } else {
14719                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
14720                                 if NREV_IS
14721                                         (pi->pubpi.phy_rev, 3) {
14722                                         tx_pwrctrl_tbl =
14723                                             nphy_tpc_5GHz_txgain_rev3;
14724                                 } else if NREV_IS
14725                                         (pi->pubpi.phy_rev, 4) {
14726                                         tx_pwrctrl_tbl =
14727                                             (pi->srom_fem5g.extpagain == 3) ?
14728                                             nphy_tpc_5GHz_txgain_HiPwrEPA :
14729                                             nphy_tpc_5GHz_txgain_rev4;
14730                                 } else {
14731                                         tx_pwrctrl_tbl =
14732                                             nphy_tpc_5GHz_txgain_rev5;
14733                                 }
14734
14735                         } else {
14736                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14737                                         if (pi->pubpi.radiorev == 5) {
14738                                                 tx_pwrctrl_tbl =
14739                                                     nphy_tpc_txgain_epa_2057rev5;
14740                                         } else if (pi->pubpi.radiorev == 3) {
14741                                                 tx_pwrctrl_tbl =
14742                                                     nphy_tpc_txgain_epa_2057rev3;
14743                                         }
14744
14745                                 } else {
14746                                         if (NREV_GE(pi->pubpi.phy_rev, 5) &&
14747                                             (pi->srom_fem2g.extpagain == 3)) {
14748                                                 tx_pwrctrl_tbl =
14749                                                     nphy_tpc_txgain_HiPwrEPA;
14750                                         } else {
14751                                                 tx_pwrctrl_tbl =
14752                                                     nphy_tpc_txgain_rev3;
14753                                         }
14754                                 }
14755                         }
14756                 }
14757
14758                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
14759                                          192, 32, tx_pwrctrl_tbl);
14760                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
14761                                          192, 32, tx_pwrctrl_tbl);
14762
14763                 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
14764
14765                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14766
14767                         for (idx = 0; idx < 128; idx++) {
14768                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
14769                                 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
14770
14771                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
14772                                         if ((pi->pubpi.radiorev == 3) ||
14773                                             (pi->pubpi.radiorev == 4) ||
14774                                             (pi->pubpi.radiorev == 6)) {
14775                                                 rfpwr_offset = (s16)
14776                                                     nphy_papd_padgain_dlt_2g_2057rev3n4
14777                                                     [pad_gn];
14778                                         } else if (pi->pubpi.radiorev == 5) {
14779                                                 rfpwr_offset = (s16)
14780                                                     nphy_papd_padgain_dlt_2g_2057rev5
14781                                                     [pad_gn];
14782                                         } else if ((pi->pubpi.radiorev == 7)
14783                                                    || (pi->pubpi.radiorev ==
14784                                                        8)) {
14785                                                 rfpwr_offset = (s16)
14786                                                     nphy_papd_padgain_dlt_2g_2057rev7
14787                                                     [pad_gn];
14788                                         } else {
14789                                                 ASSERT(0);
14790                                         }
14791
14792                                 } else {
14793                                         if ((pi->pubpi.radiorev == 3) ||
14794                                             (pi->pubpi.radiorev == 4) ||
14795                                             (pi->pubpi.radiorev == 6)) {
14796                                                 rfpwr_offset = (s16)
14797                                                     nphy_papd_pgagain_dlt_5g_2057
14798                                                     [pga_gn];
14799                                         } else if ((pi->pubpi.radiorev == 7)
14800                                                    || (pi->pubpi.radiorev ==
14801                                                        8)) {
14802                                                 rfpwr_offset = (s16)
14803                                                     nphy_papd_pgagain_dlt_5g_2057rev7
14804                                                     [pga_gn];
14805                                         } else {
14806                                                 ASSERT(0);
14807                                         }
14808                                 }
14809                                 wlc_phy_table_write_nphy(pi,
14810                                                          NPHY_TBL_ID_CORE1TXPWRCTL,
14811                                                          1, 576 + idx, 32,
14812                                                          &rfpwr_offset);
14813                                 wlc_phy_table_write_nphy(pi,
14814                                                          NPHY_TBL_ID_CORE2TXPWRCTL,
14815                                                          1, 576 + idx, 32,
14816                                                          &rfpwr_offset);
14817                         }
14818                 } else {
14819
14820                         for (idx = 0; idx < 128; idx++) {
14821                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
14822                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
14823                                         rfpwr_offset = (s16)
14824                                             nphy_papd_pga_gain_delta_ipa_2g
14825                                             [pga_gn];
14826                                 } else {
14827                                         rfpwr_offset = (s16)
14828                                             nphy_papd_pga_gain_delta_ipa_5g
14829                                             [pga_gn];
14830                                 }
14831
14832                                 wlc_phy_table_write_nphy(pi,
14833                                                          NPHY_TBL_ID_CORE1TXPWRCTL,
14834                                                          1, 576 + idx, 32,
14835                                                          &rfpwr_offset);
14836                                 wlc_phy_table_write_nphy(pi,
14837                                                          NPHY_TBL_ID_CORE2TXPWRCTL,
14838                                                          1, 576 + idx, 32,
14839                                                          &rfpwr_offset);
14840                         }
14841
14842                 }
14843         } else {
14844
14845                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
14846                                          192, 32, nphy_tpc_txgain);
14847                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
14848                                          192, 32, nphy_tpc_txgain);
14849         }
14850
14851         if (pi->sh->phyrxchain != 0x3) {
14852                 wlc_phy_rxcore_setstate_nphy((wlc_phy_t *) pi,
14853                                              pi->sh->phyrxchain);
14854         }
14855
14856         if (PHY_PERICAL_MPHASE_PENDING(pi)) {
14857                 wlc_phy_cal_perical_mphase_restart(pi);
14858         }
14859
14860         if (!NORADIO_ENAB(pi->pubpi)) {
14861                 bool do_rssi_cal = false;
14862
14863                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14864                         do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
14865                             (pi->nphy_rssical_chanspec_2G == 0) :
14866                             (pi->nphy_rssical_chanspec_5G == 0);
14867
14868                         if (do_rssi_cal) {
14869                                 wlc_phy_rssi_cal_nphy(pi);
14870                         } else {
14871                                 wlc_phy_restore_rssical_nphy(pi);
14872                         }
14873                 } else {
14874                         wlc_phy_rssi_cal_nphy(pi);
14875                 }
14876
14877                 if (!SCAN_RM_IN_PROGRESS(pi)) {
14878                         do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
14879                             (pi->nphy_iqcal_chanspec_2G == 0) :
14880                             (pi->nphy_iqcal_chanspec_5G == 0);
14881                 }
14882
14883                 if (!pi->do_initcal)
14884                         do_nphy_cal = false;
14885
14886                 if (do_nphy_cal) {
14887
14888                         target_gain = wlc_phy_get_tx_gain_nphy(pi);
14889
14890                         if (pi->antsel_type == ANTSEL_2x3)
14891                                 wlc_phy_antsel_init((wlc_phy_t *) pi, true);
14892
14893                         if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
14894                                 wlc_phy_rssi_cal_nphy(pi);
14895
14896                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14897                                         pi->nphy_cal_orig_pwr_idx[0] =
14898                                             pi->nphy_txpwrindex[PHY_CORE_0].
14899                                             index_internal;
14900                                         pi->nphy_cal_orig_pwr_idx[1] =
14901                                             pi->nphy_txpwrindex[PHY_CORE_1].
14902                                             index_internal;
14903
14904                                         wlc_phy_precal_txgain_nphy(pi);
14905                                         target_gain =
14906                                             wlc_phy_get_tx_gain_nphy(pi);
14907                                 }
14908
14909                                 if (wlc_phy_cal_txiqlo_nphy
14910                                     (pi, target_gain, true, false) == BCME_OK) {
14911                                         if (wlc_phy_cal_rxiq_nphy
14912                                             (pi, target_gain, 2,
14913                                              false) == BCME_OK) {
14914                                                 wlc_phy_savecal_nphy(pi);
14915
14916                                         }
14917                                 }
14918                         } else if (pi->mphase_cal_phase_id ==
14919                                    MPHASE_CAL_STATE_IDLE) {
14920
14921                                 wlc_phy_cal_perical((wlc_phy_t *) pi,
14922                                                     PHY_PERICAL_PHYINIT);
14923                         }
14924                 } else {
14925                         wlc_phy_restorecal_nphy(pi);
14926                 }
14927         }
14928
14929         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
14930
14931         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
14932
14933         wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
14934
14935         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
14936
14937                 write_phy_reg(pi, 0x70, 50);
14938
14939         wlc_phy_txlpfbw_nphy(pi);
14940
14941         wlc_phy_spurwar_nphy(pi);
14942
14943 }
14944
14945 static void wlc_phy_update_mimoconfig_nphy(phy_info_t *pi, s32 preamble)
14946 {
14947         bool gf_preamble = false;
14948         u16 val;
14949
14950         if (preamble == WLC_N_PREAMBLE_GF) {
14951                 gf_preamble = true;
14952         }
14953
14954         val = read_phy_reg(pi, 0xed);
14955
14956         val |= RX_GF_MM_AUTO;
14957         val &= ~RX_GF_OR_MM;
14958         if (gf_preamble)
14959                 val |= RX_GF_OR_MM;
14960
14961         write_phy_reg(pi, 0xed, val);
14962 }
14963
14964 static void wlc_phy_resetcca_nphy(phy_info_t *pi)
14965 {
14966         u16 val;
14967
14968         ASSERT(0 == (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC));
14969
14970         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
14971
14972         val = read_phy_reg(pi, 0x01);
14973         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
14974         udelay(1);
14975         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
14976
14977         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
14978
14979         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
14980 }
14981
14982 void wlc_phy_pa_override_nphy(phy_info_t *pi, bool en)
14983 {
14984         u16 rfctrlintc_override_val;
14985
14986         if (!en) {
14987
14988                 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
14989                 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
14990
14991                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14992                         rfctrlintc_override_val = 0x1480;
14993                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14994                         rfctrlintc_override_val =
14995                             CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
14996                 } else {
14997                         rfctrlintc_override_val =
14998                             CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
14999                 }
15000
15001                 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
15002                 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
15003         } else {
15004
15005                 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
15006                 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
15007         }
15008
15009 }
15010
15011 void wlc_phy_stf_chain_upd_nphy(phy_info_t *pi)
15012 {
15013
15014         u16 txrx_chain =
15015             (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
15016         bool CoreActv_override = false;
15017
15018         if (pi->nphy_txrx_chain == WLC_N_TXRX_CHAIN0) {
15019                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
15020                 CoreActv_override = true;
15021
15022                 if (NREV_LE(pi->pubpi.phy_rev, 2)) {
15023                         and_phy_reg(pi, 0xa0, ~0x20);
15024                 }
15025         } else if (pi->nphy_txrx_chain == WLC_N_TXRX_CHAIN1) {
15026                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
15027                 CoreActv_override = true;
15028
15029                 if (NREV_LE(pi->pubpi.phy_rev, 2)) {
15030                         or_phy_reg(pi, 0xa0, 0x20);
15031                 }
15032         }
15033
15034         mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
15035
15036         if (CoreActv_override) {
15037
15038                 pi->nphy_perical = PHY_PERICAL_DISABLE;
15039                 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
15040         } else {
15041                 pi->nphy_perical = PHY_PERICAL_MPHASE;
15042                 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
15043         }
15044 }
15045
15046 void wlc_phy_rxcore_setstate_nphy(wlc_phy_t *pih, u8 rxcore_bitmask)
15047 {
15048         u16 regval;
15049         u16 tbl_buf[16];
15050         uint i;
15051         phy_info_t *pi = (phy_info_t *) pih;
15052         u16 tbl_opcode;
15053         bool suspend;
15054
15055         pi->sh->phyrxchain = rxcore_bitmask;
15056
15057         if (!pi->sh->clk)
15058                 return;
15059
15060         suspend =
15061             (0 == (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC));
15062         if (!suspend)
15063                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
15064
15065         if (pi->phyhang_avoid)
15066                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15067
15068         regval = read_phy_reg(pi, 0xa2);
15069         regval &= ~(0xf << 4);
15070         regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
15071         write_phy_reg(pi, 0xa2, regval);
15072
15073         if ((rxcore_bitmask & 0x3) != 0x3) {
15074
15075                 write_phy_reg(pi, 0x20e, 1);
15076
15077                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15078                         if (pi->rx2tx_biasentry == -1) {
15079                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
15080                                                         ARRAY_SIZE(tbl_buf), 80,
15081                                                         16, tbl_buf);
15082
15083                                 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
15084                                         if (tbl_buf[i] ==
15085                                             NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
15086
15087                                                 pi->rx2tx_biasentry = (u8) i;
15088                                                 tbl_opcode =
15089                                                     NPHY_REV3_RFSEQ_CMD_NOP;
15090                                                 wlc_phy_table_write_nphy(pi,
15091                                                                          NPHY_TBL_ID_RFSEQ,
15092                                                                          1, i,
15093                                                                          16,
15094                                                                          &tbl_opcode);
15095                                                 break;
15096                                         } else if (tbl_buf[i] ==
15097                                                    NPHY_REV3_RFSEQ_CMD_END) {
15098                                                 break;
15099                                         }
15100                                 }
15101                         }
15102                 }
15103         } else {
15104
15105                 write_phy_reg(pi, 0x20e, 30);
15106
15107                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15108                         if (pi->rx2tx_biasentry != -1) {
15109                                 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
15110                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15111                                                          1, pi->rx2tx_biasentry,
15112                                                          16, &tbl_opcode);
15113                                 pi->rx2tx_biasentry = -1;
15114                         }
15115                 }
15116         }
15117
15118         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
15119
15120         if (pi->phyhang_avoid)
15121                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
15122
15123         if (!suspend)
15124                 wlapi_enable_mac(pi->sh->physhim);
15125 }
15126
15127 u8 wlc_phy_rxcore_getstate_nphy(wlc_phy_t *pih)
15128 {
15129         u16 regval, rxen_bits;
15130         phy_info_t *pi = (phy_info_t *) pih;
15131
15132         regval = read_phy_reg(pi, 0xa2);
15133         rxen_bits = (regval >> 4) & 0xf;
15134
15135         return (u8) rxen_bits;
15136 }
15137
15138 bool wlc_phy_n_txpower_ipa_ison(phy_info_t *pi)
15139 {
15140         return PHY_IPA(pi);
15141 }
15142
15143 static void wlc_phy_txpwr_limit_to_tbl_nphy(phy_info_t *pi)
15144 {
15145         u8 idx, idx2, i, delta_ind;
15146
15147         for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++) {
15148                 pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
15149         }
15150
15151         for (i = 0; i < 4; i++) {
15152                 idx2 = 0;
15153
15154                 delta_ind = 0;
15155
15156                 switch (i) {
15157                 case 0:
15158
15159                         if (CHSPEC_IS40(pi->radio_chanspec)
15160                             && NPHY_IS_SROM_REINTERPRET) {
15161                                 idx = TXP_FIRST_MCS_40_SISO;
15162                         } else {
15163                                 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15164                                     TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
15165                                 delta_ind = 1;
15166                         }
15167                         break;
15168
15169                 case 1:
15170
15171                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15172                             TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
15173                         break;
15174
15175                 case 2:
15176
15177                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15178                             TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
15179                         break;
15180
15181                 case 3:
15182
15183                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15184                             TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
15185                         break;
15186                 }
15187
15188                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15189                     pi->tx_power_offset[idx];
15190                 idx = idx + delta_ind;
15191                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15192                     pi->tx_power_offset[idx];
15193                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15194                     pi->tx_power_offset[idx];
15195                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15196                     pi->tx_power_offset[idx++];
15197
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                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15203                     pi->tx_power_offset[idx];
15204                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15205                     pi->tx_power_offset[idx++];
15206
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                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15212                     pi->tx_power_offset[idx];
15213                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15214                     pi->tx_power_offset[idx++];
15215
15216                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15217                     pi->tx_power_offset[idx];
15218                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15219                     pi->tx_power_offset[idx++];
15220                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15221                     pi->tx_power_offset[idx];
15222                 idx = idx + 1 - delta_ind;
15223                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15224                     pi->tx_power_offset[idx];
15225
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                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15231                     pi->tx_power_offset[idx];
15232                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15233                     pi->tx_power_offset[idx];
15234         }
15235 }
15236
15237 void wlc_phy_cal_init_nphy(phy_info_t *pi)
15238 {
15239 }
15240
15241 static void wlc_phy_war_force_trsw_to_R_cliplo_nphy(phy_info_t *pi, u8 core)
15242 {
15243         if (core == PHY_CORE_0) {
15244                 write_phy_reg(pi, 0x38, 0x4);
15245                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
15246                         write_phy_reg(pi, 0x37, 0x0060);
15247                 } else {
15248                         write_phy_reg(pi, 0x37, 0x1080);
15249                 }
15250         } else if (core == PHY_CORE_1) {
15251                 write_phy_reg(pi, 0x2ae, 0x4);
15252                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
15253                         write_phy_reg(pi, 0x2ad, 0x0060);
15254                 } else {
15255                         write_phy_reg(pi, 0x2ad, 0x1080);
15256                 }
15257         }
15258 }
15259
15260 static void wlc_phy_war_txchain_upd_nphy(phy_info_t *pi, u8 txchain)
15261 {
15262         u8 txchain0, txchain1;
15263
15264         txchain0 = txchain & 0x1;
15265         txchain1 = (txchain & 0x2) >> 1;
15266         if (!txchain0) {
15267                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15268         }
15269
15270         if (!txchain1) {
15271                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15272         }
15273 }
15274
15275 static void wlc_phy_workarounds_nphy(phy_info_t *pi)
15276 {
15277         u8 rfseq_rx2tx_events[] = {
15278                 NPHY_RFSEQ_CMD_NOP,
15279                 NPHY_RFSEQ_CMD_RXG_FBW,
15280                 NPHY_RFSEQ_CMD_TR_SWITCH,
15281                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15282                 NPHY_RFSEQ_CMD_RXPD_TXPD,
15283                 NPHY_RFSEQ_CMD_TX_GAIN,
15284                 NPHY_RFSEQ_CMD_EXT_PA
15285         };
15286         u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
15287         u8 rfseq_tx2rx_events[] = {
15288                 NPHY_RFSEQ_CMD_NOP,
15289                 NPHY_RFSEQ_CMD_EXT_PA,
15290                 NPHY_RFSEQ_CMD_TX_GAIN,
15291                 NPHY_RFSEQ_CMD_RXPD_TXPD,
15292                 NPHY_RFSEQ_CMD_TR_SWITCH,
15293                 NPHY_RFSEQ_CMD_RXG_FBW,
15294                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
15295         };
15296         u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
15297         u8 rfseq_tx2rx_events_rev3[] = {
15298                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
15299                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
15300                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
15301                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
15302                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
15303                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
15304                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
15305                 NPHY_REV3_RFSEQ_CMD_END
15306         };
15307         u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
15308         u8 rfseq_rx2tx_events_rev3[] = {
15309                 NPHY_REV3_RFSEQ_CMD_NOP,
15310                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
15311                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
15312                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
15313                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
15314                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
15315                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
15316                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
15317                 NPHY_REV3_RFSEQ_CMD_END
15318         };
15319         u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
15320
15321         u8 rfseq_rx2tx_events_rev3_ipa[] = {
15322                 NPHY_REV3_RFSEQ_CMD_NOP,
15323                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
15324                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
15325                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
15326                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
15327                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
15328                 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
15329                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
15330                 NPHY_REV3_RFSEQ_CMD_END
15331         };
15332         u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
15333         u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
15334
15335         s16 alpha0, alpha1, alpha2;
15336         s16 beta0, beta1, beta2;
15337         u32 leg_data_weights, ht_data_weights, nss1_data_weights,
15338             stbc_data_weights;
15339         u8 chan_freq_range = 0;
15340         u16 dac_control = 0x0002;
15341         u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
15342         u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
15343         u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
15344         u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
15345         u16 *aux_adc_vmid;
15346         u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
15347         u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
15348         u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
15349         u16 *aux_adc_gain;
15350         u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
15351         u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
15352         s32 min_nvar_val = 0x18d;
15353         s32 min_nvar_offset_6mbps = 20;
15354         u8 pdetrange;
15355         u8 triso;
15356         u16 regval;
15357         u16 afectrl_adc_ctrl1_rev7 = 0x20;
15358         u16 afectrl_adc_ctrl2_rev7 = 0x0;
15359         u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
15360         u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
15361         u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
15362         u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
15363         u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
15364         u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
15365         u16 ipalvlshift_3p3_war_en = 0;
15366         u16 rccal_bcap_val, rccal_scap_val;
15367         u16 rccal_tx20_11b_bcap = 0;
15368         u16 rccal_tx20_11b_scap = 0;
15369         u16 rccal_tx20_11n_bcap = 0;
15370         u16 rccal_tx20_11n_scap = 0;
15371         u16 rccal_tx40_11n_bcap = 0;
15372         u16 rccal_tx40_11n_scap = 0;
15373         u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
15374         u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
15375         u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
15376         u16 tx_lpf_bw_ofdm_20mhz = 0;
15377         u16 tx_lpf_bw_ofdm_40mhz = 0;
15378         u16 tx_lpf_bw_11b = 0;
15379         u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
15380         u16 txgm_idac_bleed = 0;
15381         bool rccal_ovrd = false;
15382         u16 freq;
15383         int coreNum;
15384
15385         if (CHSPEC_IS5G(pi->radio_chanspec)) {
15386                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
15387         } else {
15388                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
15389         }
15390
15391         if (pi->phyhang_avoid)
15392                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15393
15394         if (!ISSIM_ENAB(pi->sh->sih)) {
15395                 or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
15396         }
15397
15398         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15399
15400                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
15401                         mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
15402
15403                         mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
15404                         mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
15405                         mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
15406                         mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
15407                         mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
15408                         mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
15409                         mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
15410                         mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
15411                         mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
15412                         mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
15413                         mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
15414                         mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
15415                         mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
15416                         mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
15417                         mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
15418                         mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
15419                 }
15420
15421                 if (NREV_LE(pi->pubpi.phy_rev, 8)) {
15422                         write_phy_reg(pi, 0x23f, 0x1b0);
15423                         write_phy_reg(pi, 0x240, 0x1b0);
15424                 }
15425
15426                 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
15427                         mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
15428                 }
15429
15430                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
15431                                          &dac_control);
15432                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
15433                                          &dac_control);
15434
15435                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15436                                         1, 0, 32, &leg_data_weights);
15437                 leg_data_weights = leg_data_weights & 0xffffff;
15438                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15439                                          1, 0, 32, &leg_data_weights);
15440
15441                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15442                                          2, 0x15e, 16,
15443                                          rfseq_rx2tx_dacbufpu_rev7);
15444                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
15445                                          rfseq_rx2tx_dacbufpu_rev7);
15446
15447                 if (PHY_IPA(pi)) {
15448                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
15449                                                rfseq_rx2tx_events_rev3_ipa,
15450                                                rfseq_rx2tx_dlys_rev3_ipa,
15451                                                sizeof
15452                                                (rfseq_rx2tx_events_rev3_ipa) /
15453                                                sizeof
15454                                                (rfseq_rx2tx_events_rev3_ipa
15455                                                 [0]));
15456                 }
15457
15458                 mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
15459                 mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
15460
15461                 tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
15462                 tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
15463                 tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
15464
15465                 if (PHY_IPA(pi)) {
15466
15467                         if (((pi->pubpi.radiorev == 5)
15468                              && (CHSPEC_IS40(pi->radio_chanspec) == 1))
15469                             || (pi->pubpi.radiorev == 7)
15470                             || (pi->pubpi.radiorev == 8)) {
15471
15472                                 rccal_bcap_val =
15473                                     read_radio_reg(pi,
15474                                                    RADIO_2057_RCCAL_BCAP_VAL);
15475                                 rccal_scap_val =
15476                                     read_radio_reg(pi,
15477                                                    RADIO_2057_RCCAL_SCAP_VAL);
15478
15479                                 rccal_tx20_11b_bcap = rccal_bcap_val;
15480                                 rccal_tx20_11b_scap = rccal_scap_val;
15481
15482                                 if ((pi->pubpi.radiorev == 5) &&
15483                                     (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
15484
15485                                         rccal_tx20_11n_bcap = rccal_bcap_val;
15486                                         rccal_tx20_11n_scap = rccal_scap_val;
15487                                         rccal_tx40_11n_bcap = 0xc;
15488                                         rccal_tx40_11n_scap = 0xc;
15489
15490                                         rccal_ovrd = true;
15491
15492                                 } else if ((pi->pubpi.radiorev == 7)
15493                                            || (pi->pubpi.radiorev == 8)) {
15494
15495                                         tx_lpf_bw_ofdm_20mhz = 4;
15496                                         tx_lpf_bw_11b = 1;
15497
15498                                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
15499                                                 rccal_tx20_11n_bcap = 0xc;
15500                                                 rccal_tx20_11n_scap = 0xc;
15501                                                 rccal_tx40_11n_bcap = 0xa;
15502                                                 rccal_tx40_11n_scap = 0xa;
15503                                         } else {
15504                                                 rccal_tx20_11n_bcap = 0x14;
15505                                                 rccal_tx20_11n_scap = 0x14;
15506                                                 rccal_tx40_11n_bcap = 0xf;
15507                                                 rccal_tx40_11n_scap = 0xf;
15508                                         }
15509
15510                                         rccal_ovrd = true;
15511                                 }
15512                         }
15513
15514                 } else {
15515
15516                         if (pi->pubpi.radiorev == 5) {
15517
15518                                 tx_lpf_bw_ofdm_20mhz = 1;
15519                                 tx_lpf_bw_ofdm_40mhz = 3;
15520
15521                                 rccal_bcap_val =
15522                                     read_radio_reg(pi,
15523                                                    RADIO_2057_RCCAL_BCAP_VAL);
15524                                 rccal_scap_val =
15525                                     read_radio_reg(pi,
15526                                                    RADIO_2057_RCCAL_SCAP_VAL);
15527
15528                                 rccal_tx20_11b_bcap = rccal_bcap_val;
15529                                 rccal_tx20_11b_scap = rccal_scap_val;
15530
15531                                 rccal_tx20_11n_bcap = 0x13;
15532                                 rccal_tx20_11n_scap = 0x11;
15533                                 rccal_tx40_11n_bcap = 0x13;
15534                                 rccal_tx40_11n_scap = 0x11;
15535
15536                                 rccal_ovrd = true;
15537                         }
15538                 }
15539
15540                 if (rccal_ovrd) {
15541
15542                         rx2tx_lpf_rc_lut_tx20_11b = (rccal_tx20_11b_bcap << 8) |
15543                             (rccal_tx20_11b_scap << 3) | tx_lpf_bw_11b;
15544                         rx2tx_lpf_rc_lut_tx20_11n = (rccal_tx20_11n_bcap << 8) |
15545                             (rccal_tx20_11n_scap << 3) | tx_lpf_bw_ofdm_20mhz;
15546                         rx2tx_lpf_rc_lut_tx40_11n = (rccal_tx40_11n_bcap << 8) |
15547                             (rccal_tx40_11n_scap << 3) | tx_lpf_bw_ofdm_40mhz;
15548
15549                         for (coreNum = 0; coreNum <= 1; coreNum++) {
15550                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15551                                                          1,
15552                                                          0x152 + coreNum * 0x10,
15553                                                          16,
15554                                                          &rx2tx_lpf_rc_lut_tx20_11b);
15555                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15556                                                          1,
15557                                                          0x153 + coreNum * 0x10,
15558                                                          16,
15559                                                          &rx2tx_lpf_rc_lut_tx20_11n);
15560                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15561                                                          1,
15562                                                          0x154 + coreNum * 0x10,
15563                                                          16,
15564                                                          &rx2tx_lpf_rc_lut_tx20_11n);
15565                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15566                                                          1,
15567                                                          0x155 + coreNum * 0x10,
15568                                                          16,
15569                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15570                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15571                                                          1,
15572                                                          0x156 + coreNum * 0x10,
15573                                                          16,
15574                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15575                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15576                                                          1,
15577                                                          0x157 + coreNum * 0x10,
15578                                                          16,
15579                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15580                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15581                                                          1,
15582                                                          0x158 + coreNum * 0x10,
15583                                                          16,
15584                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15585                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15586                                                          1,
15587                                                          0x159 + coreNum * 0x10,
15588                                                          16,
15589                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15590                         }
15591
15592                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4),
15593                                                           1, 0x3, 0,
15594                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
15595                 }
15596
15597                 if (!NORADIO_ENAB(pi->pubpi)) {
15598                         write_phy_reg(pi, 0x32f, 0x3);
15599                 }
15600
15601                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6)) {
15602                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
15603                                                           1, 0x3, 0,
15604                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
15605                 }
15606
15607                 if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
15608                     (pi->pubpi.radiorev == 6)) {
15609                         if ((pi->sh->sromrev >= 8)
15610                             && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
15611                                 ipalvlshift_3p3_war_en = 1;
15612
15613                         if (ipalvlshift_3p3_war_en) {
15614                                 write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG,
15615                                                 0x5);
15616                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL1,
15617                                                 0x30);
15618                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
15619                                 or_radio_reg(pi,
15620                                              RADIO_2057_RXTXBIAS_CONFIG_CORE0,
15621                                              0x1);
15622                                 or_radio_reg(pi,
15623                                              RADIO_2057_RXTXBIAS_CONFIG_CORE1,
15624                                              0x1);
15625
15626                                 ipa2g_mainbias = 0x1f;
15627
15628                                 ipa2g_casconv = 0x6f;
15629
15630                                 ipa2g_biasfilt = 0xaa;
15631                         } else {
15632
15633                                 ipa2g_mainbias = 0x2b;
15634
15635                                 ipa2g_casconv = 0x7f;
15636
15637                                 ipa2g_biasfilt = 0xee;
15638                         }
15639
15640                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
15641                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
15642                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15643                                                          coreNum, IPA2G_IMAIN,
15644                                                          ipa2g_mainbias);
15645                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15646                                                          coreNum, IPA2G_CASCONV,
15647                                                          ipa2g_casconv);
15648                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15649                                                          coreNum,
15650                                                          IPA2G_BIAS_FILTER,
15651                                                          ipa2g_biasfilt);
15652                                 }
15653                         }
15654                 }
15655
15656                 if (PHY_IPA(pi)) {
15657                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
15658                                 if ((pi->pubpi.radiorev == 3)
15659                                     || (pi->pubpi.radiorev == 4)
15660                                     || (pi->pubpi.radiorev == 6)) {
15661
15662                                         txgm_idac_bleed = 0x7f;
15663                                 }
15664
15665                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
15666                                         if (txgm_idac_bleed != 0)
15667                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15668                                                                  CORE, coreNum,
15669                                                                  TXGM_IDAC_BLEED,
15670                                                                  txgm_idac_bleed);
15671                                 }
15672
15673                                 if (pi->pubpi.radiorev == 5) {
15674
15675                                         for (coreNum = 0; coreNum <= 1;
15676                                              coreNum++) {
15677                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15678                                                                  CORE, coreNum,
15679                                                                  IPA2G_CASCONV,
15680                                                                  0x13);
15681                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15682                                                                  CORE, coreNum,
15683                                                                  IPA2G_IMAIN,
15684                                                                  0x1f);
15685                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15686                                                                  CORE, coreNum,
15687                                                                  IPA2G_BIAS_FILTER,
15688                                                                  0xee);
15689                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15690                                                                  CORE, coreNum,
15691                                                                  PAD2G_IDACS,
15692                                                                  0x8a);
15693                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15694                                                                  CORE, coreNum,
15695                                                                  PAD_BIAS_FILTER_BWS,
15696                                                                  0x3e);
15697                                         }
15698
15699                                 } else if ((pi->pubpi.radiorev == 7)
15700                                            || (pi->pubpi.radiorev == 8)) {
15701
15702                                         if (CHSPEC_IS40(pi->radio_chanspec) ==
15703                                             0) {
15704                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15705                                                                  CORE, 0,
15706                                                                  IPA2G_IMAIN,
15707                                                                  0x14);
15708                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15709                                                                  CORE, 1,
15710                                                                  IPA2G_IMAIN,
15711                                                                  0x12);
15712                                         } else {
15713                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15714                                                                  CORE, 0,
15715                                                                  IPA2G_IMAIN,
15716                                                                  0x16);
15717                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15718                                                                  CORE, 1,
15719                                                                  IPA2G_IMAIN,
15720                                                                  0x16);
15721                                         }
15722                                 }
15723
15724                         } else {
15725                                 freq =
15726                                     CHAN5G_FREQ(CHSPEC_CHANNEL
15727                                                 (pi->radio_chanspec));
15728                                 if (((freq >= 5180) && (freq <= 5230))
15729                                     || ((freq >= 5745) && (freq <= 5805))) {
15730                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15731                                                          0, IPA5G_BIAS_FILTER,
15732                                                          0xff);
15733                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15734                                                          1, IPA5G_BIAS_FILTER,
15735                                                          0xff);
15736                                 }
15737                         }
15738                 } else {
15739
15740                         if (pi->pubpi.radiorev != 5) {
15741                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
15742                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15743                                                          coreNum,
15744                                                          TXMIX2G_TUNE_BOOST_PU,
15745                                                          0x61);
15746                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15747                                                          coreNum,
15748                                                          TXGM_IDAC_BLEED, 0x70);
15749                                 }
15750                         }
15751                 }
15752
15753                 if (pi->pubpi.radiorev == 4) {
15754                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15755                                                  0x05, 16,
15756                                                  &afectrl_adc_ctrl1_rev7);
15757                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15758                                                  0x15, 16,
15759                                                  &afectrl_adc_ctrl1_rev7);
15760
15761                         for (coreNum = 0; coreNum <= 1; coreNum++) {
15762                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
15763                                                  AFE_VCM_CAL_MASTER, 0x0);
15764                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
15765                                                  AFE_SET_VCM_I, 0x3f);
15766                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
15767                                                  AFE_SET_VCM_Q, 0x3f);
15768                         }
15769                 } else {
15770                         mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
15771                         mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
15772                         mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
15773                         mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
15774
15775                         mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
15776                         mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
15777                         mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
15778                         mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
15779
15780                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15781                                                  0x05, 16,
15782                                                  &afectrl_adc_ctrl2_rev7);
15783                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15784                                                  0x15, 16,
15785                                                  &afectrl_adc_ctrl2_rev7);
15786
15787                         mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
15788                         mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
15789                         mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
15790                         mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
15791                 }
15792
15793                 write_phy_reg(pi, 0x6a, 0x2);
15794
15795                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
15796                                          &min_nvar_offset_6mbps);
15797
15798                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
15799                                          &rfseq_pktgn_lpf_hpc_rev7);
15800
15801                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
15802                                          &rfseq_pktgn_lpf_h_hpc_rev7);
15803
15804                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
15805                                          &rfseq_htpktgn_lpf_hpc_rev7);
15806
15807                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
15808                                          &rfseq_cckpktgn_lpf_hpc_rev7);
15809
15810                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
15811                                          &rfseq_tx2rx_lpf_h_hpc_rev7);
15812
15813                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
15814                                          &rfseq_rx2tx_lpf_h_hpc_rev7);
15815
15816                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
15817                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15818                                                  32, &min_nvar_val);
15819                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15820                                                  127, 32, &min_nvar_val);
15821                 } else {
15822                         min_nvar_val = noise_var_tbl_rev7[3];
15823                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15824                                                  32, &min_nvar_val);
15825
15826                         min_nvar_val = noise_var_tbl_rev7[127];
15827                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15828                                                  127, 32, &min_nvar_val);
15829                 }
15830
15831                 wlc_phy_workarounds_nphy_gainctrl(pi);
15832
15833                 pdetrange =
15834                     (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
15835                     pdetrange : pi->srom_fem2g.pdetrange;
15836
15837                 if (pdetrange == 0) {
15838                         chan_freq_range =
15839                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
15840                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
15841                                 aux_adc_vmid_rev7_core0[3] = 0x70;
15842                                 aux_adc_vmid_rev7_core1[3] = 0x70;
15843                                 aux_adc_gain_rev7[3] = 2;
15844                         } else {
15845                                 aux_adc_vmid_rev7_core0[3] = 0x80;
15846                                 aux_adc_vmid_rev7_core1[3] = 0x80;
15847                                 aux_adc_gain_rev7[3] = 3;
15848                         }
15849                 } else if (pdetrange == 1) {
15850                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
15851                                 aux_adc_vmid_rev7_core0[3] = 0x7c;
15852                                 aux_adc_vmid_rev7_core1[3] = 0x7c;
15853                                 aux_adc_gain_rev7[3] = 2;
15854                         } else {
15855                                 aux_adc_vmid_rev7_core0[3] = 0x8c;
15856                                 aux_adc_vmid_rev7_core1[3] = 0x8c;
15857                                 aux_adc_gain_rev7[3] = 1;
15858                         }
15859                 } else if (pdetrange == 2) {
15860                         if (pi->pubpi.radioid == BCM2057_ID) {
15861                                 if ((pi->pubpi.radiorev == 5)
15862                                     || (pi->pubpi.radiorev == 7)
15863                                     || (pi->pubpi.radiorev == 8)) {
15864                                         if (chan_freq_range ==
15865                                             WL_CHAN_FREQ_RANGE_2G) {
15866                                                 aux_adc_vmid_rev7_core0[3] =
15867                                                     0x8c;
15868                                                 aux_adc_vmid_rev7_core1[3] =
15869                                                     0x8c;
15870                                                 aux_adc_gain_rev7[3] = 0;
15871                                         } else {
15872                                                 aux_adc_vmid_rev7_core0[3] =
15873                                                     0x96;
15874                                                 aux_adc_vmid_rev7_core1[3] =
15875                                                     0x96;
15876                                                 aux_adc_gain_rev7[3] = 0;
15877                                         }
15878                                 }
15879                         }
15880
15881                 } else if (pdetrange == 3) {
15882                         if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
15883                                 aux_adc_vmid_rev7_core0[3] = 0x89;
15884                                 aux_adc_vmid_rev7_core1[3] = 0x89;
15885                                 aux_adc_gain_rev7[3] = 0;
15886                         }
15887
15888                 } else if (pdetrange == 5) {
15889
15890                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
15891                                 aux_adc_vmid_rev7_core0[3] = 0x80;
15892                                 aux_adc_vmid_rev7_core1[3] = 0x80;
15893                                 aux_adc_gain_rev7[3] = 3;
15894                         } else {
15895                                 aux_adc_vmid_rev7_core0[3] = 0x70;
15896                                 aux_adc_vmid_rev7_core1[3] = 0x70;
15897                                 aux_adc_gain_rev7[3] = 2;
15898                         }
15899                 }
15900
15901                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
15902                                          &aux_adc_vmid_rev7_core0);
15903                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
15904                                          &aux_adc_vmid_rev7_core1);
15905                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
15906                                          &aux_adc_gain_rev7);
15907                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
15908                                          &aux_adc_gain_rev7);
15909
15910         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15911
15912                 write_phy_reg(pi, 0x23f, 0x1f8);
15913                 write_phy_reg(pi, 0x240, 0x1f8);
15914
15915                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15916                                         1, 0, 32, &leg_data_weights);
15917                 leg_data_weights = leg_data_weights & 0xffffff;
15918                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15919                                          1, 0, 32, &leg_data_weights);
15920
15921                 alpha0 = 293;
15922                 alpha1 = 435;
15923                 alpha2 = 261;
15924                 beta0 = 366;
15925                 beta1 = 205;
15926                 beta2 = 32;
15927                 write_phy_reg(pi, 0x145, alpha0);
15928                 write_phy_reg(pi, 0x146, alpha1);
15929                 write_phy_reg(pi, 0x147, alpha2);
15930                 write_phy_reg(pi, 0x148, beta0);
15931                 write_phy_reg(pi, 0x149, beta1);
15932                 write_phy_reg(pi, 0x14a, beta2);
15933
15934                 write_phy_reg(pi, 0x38, 0xC);
15935                 write_phy_reg(pi, 0x2ae, 0xC);
15936
15937                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
15938                                        rfseq_tx2rx_events_rev3,
15939                                        rfseq_tx2rx_dlys_rev3,
15940                                        sizeof(rfseq_tx2rx_events_rev3) /
15941                                        sizeof(rfseq_tx2rx_events_rev3[0]));
15942
15943                 if (PHY_IPA(pi)) {
15944                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
15945                                                rfseq_rx2tx_events_rev3_ipa,
15946                                                rfseq_rx2tx_dlys_rev3_ipa,
15947                                                sizeof
15948                                                (rfseq_rx2tx_events_rev3_ipa) /
15949                                                sizeof
15950                                                (rfseq_rx2tx_events_rev3_ipa
15951                                                 [0]));
15952                 }
15953
15954                 if ((pi->sh->hw_phyrxchain != 0x3) &&
15955                     (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
15956
15957                         if (PHY_IPA(pi)) {
15958                                 rfseq_rx2tx_dlys_rev3[5] = 59;
15959                                 rfseq_rx2tx_dlys_rev3[6] = 1;
15960                                 rfseq_rx2tx_events_rev3[7] =
15961                                     NPHY_REV3_RFSEQ_CMD_END;
15962                         }
15963
15964                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
15965                                                rfseq_rx2tx_events_rev3,
15966                                                rfseq_rx2tx_dlys_rev3,
15967                                                sizeof(rfseq_rx2tx_events_rev3) /
15968                                                sizeof(rfseq_rx2tx_events_rev3
15969                                                       [0]));
15970                 }
15971
15972                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
15973                         write_phy_reg(pi, 0x6a, 0x2);
15974                 } else {
15975                         write_phy_reg(pi, 0x6a, 0x9c40);
15976                 }
15977
15978                 mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
15979
15980                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
15981                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15982                                                  32, &min_nvar_val);
15983                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15984                                                  127, 32, &min_nvar_val);
15985                 } else {
15986                         min_nvar_val = noise_var_tbl_rev3[3];
15987                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15988                                                  32, &min_nvar_val);
15989
15990                         min_nvar_val = noise_var_tbl_rev3[127];
15991                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15992                                                  127, 32, &min_nvar_val);
15993                 }
15994
15995                 wlc_phy_workarounds_nphy_gainctrl(pi);
15996
15997                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
15998                                          &dac_control);
15999                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16000                                          &dac_control);
16001
16002                 pdetrange =
16003                     (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16004                     pdetrange : pi->srom_fem2g.pdetrange;
16005
16006                 if (pdetrange == 0) {
16007                         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16008                                 aux_adc_vmid = aux_adc_vmid_rev4;
16009                                 aux_adc_gain = aux_adc_gain_rev4;
16010                         } else {
16011                                 aux_adc_vmid = aux_adc_vmid_rev3;
16012                                 aux_adc_gain = aux_adc_gain_rev3;
16013                         }
16014                         chan_freq_range =
16015                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
16016                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16017                                 switch (chan_freq_range) {
16018                                 case WL_CHAN_FREQ_RANGE_5GL:
16019                                         aux_adc_vmid[3] = 0x89;
16020                                         aux_adc_gain[3] = 0;
16021                                         break;
16022                                 case WL_CHAN_FREQ_RANGE_5GM:
16023                                         aux_adc_vmid[3] = 0x89;
16024                                         aux_adc_gain[3] = 0;
16025                                         break;
16026                                 case WL_CHAN_FREQ_RANGE_5GH:
16027                                         aux_adc_vmid[3] = 0x89;
16028                                         aux_adc_gain[3] = 0;
16029                                         break;
16030                                 default:
16031                                         break;
16032                                 }
16033                         }
16034                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16035                                                  0x08, 16, aux_adc_vmid);
16036                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16037                                                  0x18, 16, aux_adc_vmid);
16038                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16039                                                  0x0c, 16, aux_adc_gain);
16040                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16041                                                  0x1c, 16, aux_adc_gain);
16042                 } else if (pdetrange == 1) {
16043                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16044                                                  0x08, 16, sk_adc_vmid);
16045                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16046                                                  0x18, 16, sk_adc_vmid);
16047                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16048                                                  0x0c, 16, sk_adc_gain);
16049                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16050                                                  0x1c, 16, sk_adc_gain);
16051                 } else if (pdetrange == 2) {
16052
16053                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16054                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16055
16056                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16057                                 chan_freq_range =
16058                                     wlc_phy_get_chan_freq_range_nphy(pi, 0);
16059                                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16060                                         bcm_adc_vmid[3] = 0x8e;
16061                                         bcm_adc_gain[3] = 0x03;
16062                                 } else {
16063                                         bcm_adc_vmid[3] = 0x94;
16064                                         bcm_adc_gain[3] = 0x03;
16065                                 }
16066                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16067                                 bcm_adc_vmid[3] = 0x84;
16068                                 bcm_adc_gain[3] = 0x02;
16069                         }
16070
16071                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16072                                                  0x08, 16, bcm_adc_vmid);
16073                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16074                                                  0x18, 16, bcm_adc_vmid);
16075                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16076                                                  0x0c, 16, bcm_adc_gain);
16077                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16078                                                  0x1c, 16, bcm_adc_gain);
16079                 } else if (pdetrange == 3) {
16080                         chan_freq_range =
16081                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
16082                         if ((NREV_GE(pi->pubpi.phy_rev, 4))
16083                             && (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16084
16085                                 u16 auxadc_vmid[] = {
16086                                         0xa2, 0xb4, 0xb4, 0x270 };
16087                                 u16 auxadc_gain[] = {
16088                                         0x02, 0x02, 0x02, 0x00 };
16089
16090                                 wlc_phy_table_write_nphy(pi,
16091                                                          NPHY_TBL_ID_AFECTRL, 4,
16092                                                          0x08, 16, auxadc_vmid);
16093                                 wlc_phy_table_write_nphy(pi,
16094                                                          NPHY_TBL_ID_AFECTRL, 4,
16095                                                          0x18, 16, auxadc_vmid);
16096                                 wlc_phy_table_write_nphy(pi,
16097                                                          NPHY_TBL_ID_AFECTRL, 4,
16098                                                          0x0c, 16, auxadc_gain);
16099                                 wlc_phy_table_write_nphy(pi,
16100                                                          NPHY_TBL_ID_AFECTRL, 4,
16101                                                          0x1c, 16, auxadc_gain);
16102                         }
16103                 } else if ((pdetrange == 4) || (pdetrange == 5)) {
16104                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
16105                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
16106                         u16 Vmid[2], Av[2];
16107
16108                         chan_freq_range =
16109                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
16110                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16111                                 Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
16112                                 Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
16113                                 Av[0] = (pdetrange == 4) ? 2 : 0;
16114                                 Av[1] = (pdetrange == 4) ? 2 : 0;
16115                         } else {
16116                                 Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
16117                                 Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
16118                                 Av[0] = (pdetrange == 4) ? 2 : 0;
16119                                 Av[1] = (pdetrange == 4) ? 2 : 0;
16120                         }
16121
16122                         bcm_adc_vmid[3] = Vmid[0];
16123                         bcm_adc_gain[3] = Av[0];
16124                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16125                                                  0x08, 16, bcm_adc_vmid);
16126                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16127                                                  0x0c, 16, bcm_adc_gain);
16128
16129                         bcm_adc_vmid[3] = Vmid[1];
16130                         bcm_adc_gain[3] = Av[1];
16131                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16132                                                  0x18, 16, bcm_adc_vmid);
16133                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16134                                                  0x1c, 16, bcm_adc_gain);
16135                 } else {
16136                         ASSERT(0);
16137                 }
16138
16139                 write_radio_reg(pi,
16140                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0),
16141                                 0x0);
16142                 write_radio_reg(pi,
16143                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1),
16144                                 0x0);
16145
16146                 write_radio_reg(pi,
16147                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0),
16148                                 0x6);
16149                 write_radio_reg(pi,
16150                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1),
16151                                 0x6);
16152
16153                 write_radio_reg(pi,
16154                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0),
16155                                 0x7);
16156                 write_radio_reg(pi,
16157                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1),
16158                                 0x7);
16159
16160                 write_radio_reg(pi,
16161                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0),
16162                                 0x88);
16163                 write_radio_reg(pi,
16164                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1),
16165                                 0x88);
16166
16167                 write_radio_reg(pi,
16168                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0),
16169                                 0x0);
16170                 write_radio_reg(pi,
16171                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1),
16172                                 0x0);
16173
16174                 write_radio_reg(pi,
16175                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0),
16176                                 0x0);
16177                 write_radio_reg(pi,
16178                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1),
16179                                 0x0);
16180
16181                 triso =
16182                     (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16183                     triso : pi->srom_fem2g.triso;
16184                 if (triso == 7) {
16185                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
16186                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
16187                 }
16188
16189                 wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
16190
16191                 if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
16192                      (CHSPEC_IS5G(pi->radio_chanspec))) ||
16193                     (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
16194                       (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
16195                      (CHSPEC_IS2G(pi->radio_chanspec)))) {
16196                         nss1_data_weights = 0x00088888;
16197                         ht_data_weights = 0x00088888;
16198                         stbc_data_weights = 0x00088888;
16199                 } else {
16200                         nss1_data_weights = 0x88888888;
16201                         ht_data_weights = 0x88888888;
16202                         stbc_data_weights = 0x88888888;
16203                 }
16204                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16205                                          1, 1, 32, &nss1_data_weights);
16206                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16207                                          1, 2, 32, &ht_data_weights);
16208                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16209                                          1, 3, 32, &stbc_data_weights);
16210
16211                 if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16212                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
16213                                 write_radio_reg(pi,
16214                                                 RADIO_2056_TX_GMBB_IDAC |
16215                                                 RADIO_2056_TX0, 0x70);
16216                                 write_radio_reg(pi,
16217                                                 RADIO_2056_TX_GMBB_IDAC |
16218                                                 RADIO_2056_TX1, 0x70);
16219                         }
16220                 }
16221
16222                 if (!pi->edcrs_threshold_lock) {
16223                         write_phy_reg(pi, 0x224, 0x3eb);
16224                         write_phy_reg(pi, 0x225, 0x3eb);
16225                         write_phy_reg(pi, 0x226, 0x341);
16226                         write_phy_reg(pi, 0x227, 0x341);
16227                         write_phy_reg(pi, 0x228, 0x42b);
16228                         write_phy_reg(pi, 0x229, 0x42b);
16229                         write_phy_reg(pi, 0x22a, 0x381);
16230                         write_phy_reg(pi, 0x22b, 0x381);
16231                         write_phy_reg(pi, 0x22c, 0x42b);
16232                         write_phy_reg(pi, 0x22d, 0x42b);
16233                         write_phy_reg(pi, 0x22e, 0x381);
16234                         write_phy_reg(pi, 0x22f, 0x381);
16235                 }
16236
16237                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16238
16239                         if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK) {
16240                                 wlapi_bmac_mhf(pi->sh->physhim, MHF4,
16241                                                MHF4_BPHY_TXCORE0,
16242                                                MHF4_BPHY_TXCORE0, WLC_BAND_ALL);
16243                         }
16244                 }
16245         } else {
16246
16247                 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
16248                     (pi->sh->boardtype == 0x8b)) {
16249                         uint i;
16250                         u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
16251                         for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
16252                                 rfseq_rx2tx_dlys[i] = war_dlys[i];
16253                 }
16254
16255                 if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
16256                         and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
16257                         and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
16258                 } else {
16259                         or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
16260                         or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
16261                 }
16262
16263                 regval = 0x000a;
16264                 wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
16265                 wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
16266
16267                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
16268                         regval = 0xcdaa;
16269                         wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
16270                         wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
16271                 }
16272
16273                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16274                         regval = 0x0000;
16275                         wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
16276                         wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
16277
16278                         regval = 0x7aab;
16279                         wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
16280                         wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
16281
16282                         regval = 0x0800;
16283                         wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
16284                         wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
16285                 }
16286
16287                 write_phy_reg(pi, 0xf8, 0x02d8);
16288                 write_phy_reg(pi, 0xf9, 0x0301);
16289                 write_phy_reg(pi, 0xfa, 0x02d8);
16290                 write_phy_reg(pi, 0xfb, 0x0301);
16291
16292                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
16293                                        rfseq_rx2tx_dlys,
16294                                        sizeof(rfseq_rx2tx_events) /
16295                                        sizeof(rfseq_rx2tx_events[0]));
16296
16297                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
16298                                        rfseq_tx2rx_dlys,
16299                                        sizeof(rfseq_tx2rx_events) /
16300                                        sizeof(rfseq_tx2rx_events[0]));
16301
16302                 wlc_phy_workarounds_nphy_gainctrl(pi);
16303
16304                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16305
16306                         if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
16307                                 wlapi_bmac_mhf(pi->sh->physhim, MHF3,
16308                                                MHF3_NPHY_MLADV_WAR,
16309                                                MHF3_NPHY_MLADV_WAR,
16310                                                WLC_BAND_ALL);
16311
16312                 } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16313                         write_phy_reg(pi, 0x1e3, 0x0);
16314                         write_phy_reg(pi, 0x1e4, 0x0);
16315                 }
16316
16317                 if (NREV_LT(pi->pubpi.phy_rev, 2))
16318                         mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
16319
16320                 alpha0 = 293;
16321                 alpha1 = 435;
16322                 alpha2 = 261;
16323                 beta0 = 366;
16324                 beta1 = 205;
16325                 beta2 = 32;
16326                 write_phy_reg(pi, 0x145, alpha0);
16327                 write_phy_reg(pi, 0x146, alpha1);
16328                 write_phy_reg(pi, 0x147, alpha2);
16329                 write_phy_reg(pi, 0x148, beta0);
16330                 write_phy_reg(pi, 0x149, beta1);
16331                 write_phy_reg(pi, 0x14a, beta2);
16332
16333                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
16334                         mod_phy_reg(pi, 0x142, (0xf << 12), 0);
16335
16336                         write_phy_reg(pi, 0x192, 0xb5);
16337                         write_phy_reg(pi, 0x193, 0xa4);
16338                         write_phy_reg(pi, 0x194, 0x0);
16339                 }
16340
16341                 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16342                         mod_phy_reg(pi, 0x221,
16343                                     NPHY_FORCESIG_DECODEGATEDCLKS,
16344                                     NPHY_FORCESIG_DECODEGATEDCLKS);
16345                 }
16346         }
16347
16348         if (pi->phyhang_avoid)
16349                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
16350 }
16351
16352 static void wlc_phy_workarounds_nphy_gainctrl(phy_info_t *pi)
16353 {
16354         u16 w1th, hpf_code, currband;
16355         int ctr;
16356         u8 rfseq_updategainu_events[] = {
16357                 NPHY_RFSEQ_CMD_RX_GAIN,
16358                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16359                 NPHY_RFSEQ_CMD_SET_HPF_BW
16360         };
16361         u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
16362         s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
16363         s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
16364         s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
16365         s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
16366         s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
16367         s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
16368         s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
16369         s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
16370         s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
16371         s8 *lna1_gain_db = NULL;
16372         s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
16373         s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
16374         s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
16375         s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
16376         s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
16377         s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
16378         s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
16379         s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
16380         s8 *lna2_gain_db = NULL;
16381         s8 tiaG_gain_db[] = {
16382                 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
16383         s8 tiaA_gain_db[] = {
16384                 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
16385         s8 tiaA_gain_db_rev4[] = {
16386                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
16387         s8 tiaA_gain_db_rev5[] = {
16388                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
16389         s8 tiaA_gain_db_rev6[] = {
16390                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
16391         s8 *tia_gain_db;
16392         s8 tiaG_gainbits[] = {
16393                 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
16394         s8 tiaA_gainbits[] = {
16395                 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
16396         s8 tiaA_gainbits_rev4[] = {
16397                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
16398         s8 tiaA_gainbits_rev5[] = {
16399                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
16400         s8 tiaA_gainbits_rev6[] = {
16401                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
16402         s8 *tia_gainbits;
16403         s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
16404         s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
16405         u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
16406         u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
16407         u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
16408         u16 rfseqG_init_gain_rev5_elna[] = {
16409                 0x013f, 0x013f, 0x013f, 0x013f };
16410         u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
16411         u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
16412         u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
16413         u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
16414         u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
16415         u16 rfseqA_init_gain_rev4_elna[] = {
16416                 0x314f, 0x314f, 0x314f, 0x314f };
16417         u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
16418         u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
16419         u16 *rfseq_init_gain;
16420         u16 initG_gaincode = 0x627e;
16421         u16 initG_gaincode_rev4 = 0x527e;
16422         u16 initG_gaincode_rev5 = 0x427e;
16423         u16 initG_gaincode_rev5_elna = 0x027e;
16424         u16 initG_gaincode_rev6 = 0x527e;
16425         u16 initG_gaincode_rev6_224B0 = 0x427e;
16426         u16 initG_gaincode_rev6_elna = 0x127e;
16427         u16 initA_gaincode = 0x52de;
16428         u16 initA_gaincode_rev4 = 0x629e;
16429         u16 initA_gaincode_rev4_elna = 0x329e;
16430         u16 initA_gaincode_rev5 = 0x729e;
16431         u16 initA_gaincode_rev6 = 0x729e;
16432         u16 init_gaincode;
16433         u16 clip1hiG_gaincode = 0x107e;
16434         u16 clip1hiG_gaincode_rev4 = 0x007e;
16435         u16 clip1hiG_gaincode_rev5 = 0x1076;
16436         u16 clip1hiG_gaincode_rev6 = 0x007e;
16437         u16 clip1hiA_gaincode = 0x00de;
16438         u16 clip1hiA_gaincode_rev4 = 0x029e;
16439         u16 clip1hiA_gaincode_rev5 = 0x029e;
16440         u16 clip1hiA_gaincode_rev6 = 0x029e;
16441         u16 clip1hi_gaincode;
16442         u16 clip1mdG_gaincode = 0x0066;
16443         u16 clip1mdA_gaincode = 0x00ca;
16444         u16 clip1mdA_gaincode_rev4 = 0x1084;
16445         u16 clip1mdA_gaincode_rev5 = 0x2084;
16446         u16 clip1mdA_gaincode_rev6 = 0x2084;
16447         u16 clip1md_gaincode = 0;
16448         u16 clip1loG_gaincode = 0x0074;
16449         u16 clip1loG_gaincode_rev5[] = {
16450                 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
16451         };
16452         u16 clip1loG_gaincode_rev6[] = {
16453                 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
16454         };
16455         u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
16456         u16 clip1loA_gaincode = 0x00cc;
16457         u16 clip1loA_gaincode_rev4 = 0x0086;
16458         u16 clip1loA_gaincode_rev5 = 0x2086;
16459         u16 clip1loA_gaincode_rev6 = 0x2086;
16460         u16 clip1lo_gaincode;
16461         u8 crsminG_th = 0x18;
16462         u8 crsminG_th_rev5 = 0x18;
16463         u8 crsminG_th_rev6 = 0x18;
16464         u8 crsminA_th = 0x1e;
16465         u8 crsminA_th_rev4 = 0x24;
16466         u8 crsminA_th_rev5 = 0x24;
16467         u8 crsminA_th_rev6 = 0x24;
16468         u8 crsmin_th;
16469         u8 crsminlG_th = 0x18;
16470         u8 crsminlG_th_rev5 = 0x18;
16471         u8 crsminlG_th_rev6 = 0x18;
16472         u8 crsminlA_th = 0x1e;
16473         u8 crsminlA_th_rev4 = 0x24;
16474         u8 crsminlA_th_rev5 = 0x24;
16475         u8 crsminlA_th_rev6 = 0x24;
16476         u8 crsminl_th = 0;
16477         u8 crsminuG_th = 0x18;
16478         u8 crsminuG_th_rev5 = 0x18;
16479         u8 crsminuG_th_rev6 = 0x18;
16480         u8 crsminuA_th = 0x1e;
16481         u8 crsminuA_th_rev4 = 0x24;
16482         u8 crsminuA_th_rev5 = 0x24;
16483         u8 crsminuA_th_rev6 = 0x24;
16484         u8 crsminuA_th_rev6_224B0 = 0x2d;
16485         u8 crsminu_th;
16486         u16 nbclipG_th = 0x20d;
16487         u16 nbclipG_th_rev4 = 0x1a1;
16488         u16 nbclipG_th_rev5 = 0x1d0;
16489         u16 nbclipG_th_rev6 = 0x1d0;
16490         u16 nbclipA_th = 0x1a1;
16491         u16 nbclipA_th_rev4 = 0x107;
16492         u16 nbclipA_th_rev5 = 0x0a9;
16493         u16 nbclipA_th_rev6 = 0x0f0;
16494         u16 nbclip_th = 0;
16495         u8 w1clipG_th = 5;
16496         u8 w1clipG_th_rev5 = 9;
16497         u8 w1clipG_th_rev6 = 5;
16498         u8 w1clipA_th = 25, w1clip_th;
16499         u8 rssi_gain_default = 0x50;
16500         u8 rssiG_gain_rev6_224B0 = 0x50;
16501         u8 rssiA_gain_rev5 = 0x90;
16502         u8 rssiA_gain_rev6 = 0x90;
16503         u8 rssi_gain;
16504         u16 regval[21];
16505         u8 triso;
16506
16507         triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
16508             pi->srom_fem2g.triso;
16509
16510         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
16511                 if (pi->pubpi.radiorev == 5) {
16512
16513                         wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
16514                 } else if (pi->pubpi.radiorev == 7) {
16515                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
16516
16517                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
16518                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
16519
16520                 } else if ((pi->pubpi.radiorev == 3)
16521                            || (pi->pubpi.radiorev == 8)) {
16522                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
16523
16524                         if (pi->pubpi.radiorev == 8) {
16525                                 mod_phy_reg(pi, 0x283,
16526                                             (0xff << 0), (0x44 << 0));
16527                                 mod_phy_reg(pi, 0x280,
16528                                             (0xff << 0), (0x44 << 0));
16529                         }
16530                 } else {
16531                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
16532                 }
16533         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
16534
16535                 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
16536
16537                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16538                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16539
16540                 currband =
16541                     read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
16542                 if (currband == 0) {
16543                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16544                                 if (pi->pubpi.radiorev == 11) {
16545                                         lna1_gain_db = lna1G_gain_db_rev6_224B0;
16546                                         lna2_gain_db = lna2G_gain_db_rev6_224B0;
16547                                         rfseq_init_gain =
16548                                             rfseqG_init_gain_rev6_224B0;
16549                                         init_gaincode =
16550                                             initG_gaincode_rev6_224B0;
16551                                         clip1hi_gaincode =
16552                                             clip1hiG_gaincode_rev6;
16553                                         clip1lo_gaincode =
16554                                             clip1loG_gaincode_rev6_224B0;
16555                                         nbclip_th = nbclipG_th_rev6;
16556                                         w1clip_th = w1clipG_th_rev6;
16557                                         crsmin_th = crsminG_th_rev6;
16558                                         crsminl_th = crsminlG_th_rev6;
16559                                         crsminu_th = crsminuG_th_rev6;
16560                                         rssi_gain = rssiG_gain_rev6_224B0;
16561                                 } else {
16562                                         lna1_gain_db = lna1G_gain_db_rev6;
16563                                         lna2_gain_db = lna2G_gain_db_rev6;
16564                                         if (pi->sh->boardflags & BFL_EXTLNA) {
16565
16566                                                 rfseq_init_gain =
16567                                                     rfseqG_init_gain_rev6_elna;
16568                                                 init_gaincode =
16569                                                     initG_gaincode_rev6_elna;
16570                                         } else {
16571                                                 rfseq_init_gain =
16572                                                     rfseqG_init_gain_rev6;
16573                                                 init_gaincode =
16574                                                     initG_gaincode_rev6;
16575                                         }
16576                                         clip1hi_gaincode =
16577                                             clip1hiG_gaincode_rev6;
16578                                         switch (triso) {
16579                                         case 0:
16580                                                 clip1lo_gaincode =
16581                                                     clip1loG_gaincode_rev6[0];
16582                                                 break;
16583                                         case 1:
16584                                                 clip1lo_gaincode =
16585                                                     clip1loG_gaincode_rev6[1];
16586                                                 break;
16587                                         case 2:
16588                                                 clip1lo_gaincode =
16589                                                     clip1loG_gaincode_rev6[2];
16590                                                 break;
16591                                         case 3:
16592                                         default:
16593
16594                                                 clip1lo_gaincode =
16595                                                     clip1loG_gaincode_rev6[3];
16596                                                 break;
16597                                         case 4:
16598                                                 clip1lo_gaincode =
16599                                                     clip1loG_gaincode_rev6[4];
16600                                                 break;
16601                                         case 5:
16602                                                 clip1lo_gaincode =
16603                                                     clip1loG_gaincode_rev6[5];
16604                                                 break;
16605                                         case 6:
16606                                                 clip1lo_gaincode =
16607                                                     clip1loG_gaincode_rev6[6];
16608                                                 break;
16609                                         case 7:
16610                                                 clip1lo_gaincode =
16611                                                     clip1loG_gaincode_rev6[7];
16612                                                 break;
16613                                         }
16614                                         nbclip_th = nbclipG_th_rev6;
16615                                         w1clip_th = w1clipG_th_rev6;
16616                                         crsmin_th = crsminG_th_rev6;
16617                                         crsminl_th = crsminlG_th_rev6;
16618                                         crsminu_th = crsminuG_th_rev6;
16619                                         rssi_gain = rssi_gain_default;
16620                                 }
16621                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16622                                 lna1_gain_db = lna1G_gain_db_rev5;
16623                                 lna2_gain_db = lna2G_gain_db_rev5;
16624                                 if (pi->sh->boardflags & BFL_EXTLNA) {
16625
16626                                         rfseq_init_gain =
16627                                             rfseqG_init_gain_rev5_elna;
16628                                         init_gaincode =
16629                                             initG_gaincode_rev5_elna;
16630                                 } else {
16631                                         rfseq_init_gain = rfseqG_init_gain_rev5;
16632                                         init_gaincode = initG_gaincode_rev5;
16633                                 }
16634                                 clip1hi_gaincode = clip1hiG_gaincode_rev5;
16635                                 switch (triso) {
16636                                 case 0:
16637                                         clip1lo_gaincode =
16638                                             clip1loG_gaincode_rev5[0];
16639                                         break;
16640                                 case 1:
16641                                         clip1lo_gaincode =
16642                                             clip1loG_gaincode_rev5[1];
16643                                         break;
16644                                 case 2:
16645                                         clip1lo_gaincode =
16646                                             clip1loG_gaincode_rev5[2];
16647                                         break;
16648                                 case 3:
16649
16650                                         clip1lo_gaincode =
16651                                             clip1loG_gaincode_rev5[3];
16652                                         break;
16653                                 case 4:
16654                                         clip1lo_gaincode =
16655                                             clip1loG_gaincode_rev5[4];
16656                                         break;
16657                                 case 5:
16658                                         clip1lo_gaincode =
16659                                             clip1loG_gaincode_rev5[5];
16660                                         break;
16661                                 case 6:
16662                                         clip1lo_gaincode =
16663                                             clip1loG_gaincode_rev5[6];
16664                                         break;
16665                                 case 7:
16666                                         clip1lo_gaincode =
16667                                             clip1loG_gaincode_rev5[7];
16668                                         break;
16669                                 default:
16670                                         clip1lo_gaincode =
16671                                             clip1loG_gaincode_rev5[3];
16672                                         break;
16673                                 }
16674                                 nbclip_th = nbclipG_th_rev5;
16675                                 w1clip_th = w1clipG_th_rev5;
16676                                 crsmin_th = crsminG_th_rev5;
16677                                 crsminl_th = crsminlG_th_rev5;
16678                                 crsminu_th = crsminuG_th_rev5;
16679                                 rssi_gain = rssi_gain_default;
16680                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16681                                 lna1_gain_db = lna1G_gain_db_rev4;
16682                                 lna2_gain_db = lna2G_gain_db;
16683                                 rfseq_init_gain = rfseqG_init_gain_rev4;
16684                                 init_gaincode = initG_gaincode_rev4;
16685                                 clip1hi_gaincode = clip1hiG_gaincode_rev4;
16686                                 clip1lo_gaincode = clip1loG_gaincode;
16687                                 nbclip_th = nbclipG_th_rev4;
16688                                 w1clip_th = w1clipG_th;
16689                                 crsmin_th = crsminG_th;
16690                                 crsminl_th = crsminlG_th;
16691                                 crsminu_th = crsminuG_th;
16692                                 rssi_gain = rssi_gain_default;
16693                         } else {
16694                                 lna1_gain_db = lna1G_gain_db;
16695                                 lna2_gain_db = lna2G_gain_db;
16696                                 rfseq_init_gain = rfseqG_init_gain;
16697                                 init_gaincode = initG_gaincode;
16698                                 clip1hi_gaincode = clip1hiG_gaincode;
16699                                 clip1lo_gaincode = clip1loG_gaincode;
16700                                 nbclip_th = nbclipG_th;
16701                                 w1clip_th = w1clipG_th;
16702                                 crsmin_th = crsminG_th;
16703                                 crsminl_th = crsminlG_th;
16704                                 crsminu_th = crsminuG_th;
16705                                 rssi_gain = rssi_gain_default;
16706                         }
16707                         tia_gain_db = tiaG_gain_db;
16708                         tia_gainbits = tiaG_gainbits;
16709                         clip1md_gaincode = clip1mdG_gaincode;
16710                 } else {
16711                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16712                                 lna1_gain_db = lna1A_gain_db_rev6;
16713                                 lna2_gain_db = lna2A_gain_db_rev6;
16714                                 tia_gain_db = tiaA_gain_db_rev6;
16715                                 tia_gainbits = tiaA_gainbits_rev6;
16716                                 rfseq_init_gain = rfseqA_init_gain_rev6;
16717                                 init_gaincode = initA_gaincode_rev6;
16718                                 clip1hi_gaincode = clip1hiA_gaincode_rev6;
16719                                 clip1md_gaincode = clip1mdA_gaincode_rev6;
16720                                 clip1lo_gaincode = clip1loA_gaincode_rev6;
16721                                 crsmin_th = crsminA_th_rev6;
16722                                 crsminl_th = crsminlA_th_rev6;
16723                                 if ((pi->pubpi.radiorev == 11) &&
16724                                     (CHSPEC_IS40(pi->radio_chanspec) == 0)) {
16725                                         crsminu_th = crsminuA_th_rev6_224B0;
16726                                 } else {
16727                                         crsminu_th = crsminuA_th_rev6;
16728                                 }
16729                                 nbclip_th = nbclipA_th_rev6;
16730                                 rssi_gain = rssiA_gain_rev6;
16731                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16732                                 lna1_gain_db = lna1A_gain_db_rev5;
16733                                 lna2_gain_db = lna2A_gain_db_rev5;
16734                                 tia_gain_db = tiaA_gain_db_rev5;
16735                                 tia_gainbits = tiaA_gainbits_rev5;
16736                                 rfseq_init_gain = rfseqA_init_gain_rev5;
16737                                 init_gaincode = initA_gaincode_rev5;
16738                                 clip1hi_gaincode = clip1hiA_gaincode_rev5;
16739                                 clip1md_gaincode = clip1mdA_gaincode_rev5;
16740                                 clip1lo_gaincode = clip1loA_gaincode_rev5;
16741                                 crsmin_th = crsminA_th_rev5;
16742                                 crsminl_th = crsminlA_th_rev5;
16743                                 crsminu_th = crsminuA_th_rev5;
16744                                 nbclip_th = nbclipA_th_rev5;
16745                                 rssi_gain = rssiA_gain_rev5;
16746                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16747                                 lna1_gain_db = lna1A_gain_db_rev4;
16748                                 lna2_gain_db = lna2A_gain_db_rev4;
16749                                 tia_gain_db = tiaA_gain_db_rev4;
16750                                 tia_gainbits = tiaA_gainbits_rev4;
16751                                 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
16752
16753                                         rfseq_init_gain =
16754                                             rfseqA_init_gain_rev4_elna;
16755                                         init_gaincode =
16756                                             initA_gaincode_rev4_elna;
16757                                 } else {
16758                                         rfseq_init_gain = rfseqA_init_gain_rev4;
16759                                         init_gaincode = initA_gaincode_rev4;
16760                                 }
16761                                 clip1hi_gaincode = clip1hiA_gaincode_rev4;
16762                                 clip1md_gaincode = clip1mdA_gaincode_rev4;
16763                                 clip1lo_gaincode = clip1loA_gaincode_rev4;
16764                                 crsmin_th = crsminA_th_rev4;
16765                                 crsminl_th = crsminlA_th_rev4;
16766                                 crsminu_th = crsminuA_th_rev4;
16767                                 nbclip_th = nbclipA_th_rev4;
16768                                 rssi_gain = rssi_gain_default;
16769                         } else {
16770                                 lna1_gain_db = lna1A_gain_db;
16771                                 lna2_gain_db = lna2A_gain_db;
16772                                 tia_gain_db = tiaA_gain_db;
16773                                 tia_gainbits = tiaA_gainbits;
16774                                 rfseq_init_gain = rfseqA_init_gain;
16775                                 init_gaincode = initA_gaincode;
16776                                 clip1hi_gaincode = clip1hiA_gaincode;
16777                                 clip1md_gaincode = clip1mdA_gaincode;
16778                                 clip1lo_gaincode = clip1loA_gaincode;
16779                                 crsmin_th = crsminA_th;
16780                                 crsminl_th = crsminlA_th;
16781                                 crsminu_th = crsminuA_th;
16782                                 nbclip_th = nbclipA_th;
16783                                 rssi_gain = rssi_gain_default;
16784                         }
16785                         w1clip_th = w1clipA_th;
16786                 }
16787
16788                 write_radio_reg(pi,
16789                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16790                                  RADIO_2056_RX0), 0x17);
16791                 write_radio_reg(pi,
16792                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16793                                  RADIO_2056_RX1), 0x17);
16794
16795                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
16796                                 0xf0);
16797                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
16798                                 0xf0);
16799
16800                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
16801                                 0x0);
16802                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
16803                                 0x0);
16804
16805                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
16806                                 rssi_gain);
16807                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
16808                                 rssi_gain);
16809
16810                 write_radio_reg(pi,
16811                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16812                                  RADIO_2056_RX0), 0x17);
16813                 write_radio_reg(pi,
16814                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16815                                  RADIO_2056_RX1), 0x17);
16816
16817                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
16818                                 0xFF);
16819                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
16820                                 0xFF);
16821
16822                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
16823                                          8, lna1_gain_db);
16824                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
16825                                          8, lna1_gain_db);
16826
16827                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
16828                                          8, lna2_gain_db);
16829                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
16830                                          8, lna2_gain_db);
16831
16832                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
16833                                          8, tia_gain_db);
16834                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
16835                                          8, tia_gain_db);
16836
16837                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
16838                                          8, tia_gainbits);
16839                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
16840                                          8, tia_gainbits);
16841
16842                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
16843                                          8, &lpf_gain_db);
16844                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
16845                                          8, &lpf_gain_db);
16846                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
16847                                          8, &lpf_gainbits);
16848                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
16849                                          8, &lpf_gainbits);
16850
16851                 write_phy_reg(pi, 0x20, init_gaincode);
16852                 write_phy_reg(pi, 0x2a7, init_gaincode);
16853
16854                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16855                                          pi->pubpi.phy_corenum, 0x106, 16,
16856                                          rfseq_init_gain);
16857
16858                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
16859                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
16860
16861                 write_phy_reg(pi, 0x24, clip1md_gaincode);
16862                 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
16863
16864                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
16865                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
16866
16867                 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
16868                 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
16869                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
16870
16871                 write_phy_reg(pi, 0x2b, nbclip_th);
16872                 write_phy_reg(pi, 0x41, nbclip_th);
16873
16874                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
16875                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
16876
16877                 write_phy_reg(pi, 0x150, 0x809c);
16878
16879         } else {
16880
16881                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16882                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16883
16884                 write_phy_reg(pi, 0x2b, 0x84);
16885                 write_phy_reg(pi, 0x41, 0x84);
16886
16887                 if (CHSPEC_IS20(pi->radio_chanspec)) {
16888                         write_phy_reg(pi, 0x6b, 0x2b);
16889                         write_phy_reg(pi, 0x6c, 0x2b);
16890                         write_phy_reg(pi, 0x6d, 0x9);
16891                         write_phy_reg(pi, 0x6e, 0x9);
16892                 }
16893
16894                 w1th = NPHY_RSSICAL_W1_TARGET - 4;
16895                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
16896                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
16897
16898                 if (CHSPEC_IS20(pi->radio_chanspec)) {
16899                         mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
16900                         mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
16901
16902                         mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
16903                         mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16904                 }
16905
16906                 write_phy_reg(pi, 0x150, 0x809c);
16907
16908                 if (pi->nphy_gain_boost)
16909                         if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16910                             (CHSPEC_IS40(pi->radio_chanspec)))
16911                                 hpf_code = 4;
16912                         else
16913                                 hpf_code = 5;
16914                 else if (CHSPEC_IS40(pi->radio_chanspec))
16915                         hpf_code = 6;
16916                 else
16917                         hpf_code = 7;
16918
16919                 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16920                 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16921
16922                 for (ctr = 0; ctr < 4; ctr++) {
16923                         regval[ctr] = (hpf_code << 8) | 0x7c;
16924                 }
16925                 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16926
16927                 wlc_phy_adjust_lnagaintbl_nphy(pi);
16928
16929                 if (pi->nphy_elna_gain_config) {
16930                         regval[0] = 0;
16931                         regval[1] = 1;
16932                         regval[2] = 1;
16933                         regval[3] = 1;
16934                         wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16935                         wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16936
16937                         for (ctr = 0; ctr < 4; ctr++) {
16938                                 regval[ctr] = (hpf_code << 8) | 0x74;
16939                         }
16940                         wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16941                 }
16942
16943                 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16944                         for (ctr = 0; ctr < 21; ctr++) {
16945                                 regval[ctr] = 3 * ctr;
16946                         }
16947                         wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16948                         wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16949
16950                         for (ctr = 0; ctr < 21; ctr++) {
16951                                 regval[ctr] = (u16) ctr;
16952                         }
16953                         wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16954                         wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16955                 }
16956
16957                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16958                                        rfseq_updategainu_events,
16959                                        rfseq_updategainu_dlys,
16960                                        sizeof(rfseq_updategainu_events) /
16961                                        sizeof(rfseq_updategainu_events[0]));
16962
16963                 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16964
16965                 if (CHSPEC_IS2G(pi->radio_chanspec))
16966                         mod_phy_reg(pi,
16967                                     (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16968                                     0x7f, 0x4);
16969         }
16970 }
16971
16972 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(phy_info_t *pi)
16973 {
16974         s8 lna1_gain_db[] = { 8, 13, 17, 22 };
16975         s8 lna2_gain_db[] = { -2, 7, 11, 15 };
16976         s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
16977         s8 tia_gainbits[] = {
16978                 0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
16979
16980         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16981         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16982
16983         mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
16984
16985         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
16986         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
16987
16988         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
16989                                  lna1_gain_db);
16990         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
16991                                  lna1_gain_db);
16992
16993         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
16994                                  lna2_gain_db);
16995         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
16996                                  lna2_gain_db);
16997
16998         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
16999                                  tia_gain_db);
17000         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
17001                                  tia_gain_db);
17002
17003         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
17004                                  tia_gainbits);
17005         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
17006                                  tia_gainbits);
17007
17008         write_phy_reg(pi, 0x37, 0x74);
17009         write_phy_reg(pi, 0x2ad, 0x74);
17010         write_phy_reg(pi, 0x38, 0x18);
17011         write_phy_reg(pi, 0x2ae, 0x18);
17012
17013         write_phy_reg(pi, 0x2b, 0xe8);
17014         write_phy_reg(pi, 0x41, 0xe8);
17015
17016         if (CHSPEC_IS20(pi->radio_chanspec)) {
17017
17018                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
17019                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
17020         } else {
17021
17022                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
17023                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
17024         }
17025 }
17026
17027 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(phy_info_t *pi)
17028 {
17029         u16 currband;
17030         s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
17031         s8 *lna1_gain_db = NULL;
17032         s8 *lna1_gain_db_2 = NULL;
17033         s8 *lna2_gain_db = NULL;
17034         s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
17035         s8 *tia_gain_db;
17036         s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
17037         s8 *tia_gainbits;
17038         u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
17039         u16 *rfseq_init_gain;
17040         u16 init_gaincode;
17041         u16 clip1hi_gaincode;
17042         u16 clip1md_gaincode = 0;
17043         u16 clip1md_gaincode_B;
17044         u16 clip1lo_gaincode;
17045         u16 clip1lo_gaincode_B;
17046         u8 crsminl_th = 0;
17047         u8 crsminu_th;
17048         u16 nbclip_th = 0;
17049         u8 w1clip_th;
17050         u16 freq;
17051         s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
17052         u8 chg_nbclip_th = 0;
17053
17054         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
17055         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
17056
17057         currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
17058         if (currband == 0) {
17059
17060                 lna1_gain_db = lna1G_gain_db_rev7;
17061
17062                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
17063                                          lna1_gain_db);
17064                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
17065                                          lna1_gain_db);
17066
17067                 mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
17068
17069                 if (CHSPEC_IS40(pi->radio_chanspec)) {
17070                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
17071                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
17072                 }
17073
17074                 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
17075
17076                 if (CHSPEC_IS20(pi->radio_chanspec)) {
17077                         mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
17078                         mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
17079                 }
17080         } else {
17081
17082                 init_gaincode = 0x9e;
17083                 clip1hi_gaincode = 0x9e;
17084                 clip1md_gaincode_B = 0x24;
17085                 clip1lo_gaincode = 0x8a;
17086                 clip1lo_gaincode_B = 8;
17087                 rfseq_init_gain = rfseqA_init_gain_rev7;
17088
17089                 tia_gain_db = tiaA_gain_db_rev7;
17090                 tia_gainbits = tiaA_gainbits_rev7;
17091
17092                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
17093                 if (CHSPEC_IS20(pi->radio_chanspec)) {
17094
17095                         w1clip_th = 25;
17096                         clip1md_gaincode = 0x82;
17097
17098                         if ((freq <= 5080) || (freq == 5825)) {
17099
17100                                 s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
17101                                 s8 lna1A_gain_db_2_rev7[] = {
17102                                         11, 17, 22, 25 };
17103                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
17104
17105                                 crsminu_th = 0x3e;
17106                                 lna1_gain_db = lna1A_gain_db_rev7;
17107                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
17108                                 lna2_gain_db = lna2A_gain_db_rev7;
17109                         } else if ((freq >= 5500) && (freq <= 5700)) {
17110
17111                                 s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
17112                                 s8 lna1A_gain_db_2_rev7[] = {
17113                                         12, 18, 22, 26 };
17114                                 s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
17115
17116                                 crsminu_th = 0x45;
17117                                 clip1md_gaincode_B = 0x14;
17118                                 nbclip_th = 0xff;
17119                                 chg_nbclip_th = 1;
17120                                 lna1_gain_db = lna1A_gain_db_rev7;
17121                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
17122                                 lna2_gain_db = lna2A_gain_db_rev7;
17123                         } else {
17124
17125                                 s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
17126                                 s8 lna1A_gain_db_2_rev7[] = {
17127                                         12, 18, 22, 26 };
17128                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
17129
17130                                 crsminu_th = 0x41;
17131                                 lna1_gain_db = lna1A_gain_db_rev7;
17132                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
17133                                 lna2_gain_db = lna2A_gain_db_rev7;
17134                         }
17135
17136                         if (freq <= 4920) {
17137                                 nvar_baseline_offset0 = 5;
17138                                 nvar_baseline_offset1 = 5;
17139                         } else if ((freq > 4920) && (freq <= 5320)) {
17140                                 nvar_baseline_offset0 = 3;
17141                                 nvar_baseline_offset1 = 5;
17142                         } else if ((freq > 5320) && (freq <= 5700)) {
17143                                 nvar_baseline_offset0 = 3;
17144                                 nvar_baseline_offset1 = 2;
17145                         } else {
17146                                 nvar_baseline_offset0 = 4;
17147                                 nvar_baseline_offset1 = 0;
17148                         }
17149                 } else {
17150
17151                         crsminu_th = 0x3a;
17152                         crsminl_th = 0x3a;
17153                         w1clip_th = 20;
17154
17155                         if ((freq >= 4920) && (freq <= 5320)) {
17156                                 nvar_baseline_offset0 = 4;
17157                                 nvar_baseline_offset1 = 5;
17158                         } else if ((freq > 5320) && (freq <= 5550)) {
17159                                 nvar_baseline_offset0 = 4;
17160                                 nvar_baseline_offset1 = 2;
17161                         } else {
17162                                 nvar_baseline_offset0 = 5;
17163                                 nvar_baseline_offset1 = 3;
17164                         }
17165                 }
17166
17167                 write_phy_reg(pi, 0x20, init_gaincode);
17168                 write_phy_reg(pi, 0x2a7, init_gaincode);
17169
17170                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
17171                                          pi->pubpi.phy_corenum, 0x106, 16,
17172                                          rfseq_init_gain);
17173
17174                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
17175                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
17176
17177                 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
17178                 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
17179
17180                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
17181                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
17182                 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
17183                 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
17184
17185                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
17186                                          tia_gain_db);
17187                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
17188                                          tia_gain_db);
17189
17190                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
17191                                          tia_gainbits);
17192                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
17193                                          tia_gainbits);
17194
17195                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
17196
17197                 if (chg_nbclip_th == 1) {
17198                         write_phy_reg(pi, 0x2b, nbclip_th);
17199                         write_phy_reg(pi, 0x41, nbclip_th);
17200                 }
17201
17202                 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
17203                 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
17204
17205                 mod_phy_reg(pi, 0x2e4,
17206                             (0x3f << 0), (nvar_baseline_offset0 << 0));
17207
17208                 mod_phy_reg(pi, 0x2e4,
17209                             (0x3f << 6), (nvar_baseline_offset1 << 6));
17210
17211                 if (CHSPEC_IS20(pi->radio_chanspec)) {
17212
17213                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
17214                                                  lna1_gain_db);
17215                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
17216                                                  lna1_gain_db_2);
17217
17218                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
17219                                                  8, lna2_gain_db);
17220                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
17221                                                  8, lna2_gain_db);
17222
17223                         write_phy_reg(pi, 0x24, clip1md_gaincode);
17224                         write_phy_reg(pi, 0x2ab, clip1md_gaincode);
17225                 } else {
17226                         mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
17227                 }
17228
17229         }
17230
17231 }
17232
17233 static void wlc_phy_adjust_lnagaintbl_nphy(phy_info_t *pi)
17234 {
17235         uint core;
17236         int ctr;
17237         s16 gain_delta[2];
17238         u8 curr_channel;
17239         u16 minmax_gain[2];
17240         u16 regval[4];
17241
17242         if (pi->phyhang_avoid)
17243                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17244
17245         if (pi->nphy_gain_boost) {
17246                 if ((CHSPEC_IS2G(pi->radio_chanspec))) {
17247
17248                         gain_delta[0] = 6;
17249                         gain_delta[1] = 6;
17250                 } else {
17251
17252                         curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
17253                         gain_delta[0] =
17254                             (s16)
17255                             PHY_HW_ROUND(((nphy_lnagain_est0[0] *
17256                                            curr_channel) +
17257                                           nphy_lnagain_est0[1]), 13);
17258                         gain_delta[1] =
17259                             (s16)
17260                             PHY_HW_ROUND(((nphy_lnagain_est1[0] *
17261                                            curr_channel) +
17262                                           nphy_lnagain_est1[1]), 13);
17263                 }
17264         } else {
17265
17266                 gain_delta[0] = 0;
17267                 gain_delta[1] = 0;
17268         }
17269
17270         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17271                 if (pi->nphy_elna_gain_config) {
17272
17273                         regval[0] = nphy_def_lnagains[2] + gain_delta[core];
17274                         regval[1] = nphy_def_lnagains[3] + gain_delta[core];
17275                         regval[2] = nphy_def_lnagains[3] + gain_delta[core];
17276                         regval[3] = nphy_def_lnagains[3] + gain_delta[core];
17277                 } else {
17278                         for (ctr = 0; ctr < 4; ctr++) {
17279                                 regval[ctr] =
17280                                     nphy_def_lnagains[ctr] + gain_delta[core];
17281                         }
17282                 }
17283                 wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
17284
17285                 minmax_gain[core] =
17286                     (u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
17287         }
17288
17289         mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
17290         mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
17291
17292         if (pi->phyhang_avoid)
17293                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17294 }
17295
17296 void wlc_phy_switch_radio_nphy(phy_info_t *pi, bool on)
17297 {
17298         if (on) {
17299                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17300                         if (!pi->radio_is_on) {
17301                                 wlc_phy_radio_preinit_205x(pi);
17302                                 wlc_phy_radio_init_2057(pi);
17303                                 wlc_phy_radio_postinit_2057(pi);
17304                         }
17305
17306                         wlc_phy_chanspec_set((wlc_phy_t *) pi,
17307                                              pi->radio_chanspec);
17308                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17309                         wlc_phy_radio_preinit_205x(pi);
17310                         wlc_phy_radio_init_2056(pi);
17311                         wlc_phy_radio_postinit_2056(pi);
17312
17313                         wlc_phy_chanspec_set((wlc_phy_t *) pi,
17314                                              pi->radio_chanspec);
17315                 } else {
17316                         wlc_phy_radio_preinit_2055(pi);
17317                         wlc_phy_radio_init_2055(pi);
17318                         wlc_phy_radio_postinit_2055(pi);
17319                 }
17320
17321                 pi->radio_is_on = true;
17322
17323         } else {
17324
17325                 if (NREV_GE(pi->pubpi.phy_rev, 3)
17326                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
17327                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
17328                         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
17329
17330                         write_radio_reg(pi,
17331                                         RADIO_2056_TX_PADA_BOOST_TUNE |
17332                                         RADIO_2056_TX0, 0);
17333                         write_radio_reg(pi,
17334                                         RADIO_2056_TX_PADG_BOOST_TUNE |
17335                                         RADIO_2056_TX0, 0);
17336                         write_radio_reg(pi,
17337                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
17338                                         RADIO_2056_TX0, 0);
17339                         write_radio_reg(pi,
17340                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
17341                                         RADIO_2056_TX0, 0);
17342                         mod_radio_reg(pi,
17343                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
17344                                       RADIO_2056_TX0, 0xf0, 0);
17345                         write_radio_reg(pi,
17346                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
17347                                         RADIO_2056_TX0, 0);
17348
17349                         write_radio_reg(pi,
17350                                         RADIO_2056_TX_PADA_BOOST_TUNE |
17351                                         RADIO_2056_TX1, 0);
17352                         write_radio_reg(pi,
17353                                         RADIO_2056_TX_PADG_BOOST_TUNE |
17354                                         RADIO_2056_TX1, 0);
17355                         write_radio_reg(pi,
17356                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
17357                                         RADIO_2056_TX1, 0);
17358                         write_radio_reg(pi,
17359                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
17360                                         RADIO_2056_TX1, 0);
17361                         mod_radio_reg(pi,
17362                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
17363                                       RADIO_2056_TX1, 0xf0, 0);
17364                         write_radio_reg(pi,
17365                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
17366                                         RADIO_2056_TX1, 0);
17367
17368                         pi->radio_is_on = false;
17369                 }
17370
17371                 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
17372                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
17373                         pi->radio_is_on = false;
17374                 }
17375
17376         }
17377 }
17378
17379 static void wlc_phy_radio_preinit_2055(phy_info_t *pi)
17380 {
17381
17382         and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
17383         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
17384
17385         or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
17386 }
17387
17388 static void wlc_phy_radio_init_2055(phy_info_t *pi)
17389 {
17390         wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
17391 }
17392
17393 static void wlc_phy_radio_postinit_2055(phy_info_t *pi)
17394 {
17395
17396         and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
17397                       ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
17398
17399         if (((pi->sh->sromrev >= 4)
17400              && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
17401             || ((pi->sh->sromrev < 4))) {
17402                 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
17403                 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
17404         }
17405
17406         mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
17407         write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
17408
17409         and_radio_reg(pi, RADIO_2055_CAL_MISC,
17410                       ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
17411
17412         or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
17413
17414         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
17415
17416         udelay(1000);
17417
17418         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
17419
17420         SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
17421                    RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
17422
17423         ASSERT((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
17424                 RADIO_2055_RCAL_DONE) == RADIO_2055_RCAL_DONE);
17425
17426         and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
17427                       ~(RADIO_2055_CAL_LPO_ENABLE));
17428
17429         wlc_phy_chanspec_set((wlc_phy_t *) pi, pi->radio_chanspec);
17430
17431         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
17432         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
17433
17434         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
17435         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
17436
17437         mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
17438                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
17439         mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
17440                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
17441         if (pi->nphy_gain_boost) {
17442                 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
17443                               ~(RADIO_2055_GAINBST_DISABLE));
17444                 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
17445                               ~(RADIO_2055_GAINBST_DISABLE));
17446         } else {
17447                 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
17448                              RADIO_2055_GAINBST_DISABLE);
17449                 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
17450                              RADIO_2055_GAINBST_DISABLE);
17451         }
17452
17453         udelay(2);
17454 }
17455
17456 static void wlc_phy_radio_preinit_205x(phy_info_t *pi)
17457 {
17458
17459         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
17460         and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
17461
17462         or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
17463         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
17464
17465 }
17466
17467 static void wlc_phy_radio_init_2056(phy_info_t *pi)
17468 {
17469         radio_regs_t *regs_SYN_2056_ptr = NULL;
17470         radio_regs_t *regs_TX_2056_ptr = NULL;
17471         radio_regs_t *regs_RX_2056_ptr = NULL;
17472
17473         if (NREV_IS(pi->pubpi.phy_rev, 3)) {
17474                 regs_SYN_2056_ptr = regs_SYN_2056;
17475                 regs_TX_2056_ptr = regs_TX_2056;
17476                 regs_RX_2056_ptr = regs_RX_2056;
17477         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17478                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
17479                 regs_TX_2056_ptr = regs_TX_2056_A1;
17480                 regs_RX_2056_ptr = regs_RX_2056_A1;
17481         } else {
17482                 switch (pi->pubpi.radiorev) {
17483                 case 5:
17484                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
17485                         regs_TX_2056_ptr = regs_TX_2056_rev5;
17486                         regs_RX_2056_ptr = regs_RX_2056_rev5;
17487                         break;
17488
17489                 case 6:
17490                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
17491                         regs_TX_2056_ptr = regs_TX_2056_rev6;
17492                         regs_RX_2056_ptr = regs_RX_2056_rev6;
17493                         break;
17494
17495                 case 7:
17496                 case 9:
17497                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
17498                         regs_TX_2056_ptr = regs_TX_2056_rev7;
17499                         regs_RX_2056_ptr = regs_RX_2056_rev7;
17500                         break;
17501
17502                 case 8:
17503                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
17504                         regs_TX_2056_ptr = regs_TX_2056_rev8;
17505                         regs_RX_2056_ptr = regs_RX_2056_rev8;
17506                         break;
17507
17508                 case 11:
17509                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
17510                         regs_TX_2056_ptr = regs_TX_2056_rev11;
17511                         regs_RX_2056_ptr = regs_RX_2056_rev11;
17512                         break;
17513
17514                 default:
17515                         ASSERT(0);
17516                         break;
17517                 }
17518         }
17519
17520         wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
17521
17522         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
17523
17524         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
17525
17526         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
17527
17528         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
17529 }
17530
17531 static void wlc_phy_radio_postinit_2056(phy_info_t *pi)
17532 {
17533         mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
17534
17535         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
17536         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
17537         udelay(1000);
17538         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
17539
17540         if ((pi->sh->boardflags2 & BFL2_LEGACY)
17541             || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN)) {
17542
17543                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
17544         } else {
17545
17546                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
17547         }
17548
17549         mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
17550
17551         if (pi->phy_init_por) {
17552                 wlc_phy_radio205x_rcal(pi);
17553         }
17554 }
17555
17556 static void wlc_phy_radio_init_2057(phy_info_t *pi)
17557 {
17558         radio_20xx_regs_t *regs_2057_ptr = NULL;
17559
17560         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
17561
17562                 regs_2057_ptr = regs_2057_rev4;
17563         } else if (NREV_IS(pi->pubpi.phy_rev, 8)
17564                    || NREV_IS(pi->pubpi.phy_rev, 9)) {
17565                 switch (pi->pubpi.radiorev) {
17566                 case 5:
17567
17568                         if (pi->pubpi.radiover == 0x0) {
17569
17570                                 regs_2057_ptr = regs_2057_rev5;
17571
17572                         } else if (pi->pubpi.radiover == 0x1) {
17573
17574                                 regs_2057_ptr = regs_2057_rev5v1;
17575                         } else {
17576                                 ASSERT(0);
17577                                 break;
17578                         }
17579
17580                 case 7:
17581
17582                         regs_2057_ptr = regs_2057_rev7;
17583                         break;
17584
17585                 case 8:
17586
17587                         regs_2057_ptr = regs_2057_rev8;
17588                         break;
17589
17590                 default:
17591                         ASSERT(0);
17592                         break;
17593                 }
17594         } else {
17595                 ASSERT(0);
17596         }
17597
17598         wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
17599 }
17600
17601 static void wlc_phy_radio_postinit_2057(phy_info_t *pi)
17602 {
17603
17604         mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
17605
17606         if (pi->sh->chip == !BCM6362_CHIP_ID) {
17607
17608                 mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x2, 0x2);
17609         }
17610
17611         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
17612         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
17613         mdelay(2);
17614         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
17615         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
17616
17617         if (pi->phy_init_por) {
17618                 wlc_phy_radio205x_rcal(pi);
17619                 wlc_phy_radio2057_rccal(pi);
17620         }
17621
17622         mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
17623 }
17624
17625 static bool
17626 wlc_phy_chan2freq_nphy(phy_info_t *pi, uint channel, int *f,
17627                        chan_info_nphy_radio2057_t **t0,
17628                        chan_info_nphy_radio205x_t **t1,
17629                        chan_info_nphy_radio2057_rev5_t **t2,
17630                        chan_info_nphy_2055_t **t3)
17631 {
17632         uint i;
17633         chan_info_nphy_radio2057_t *chan_info_tbl_p_0 = NULL;
17634         chan_info_nphy_radio205x_t *chan_info_tbl_p_1 = NULL;
17635         chan_info_nphy_radio2057_rev5_t *chan_info_tbl_p_2 = NULL;
17636         u32 tbl_len = 0;
17637
17638         int freq = 0;
17639
17640         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17641
17642                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
17643
17644                         chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
17645                         tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
17646
17647                 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
17648                            || NREV_IS(pi->pubpi.phy_rev, 9)) {
17649                         switch (pi->pubpi.radiorev) {
17650
17651                         case 5:
17652
17653                                 if (pi->pubpi.radiover == 0x0) {
17654
17655                                         chan_info_tbl_p_2 =
17656                                             chan_info_nphyrev8_2057_rev5;
17657                                         tbl_len =
17658                                             ARRAY_SIZE
17659                                             (chan_info_nphyrev8_2057_rev5);
17660
17661                                 } else if (pi->pubpi.radiover == 0x1) {
17662
17663                                         chan_info_tbl_p_2 =
17664                                             chan_info_nphyrev9_2057_rev5v1;
17665                                         tbl_len =
17666                                             ARRAY_SIZE
17667                                             (chan_info_nphyrev9_2057_rev5v1);
17668
17669                                 }
17670                                 break;
17671
17672                         case 7:
17673                                 chan_info_tbl_p_0 =
17674                                     chan_info_nphyrev8_2057_rev7;
17675                                 tbl_len =
17676                                     ARRAY_SIZE(chan_info_nphyrev8_2057_rev7);
17677                                 break;
17678
17679                         case 8:
17680                                 chan_info_tbl_p_0 =
17681                                     chan_info_nphyrev8_2057_rev8;
17682                                 tbl_len =
17683                                     ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
17684                                 break;
17685
17686                         default:
17687                                 if (NORADIO_ENAB(pi->pubpi)) {
17688                                         goto fail;
17689                                 }
17690                                 break;
17691                         }
17692                 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
17693
17694                         chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
17695                         tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
17696                 } else {
17697                         goto fail;
17698                 }
17699
17700                 for (i = 0; i < tbl_len; i++) {
17701                         if (pi->pubpi.radiorev == 5) {
17702
17703                                 if (chan_info_tbl_p_2[i].chan == channel)
17704                                         break;
17705                         } else {
17706
17707                                 if (chan_info_tbl_p_0[i].chan == channel)
17708                                         break;
17709                         }
17710                 }
17711
17712                 if (i >= tbl_len) {
17713                         ASSERT(i < tbl_len);
17714                         goto fail;
17715                 }
17716                 if (pi->pubpi.radiorev == 5) {
17717                         *t2 = &chan_info_tbl_p_2[i];
17718                         freq = chan_info_tbl_p_2[i].freq;
17719                 } else {
17720                         *t0 = &chan_info_tbl_p_0[i];
17721                         freq = chan_info_tbl_p_0[i].freq;
17722                 }
17723
17724         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17725                 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
17726                         chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
17727                         tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
17728                 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17729                         chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
17730                         tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
17731                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
17732                            || NREV_IS(pi->pubpi.phy_rev, 6)) {
17733                         switch (pi->pubpi.radiorev) {
17734                         case 5:
17735                                 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
17736                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
17737                                 break;
17738                         case 6:
17739                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
17740                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
17741                                 break;
17742                         case 7:
17743                         case 9:
17744                                 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
17745                                 tbl_len =
17746                                     ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
17747                                 break;
17748                         case 8:
17749                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
17750                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
17751                                 break;
17752                         case 11:
17753                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
17754                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v11);
17755                                 break;
17756                         default:
17757                                 if (NORADIO_ENAB(pi->pubpi)) {
17758                                         goto fail;
17759                                 }
17760                                 break;
17761                         }
17762                 }
17763
17764                 for (i = 0; i < tbl_len; i++) {
17765                         if (chan_info_tbl_p_1[i].chan == channel)
17766                                 break;
17767                 }
17768
17769                 if (i >= tbl_len) {
17770                         ASSERT(i < tbl_len);
17771                         goto fail;
17772                 }
17773                 *t1 = &chan_info_tbl_p_1[i];
17774                 freq = chan_info_tbl_p_1[i].freq;
17775
17776         } else {
17777                 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
17778                         if (chan_info_nphy_2055[i].chan == channel)
17779                                 break;
17780
17781                 if (i >= ARRAY_SIZE(chan_info_nphy_2055)) {
17782                         ASSERT(i < ARRAY_SIZE(chan_info_nphy_2055));
17783                         goto fail;
17784                 }
17785                 *t3 = &chan_info_nphy_2055[i];
17786                 freq = chan_info_nphy_2055[i].freq;
17787         }
17788
17789         *f = freq;
17790         return true;
17791
17792  fail:
17793         *f = WL_CHAN_FREQ_RANGE_2G;
17794         return false;
17795 }
17796
17797 u8 wlc_phy_get_chan_freq_range_nphy(phy_info_t *pi, uint channel)
17798 {
17799         int freq;
17800         chan_info_nphy_radio2057_t *t0 = NULL;
17801         chan_info_nphy_radio205x_t *t1 = NULL;
17802         chan_info_nphy_radio2057_rev5_t *t2 = NULL;
17803         chan_info_nphy_2055_t *t3 = NULL;
17804
17805         if (NORADIO_ENAB(pi->pubpi))
17806                 return WL_CHAN_FREQ_RANGE_2G;
17807
17808         if (channel == 0)
17809                 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
17810
17811         wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
17812
17813         if (CHSPEC_IS2G(pi->radio_chanspec))
17814                 return WL_CHAN_FREQ_RANGE_2G;
17815
17816         if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN)) {
17817                 return WL_CHAN_FREQ_RANGE_5GL;
17818         } else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN)) {
17819                 return WL_CHAN_FREQ_RANGE_5GM;
17820         } else {
17821                 return WL_CHAN_FREQ_RANGE_5GH;
17822         }
17823 }
17824
17825 static void
17826 wlc_phy_chanspec_radio2055_setup(phy_info_t *pi, chan_info_nphy_2055_t *ci)
17827 {
17828
17829         write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
17830         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
17831         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
17832         write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
17833
17834         WLC_PHY_WAR_PR51571(pi);
17835
17836         write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
17837         write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
17838         write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
17839         write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
17840
17841         WLC_PHY_WAR_PR51571(pi);
17842
17843         write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
17844         write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
17845         write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
17846         write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
17847
17848         WLC_PHY_WAR_PR51571(pi);
17849
17850         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
17851                         ci->RF_core1_lgbuf_a_tune);
17852         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
17853                         ci->RF_core1_lgbuf_g_tune);
17854         write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
17855         write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
17856                         ci->RF_core1_tx_pga_pad_tn);
17857
17858         WLC_PHY_WAR_PR51571(pi);
17859
17860         write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
17861                         ci->RF_core1_tx_mx_bgtrim);
17862         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
17863                         ci->RF_core2_lgbuf_a_tune);
17864         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
17865                         ci->RF_core2_lgbuf_g_tune);
17866         write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
17867
17868         WLC_PHY_WAR_PR51571(pi);
17869
17870         write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
17871                         ci->RF_core2_tx_pga_pad_tn);
17872         write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
17873                         ci->RF_core2_tx_mx_bgtrim);
17874
17875         udelay(50);
17876
17877         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
17878         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
17879
17880         WLC_PHY_WAR_PR51571(pi);
17881
17882         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
17883
17884         udelay(300);
17885 }
17886
17887 static void
17888 wlc_phy_chanspec_radio2056_setup(phy_info_t *pi,
17889                                  const chan_info_nphy_radio205x_t *ci)
17890 {
17891         radio_regs_t *regs_SYN_2056_ptr = NULL;
17892
17893         write_radio_reg(pi,
17894                         RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
17895                         ci->RF_SYN_pll_vcocal1);
17896         write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
17897                         ci->RF_SYN_pll_vcocal2);
17898         write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
17899                         ci->RF_SYN_pll_refdiv);
17900         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
17901                         ci->RF_SYN_pll_mmd2);
17902         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
17903                         ci->RF_SYN_pll_mmd1);
17904         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
17905                         ci->RF_SYN_pll_loopfilter1);
17906         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
17907                         ci->RF_SYN_pll_loopfilter2);
17908         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
17909                         ci->RF_SYN_pll_loopfilter3);
17910         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
17911                         ci->RF_SYN_pll_loopfilter4);
17912         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
17913                         ci->RF_SYN_pll_loopfilter5);
17914         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
17915                         ci->RF_SYN_reserved_addr27);
17916         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
17917                         ci->RF_SYN_reserved_addr28);
17918         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
17919                         ci->RF_SYN_reserved_addr29);
17920         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
17921                         ci->RF_SYN_logen_VCOBUF1);
17922         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
17923                         ci->RF_SYN_logen_MIXER2);
17924         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
17925                         ci->RF_SYN_logen_BUF3);
17926         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
17927                         ci->RF_SYN_logen_BUF4);
17928
17929         write_radio_reg(pi,
17930                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
17931                         ci->RF_RX0_lnaa_tune);
17932         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
17933                         ci->RF_RX0_lnag_tune);
17934         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
17935                         ci->RF_TX0_intpaa_boost_tune);
17936         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
17937                         ci->RF_TX0_intpag_boost_tune);
17938         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
17939                         ci->RF_TX0_pada_boost_tune);
17940         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
17941                         ci->RF_TX0_padg_boost_tune);
17942         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
17943                         ci->RF_TX0_pgaa_boost_tune);
17944         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
17945                         ci->RF_TX0_pgag_boost_tune);
17946         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
17947                         ci->RF_TX0_mixa_boost_tune);
17948         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
17949                         ci->RF_TX0_mixg_boost_tune);
17950
17951         write_radio_reg(pi,
17952                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
17953                         ci->RF_RX1_lnaa_tune);
17954         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
17955                         ci->RF_RX1_lnag_tune);
17956         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
17957                         ci->RF_TX1_intpaa_boost_tune);
17958         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
17959                         ci->RF_TX1_intpag_boost_tune);
17960         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
17961                         ci->RF_TX1_pada_boost_tune);
17962         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
17963                         ci->RF_TX1_padg_boost_tune);
17964         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
17965                         ci->RF_TX1_pgaa_boost_tune);
17966         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
17967                         ci->RF_TX1_pgag_boost_tune);
17968         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
17969                         ci->RF_TX1_mixa_boost_tune);
17970         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
17971                         ci->RF_TX1_mixg_boost_tune);
17972
17973         if (NREV_IS(pi->pubpi.phy_rev, 3))
17974                 regs_SYN_2056_ptr = regs_SYN_2056;
17975         else if (NREV_IS(pi->pubpi.phy_rev, 4))
17976                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
17977         else {
17978                 switch (pi->pubpi.radiorev) {
17979                 case 5:
17980                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
17981                         break;
17982                 case 6:
17983                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
17984                         break;
17985                 case 7:
17986                 case 9:
17987                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
17988                         break;
17989                 case 8:
17990                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
17991                         break;
17992                 case 11:
17993                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
17994                         break;
17995                 }
17996         }
17997         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17998                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
17999                                 RADIO_2056_SYN,
18000                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
18001         } else {
18002                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
18003                                 RADIO_2056_SYN,
18004                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
18005         }
18006
18007         if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
18008                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18009                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
18010                                         RADIO_2056_SYN, 0x1f);
18011                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
18012                                         RADIO_2056_SYN, 0x1f);
18013
18014                         if ((pi->sh->chip == BCM4716_CHIP_ID) ||
18015                             (pi->sh->chip == BCM47162_CHIP_ID)) {
18016
18017                                 write_radio_reg(pi,
18018                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
18019                                                 RADIO_2056_SYN, 0x14);
18020                                 write_radio_reg(pi,
18021                                                 RADIO_2056_SYN_PLL_CP2 |
18022                                                 RADIO_2056_SYN, 0x00);
18023                         } else {
18024                                 write_radio_reg(pi,
18025                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
18026                                                 RADIO_2056_SYN, 0xb);
18027                                 write_radio_reg(pi,
18028                                                 RADIO_2056_SYN_PLL_CP2 |
18029                                                 RADIO_2056_SYN, 0x14);
18030                         }
18031                 }
18032         }
18033
18034         if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
18035             (CHSPEC_IS2G(pi->radio_chanspec))) {
18036                 write_radio_reg(pi,
18037                                 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
18038                                 0x1f);
18039                 write_radio_reg(pi,
18040                                 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
18041                                 0x1f);
18042                 write_radio_reg(pi,
18043                                 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
18044                                 0xb);
18045                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
18046                                 0x20);
18047         }
18048
18049         if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
18050                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18051                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
18052                                         RADIO_2056_SYN, 0x1f);
18053                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
18054                                         RADIO_2056_SYN, 0x1f);
18055                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
18056                                         RADIO_2056_SYN, 0x5);
18057                         write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
18058                                         RADIO_2056_SYN, 0xc);
18059                 }
18060         }
18061
18062         if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
18063                 u16 pag_boost_tune;
18064                 u16 padg_boost_tune;
18065                 u16 pgag_boost_tune;
18066                 u16 mixg_boost_tune;
18067                 u16 bias, cascbias;
18068                 uint core;
18069
18070                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18071
18072                         if (NREV_GE(pi->pubpi.phy_rev, 5)) {
18073
18074                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18075                                                  PADG_IDAC, 0xcc);
18076
18077                                 if ((pi->sh->chip == BCM4716_CHIP_ID) ||
18078                                     (pi->sh->chip ==
18079                                      BCM47162_CHIP_ID)) {
18080                                         bias = 0x40;
18081                                         cascbias = 0x45;
18082                                         pag_boost_tune = 0x5;
18083                                         pgag_boost_tune = 0x33;
18084                                         padg_boost_tune = 0x77;
18085                                         mixg_boost_tune = 0x55;
18086                                 } else {
18087                                         bias = 0x25;
18088                                         cascbias = 0x20;
18089
18090                                         if ((pi->sh->chip ==
18091                                              BCM43224_CHIP_ID)
18092                                             || (pi->sh->chip ==
18093                                                 BCM43225_CHIP_ID)
18094                                             || (pi->sh->chip ==
18095                                                 BCM43421_CHIP_ID)) {
18096                                                 if (pi->sh->chippkg ==
18097                                                     BCM43224_FAB_SMIC) {
18098                                                         bias = 0x2a;
18099                                                         cascbias = 0x38;
18100                                                 }
18101                                         }
18102
18103                                         pag_boost_tune = 0x4;
18104                                         pgag_boost_tune = 0x03;
18105                                         padg_boost_tune = 0x77;
18106                                         mixg_boost_tune = 0x65;
18107                                 }
18108
18109                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18110                                                  INTPAG_IMAIN_STAT, bias);
18111                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18112                                                  INTPAG_IAUX_STAT, bias);
18113                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18114                                                  INTPAG_CASCBIAS, cascbias);
18115
18116                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18117                                                  INTPAG_BOOST_TUNE,
18118                                                  pag_boost_tune);
18119                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18120                                                  PGAG_BOOST_TUNE,
18121                                                  pgag_boost_tune);
18122                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18123                                                  PADG_BOOST_TUNE,
18124                                                  padg_boost_tune);
18125                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18126                                                  MIXG_BOOST_TUNE,
18127                                                  mixg_boost_tune);
18128                         } else {
18129
18130                                 bias = IS40MHZ(pi) ? 0x40 : 0x20;
18131
18132                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18133                                                  INTPAG_IMAIN_STAT, bias);
18134                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18135                                                  INTPAG_IAUX_STAT, bias);
18136                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18137                                                  INTPAG_CASCBIAS, 0x30);
18138                         }
18139                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
18140                                          0xee);
18141                 }
18142         }
18143
18144         if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
18145             && CHSPEC_IS5G(pi->radio_chanspec)) {
18146                 u16 paa_boost_tune;
18147                 u16 pada_boost_tune;
18148                 u16 pgaa_boost_tune;
18149                 u16 mixa_boost_tune;
18150                 u16 freq, pabias, cascbias;
18151                 uint core;
18152
18153                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
18154
18155                 if (freq < 5150) {
18156
18157                         paa_boost_tune = 0xa;
18158                         pada_boost_tune = 0x77;
18159                         pgaa_boost_tune = 0xf;
18160                         mixa_boost_tune = 0xf;
18161                 } else if (freq < 5340) {
18162
18163                         paa_boost_tune = 0x8;
18164                         pada_boost_tune = 0x77;
18165                         pgaa_boost_tune = 0xfb;
18166                         mixa_boost_tune = 0xf;
18167                 } else if (freq < 5650) {
18168
18169                         paa_boost_tune = 0x0;
18170                         pada_boost_tune = 0x77;
18171                         pgaa_boost_tune = 0xb;
18172                         mixa_boost_tune = 0xf;
18173                 } else {
18174
18175                         paa_boost_tune = 0x0;
18176                         pada_boost_tune = 0x77;
18177                         if (freq != 5825) {
18178                                 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
18179                         } else {
18180                                 pgaa_boost_tune = 6;
18181                         }
18182                         mixa_boost_tune = 0xf;
18183                 }
18184
18185                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18186                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18187                                          INTPAA_BOOST_TUNE, paa_boost_tune);
18188                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18189                                          PADA_BOOST_TUNE, pada_boost_tune);
18190                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18191                                          PGAA_BOOST_TUNE, pgaa_boost_tune);
18192                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18193                                          MIXA_BOOST_TUNE, mixa_boost_tune);
18194
18195                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18196                                          TXSPARE1, 0x30);
18197                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18198                                          PA_SPARE2, 0xee);
18199
18200                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18201                                          PADA_CASCBIAS, 0x3);
18202
18203                         cascbias = 0x30;
18204
18205                         if ((pi->sh->chip == BCM43224_CHIP_ID) ||
18206                             (pi->sh->chip == BCM43225_CHIP_ID) ||
18207                             (pi->sh->chip == BCM43421_CHIP_ID)) {
18208                                 if (pi->sh->chippkg == BCM43224_FAB_SMIC) {
18209                                         cascbias = 0x35;
18210                                 }
18211                         }
18212
18213                         pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
18214
18215                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18216                                          INTPAA_IAUX_STAT, pabias);
18217                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18218                                          INTPAA_IMAIN_STAT, pabias);
18219                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18220                                          INTPAA_CASCBIAS, cascbias);
18221                 }
18222         }
18223
18224         udelay(50);
18225
18226         wlc_phy_radio205x_vcocal_nphy(pi);
18227 }
18228
18229 void wlc_phy_radio205x_vcocal_nphy(phy_info_t *pi)
18230 {
18231         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18232                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
18233                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
18234                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
18235                               (1 << 2));
18236                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
18237         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18238                 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
18239                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
18240                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
18241                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
18242                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
18243         }
18244
18245         udelay(300);
18246 }
18247
18248 #define MAX_205x_RCAL_WAITLOOPS 10000
18249
18250 static u16 wlc_phy_radio205x_rcal(phy_info_t *pi)
18251 {
18252         u16 rcal_reg = 0;
18253         int i;
18254
18255         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18256
18257                 if (pi->pubpi.radiorev == 5) {
18258
18259                         and_phy_reg(pi, 0x342, ~(0x1 << 1));
18260
18261                         udelay(10);
18262
18263                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
18264                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
18265                                       0x1);
18266                 }
18267                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
18268
18269                 udelay(10);
18270
18271                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
18272
18273                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18274                         rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
18275                         if (rcal_reg & 0x1) {
18276                                 break;
18277                         }
18278                         udelay(100);
18279                 }
18280
18281                 ASSERT(i < MAX_205x_RCAL_WAITLOOPS);
18282
18283                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
18284
18285                 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
18286
18287                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
18288                 if (pi->pubpi.radiorev == 5) {
18289
18290                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
18291                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
18292                                       0x0);
18293                 }
18294
18295                 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
18296
18297                         mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
18298                                       rcal_reg);
18299                         mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
18300                                       rcal_reg << 2);
18301                 }
18302
18303         } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
18304                 u16 savereg;
18305
18306                 savereg =
18307                     read_radio_reg(pi,
18308                                    RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN);
18309                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
18310                                 savereg | 0x7);
18311                 udelay(10);
18312
18313                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18314                                 0x1);
18315                 udelay(10);
18316
18317                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18318                                 0x9);
18319
18320                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18321                         rcal_reg = read_radio_reg(pi,
18322                                                   RADIO_2056_SYN_RCAL_CODE_OUT |
18323                                                   RADIO_2056_SYN);
18324                         if (rcal_reg & 0x80) {
18325                                 break;
18326                         }
18327                         udelay(100);
18328                 }
18329
18330                 ASSERT(i < MAX_205x_RCAL_WAITLOOPS);
18331
18332                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18333                                 0x1);
18334
18335                 rcal_reg =
18336                     read_radio_reg(pi,
18337                                    RADIO_2056_SYN_RCAL_CODE_OUT |
18338                                    RADIO_2056_SYN);
18339
18340                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18341                                 0x0);
18342
18343                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
18344                                 savereg);
18345
18346                 return rcal_reg & 0x1f;
18347         }
18348         return rcal_reg & 0x3e;
18349 }
18350
18351 static void
18352 wlc_phy_chanspec_radio2057_setup(phy_info_t *pi,
18353                                  const chan_info_nphy_radio2057_t *ci,
18354                                  const chan_info_nphy_radio2057_rev5_t *ci2)
18355 {
18356         int coreNum;
18357         u16 txmix2g_tune_boost_pu = 0;
18358         u16 pad2g_tune_pus = 0;
18359
18360         if (pi->pubpi.radiorev == 5) {
18361
18362                 write_radio_reg(pi,
18363                                 RADIO_2057_VCOCAL_COUNTVAL0,
18364                                 ci2->RF_vcocal_countval0);
18365                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
18366                                 ci2->RF_vcocal_countval1);
18367                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
18368                                 ci2->RF_rfpll_refmaster_sparextalsize);
18369                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18370                                 ci2->RF_rfpll_loopfilter_r1);
18371                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18372                                 ci2->RF_rfpll_loopfilter_c2);
18373                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18374                                 ci2->RF_rfpll_loopfilter_c1);
18375                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
18376                                 ci2->RF_cp_kpd_idac);
18377                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
18378                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
18379                 write_radio_reg(pi,
18380                                 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
18381                 write_radio_reg(pi,
18382                                 RADIO_2057_LOGEN_MX2G_TUNE,
18383                                 ci2->RF_logen_mx2g_tune);
18384                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
18385                                 ci2->RF_logen_indbuf2g_tune);
18386
18387                 write_radio_reg(pi,
18388                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
18389                                 ci2->RF_txmix2g_tune_boost_pu_core0);
18390                 write_radio_reg(pi,
18391                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
18392                                 ci2->RF_pad2g_tune_pus_core0);
18393                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
18394                                 ci2->RF_lna2g_tune_core0);
18395
18396                 write_radio_reg(pi,
18397                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
18398                                 ci2->RF_txmix2g_tune_boost_pu_core1);
18399                 write_radio_reg(pi,
18400                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
18401                                 ci2->RF_pad2g_tune_pus_core1);
18402                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
18403                                 ci2->RF_lna2g_tune_core1);
18404
18405         } else {
18406
18407                 write_radio_reg(pi,
18408                                 RADIO_2057_VCOCAL_COUNTVAL0,
18409                                 ci->RF_vcocal_countval0);
18410                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
18411                                 ci->RF_vcocal_countval1);
18412                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
18413                                 ci->RF_rfpll_refmaster_sparextalsize);
18414                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18415                                 ci->RF_rfpll_loopfilter_r1);
18416                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18417                                 ci->RF_rfpll_loopfilter_c2);
18418                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18419                                 ci->RF_rfpll_loopfilter_c1);
18420                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
18421                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
18422                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
18423                 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
18424                 write_radio_reg(pi,
18425                                 RADIO_2057_LOGEN_MX2G_TUNE,
18426                                 ci->RF_logen_mx2g_tune);
18427                 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
18428                                 ci->RF_logen_mx5g_tune);
18429                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
18430                                 ci->RF_logen_indbuf2g_tune);
18431                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
18432                                 ci->RF_logen_indbuf5g_tune);
18433
18434                 write_radio_reg(pi,
18435                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
18436                                 ci->RF_txmix2g_tune_boost_pu_core0);
18437                 write_radio_reg(pi,
18438                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
18439                                 ci->RF_pad2g_tune_pus_core0);
18440                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
18441                                 ci->RF_pga_boost_tune_core0);
18442                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
18443                                 ci->RF_txmix5g_boost_tune_core0);
18444                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
18445                                 ci->RF_pad5g_tune_misc_pus_core0);
18446                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
18447                                 ci->RF_lna2g_tune_core0);
18448                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
18449                                 ci->RF_lna5g_tune_core0);
18450
18451                 write_radio_reg(pi,
18452                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
18453                                 ci->RF_txmix2g_tune_boost_pu_core1);
18454                 write_radio_reg(pi,
18455                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
18456                                 ci->RF_pad2g_tune_pus_core1);
18457                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
18458                                 ci->RF_pga_boost_tune_core1);
18459                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
18460                                 ci->RF_txmix5g_boost_tune_core1);
18461                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
18462                                 ci->RF_pad5g_tune_misc_pus_core1);
18463                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
18464                                 ci->RF_lna2g_tune_core1);
18465                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
18466                                 ci->RF_lna5g_tune_core1);
18467         }
18468
18469         if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
18470
18471                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18472                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18473                                         0x3f);
18474                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
18475                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18476                                         0x8);
18477                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18478                                         0x8);
18479                 } else {
18480                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18481                                         0x1f);
18482                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
18483                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18484                                         0x8);
18485                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18486                                         0x8);
18487                 }
18488         } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
18489                    (pi->pubpi.radiorev == 8)) {
18490
18491                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18492                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18493                                         0x1b);
18494                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
18495                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18496                                         0xa);
18497                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18498                                         0xa);
18499                 } else {
18500                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18501                                         0x1f);
18502                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
18503                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18504                                         0x8);
18505                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18506                                         0x8);
18507                 }
18508
18509         }
18510
18511         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18512                 if (PHY_IPA(pi)) {
18513                         if (pi->pubpi.radiorev == 3) {
18514                                 txmix2g_tune_boost_pu = 0x6b;
18515                         }
18516
18517                         if (pi->pubpi.radiorev == 5)
18518                                 pad2g_tune_pus = 0x73;
18519
18520                 } else {
18521                         if (pi->pubpi.radiorev != 5) {
18522                                 pad2g_tune_pus = 0x3;
18523
18524                                 txmix2g_tune_boost_pu = 0x61;
18525                         }
18526                 }
18527
18528                 for (coreNum = 0; coreNum <= 1; coreNum++) {
18529
18530                         if (txmix2g_tune_boost_pu != 0)
18531                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
18532                                                  TXMIX2G_TUNE_BOOST_PU,
18533                                                  txmix2g_tune_boost_pu);
18534
18535                         if (pad2g_tune_pus != 0)
18536                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
18537                                                  PAD2G_TUNE_PUS,
18538                                                  pad2g_tune_pus);
18539                 }
18540         }
18541
18542         udelay(50);
18543
18544         wlc_phy_radio205x_vcocal_nphy(pi);
18545 }
18546
18547 static u16 wlc_phy_radio2057_rccal(phy_info_t *pi)
18548 {
18549         u16 rccal_valid;
18550         int i;
18551         bool chip43226_6362A0;
18552
18553         chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
18554                             || (pi->pubpi.radiorev == 4)
18555                             || (pi->pubpi.radiorev == 6));
18556
18557         rccal_valid = 0;
18558         if (chip43226_6362A0) {
18559                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
18560                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
18561         } else {
18562                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
18563
18564                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
18565         }
18566         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
18567         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
18568
18569         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18570                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
18571                 if (rccal_valid & 0x2) {
18572                         break;
18573                 }
18574                 udelay(500);
18575         }
18576
18577         ASSERT(rccal_valid & 0x2);
18578
18579         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
18580
18581         rccal_valid = 0;
18582         if (chip43226_6362A0) {
18583                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
18584                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
18585         } else {
18586                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
18587
18588                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
18589         }
18590         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
18591         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
18592
18593         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18594                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
18595                 if (rccal_valid & 0x2) {
18596                         break;
18597                 }
18598                 udelay(500);
18599         }
18600
18601         ASSERT(rccal_valid & 0x2);
18602
18603         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
18604
18605         rccal_valid = 0;
18606         if (chip43226_6362A0) {
18607                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
18608
18609                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
18610                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
18611         } else {
18612                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
18613                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
18614                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
18615         }
18616         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
18617
18618         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18619                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
18620                 if (rccal_valid & 0x2) {
18621                         break;
18622                 }
18623                 udelay(500);
18624         }
18625
18626         ASSERT(rccal_valid & 0x2);
18627
18628         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
18629
18630         return rccal_valid;
18631 }
18632
18633 static void
18634 wlc_phy_adjust_rx_analpfbw_nphy(phy_info_t *pi, u16 reduction_factr)
18635 {
18636         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18637                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18638                     CHSPEC_IS40(pi->radio_chanspec)) {
18639                         if (!pi->nphy_anarxlpf_adjusted) {
18640                                 write_radio_reg(pi,
18641                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18642                                                  RADIO_2056_RX0),
18643                                                 ((pi->nphy_rccal_value +
18644                                                   reduction_factr) | 0x80));
18645
18646                                 pi->nphy_anarxlpf_adjusted = true;
18647                         }
18648                 } else {
18649                         if (pi->nphy_anarxlpf_adjusted) {
18650                                 write_radio_reg(pi,
18651                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18652                                                  RADIO_2056_RX0),
18653                                                 (pi->nphy_rccal_value | 0x80));
18654
18655                                 pi->nphy_anarxlpf_adjusted = false;
18656                         }
18657                 }
18658         }
18659 }
18660
18661 static void
18662 wlc_phy_adjust_min_noisevar_nphy(phy_info_t *pi, int ntones, int *tone_id_buf,
18663                                  u32 *noise_var_buf)
18664 {
18665         int i;
18666         u32 offset;
18667         int tone_id;
18668         int tbllen =
18669             CHSPEC_IS40(pi->
18670                         radio_chanspec) ? NPHY_NOISEVAR_TBLLEN40 :
18671             NPHY_NOISEVAR_TBLLEN20;
18672
18673         if (pi->nphy_noisevars_adjusted) {
18674                 for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
18675                         tone_id = pi->nphy_saved_noisevars.tone_id[i];
18676                         offset = (tone_id >= 0) ?
18677                             ((tone_id * 2) + 1) : (tbllen + (tone_id * 2) + 1);
18678                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18679                                                  offset, 32,
18680                                                  (void *)&pi->
18681                                                  nphy_saved_noisevars.
18682                                                  min_noise_vars[i]);
18683                 }
18684
18685                 pi->nphy_saved_noisevars.bufcount = 0;
18686                 pi->nphy_noisevars_adjusted = false;
18687         }
18688
18689         if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
18690                 pi->nphy_saved_noisevars.bufcount = 0;
18691
18692                 for (i = 0; i < ntones; i++) {
18693                         tone_id = tone_id_buf[i];
18694                         offset = (tone_id >= 0) ?
18695                             ((tone_id * 2) + 1) : (tbllen + (tone_id * 2) + 1);
18696                         pi->nphy_saved_noisevars.tone_id[i] = tone_id;
18697                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18698                                                 offset, 32,
18699                                                 &pi->nphy_saved_noisevars.
18700                                                 min_noise_vars[i]);
18701                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18702                                                  offset, 32,
18703                                                  (void *)&noise_var_buf[i]);
18704                         pi->nphy_saved_noisevars.bufcount++;
18705                 }
18706
18707                 pi->nphy_noisevars_adjusted = true;
18708         }
18709 }
18710
18711 static void wlc_phy_adjust_crsminpwr_nphy(phy_info_t *pi, u8 minpwr)
18712 {
18713         u16 regval;
18714
18715         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18716                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18717                     CHSPEC_IS40(pi->radio_chanspec)) {
18718                         if (!pi->nphy_crsminpwr_adjusted) {
18719                                 regval = read_phy_reg(pi, 0x27d);
18720                                 pi->nphy_crsminpwr[0] = regval & 0xff;
18721                                 regval &= 0xff00;
18722                                 regval |= (u16) minpwr;
18723                                 write_phy_reg(pi, 0x27d, regval);
18724
18725                                 regval = read_phy_reg(pi, 0x280);
18726                                 pi->nphy_crsminpwr[1] = regval & 0xff;
18727                                 regval &= 0xff00;
18728                                 regval |= (u16) minpwr;
18729                                 write_phy_reg(pi, 0x280, regval);
18730
18731                                 regval = read_phy_reg(pi, 0x283);
18732                                 pi->nphy_crsminpwr[2] = regval & 0xff;
18733                                 regval &= 0xff00;
18734                                 regval |= (u16) minpwr;
18735                                 write_phy_reg(pi, 0x283, regval);
18736
18737                                 pi->nphy_crsminpwr_adjusted = true;
18738                         }
18739                 } else {
18740                         if (pi->nphy_crsminpwr_adjusted) {
18741                                 regval = read_phy_reg(pi, 0x27d);
18742                                 regval &= 0xff00;
18743                                 regval |= pi->nphy_crsminpwr[0];
18744                                 write_phy_reg(pi, 0x27d, regval);
18745
18746                                 regval = read_phy_reg(pi, 0x280);
18747                                 regval &= 0xff00;
18748                                 regval |= pi->nphy_crsminpwr[1];
18749                                 write_phy_reg(pi, 0x280, regval);
18750
18751                                 regval = read_phy_reg(pi, 0x283);
18752                                 regval &= 0xff00;
18753                                 regval |= pi->nphy_crsminpwr[2];
18754                                 write_phy_reg(pi, 0x283, regval);
18755
18756                                 pi->nphy_crsminpwr_adjusted = false;
18757                         }
18758                 }
18759         }
18760 }
18761
18762 static void wlc_phy_txlpfbw_nphy(phy_info_t *pi)
18763 {
18764         u8 tx_lpf_bw = 0;
18765
18766         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18767                 if (CHSPEC_IS40(pi->radio_chanspec)) {
18768                         tx_lpf_bw = 3;
18769                 } else {
18770                         tx_lpf_bw = 1;
18771                 }
18772
18773                 if (PHY_IPA(pi)) {
18774                         if (CHSPEC_IS40(pi->radio_chanspec)) {
18775                                 tx_lpf_bw = 5;
18776                         } else {
18777                                 tx_lpf_bw = 4;
18778                         }
18779                 }
18780                 write_phy_reg(pi, 0xe8,
18781                               (tx_lpf_bw << 0) |
18782                               (tx_lpf_bw << 3) |
18783                               (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18784
18785                 if (PHY_IPA(pi)) {
18786
18787                         if (CHSPEC_IS40(pi->radio_chanspec)) {
18788                                 tx_lpf_bw = 4;
18789                         } else {
18790                                 tx_lpf_bw = 1;
18791                         }
18792
18793                         write_phy_reg(pi, 0xe9,
18794                                       (tx_lpf_bw << 0) |
18795                                       (tx_lpf_bw << 3) |
18796                                       (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18797                 }
18798         }
18799 }
18800
18801 static void wlc_phy_spurwar_nphy(phy_info_t *pi)
18802 {
18803         u16 cur_channel = 0;
18804         int nphy_adj_tone_id_buf[] = { 57, 58 };
18805         u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
18806         bool isAdjustNoiseVar = false;
18807         uint numTonesAdjust = 0;
18808         u32 tempval = 0;
18809
18810         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18811                 if (pi->phyhang_avoid)
18812                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
18813
18814                 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
18815
18816                 if (pi->nphy_gband_spurwar_en) {
18817
18818                         wlc_phy_adjust_rx_analpfbw_nphy(pi,
18819                                                         NPHY_ANARXLPFBW_REDUCTIONFACT);
18820
18821                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18822                                 if ((cur_channel == 11)
18823                                     && CHSPEC_IS40(pi->radio_chanspec)) {
18824
18825                                         wlc_phy_adjust_min_noisevar_nphy(pi, 2,
18826                                                                          nphy_adj_tone_id_buf,
18827                                                                          nphy_adj_noise_var_buf);
18828                                 } else {
18829
18830                                         wlc_phy_adjust_min_noisevar_nphy(pi, 0,
18831                                                                          NULL,
18832                                                                          NULL);
18833                                 }
18834                         }
18835                         wlc_phy_adjust_crsminpwr_nphy(pi,
18836                                                       NPHY_ADJUSTED_MINCRSPOWER);
18837                 }
18838
18839                 if ((pi->nphy_gband_spurwar2_en)
18840                     && CHSPEC_IS2G(pi->radio_chanspec)) {
18841
18842                         if (CHSPEC_IS40(pi->radio_chanspec)) {
18843                                 switch (cur_channel) {
18844                                 case 3:
18845                                         nphy_adj_tone_id_buf[0] = 57;
18846                                         nphy_adj_tone_id_buf[1] = 58;
18847                                         nphy_adj_noise_var_buf[0] = 0x22f;
18848                                         nphy_adj_noise_var_buf[1] = 0x25f;
18849                                         isAdjustNoiseVar = true;
18850                                         break;
18851                                 case 4:
18852                                         nphy_adj_tone_id_buf[0] = 41;
18853                                         nphy_adj_tone_id_buf[1] = 42;
18854                                         nphy_adj_noise_var_buf[0] = 0x22f;
18855                                         nphy_adj_noise_var_buf[1] = 0x25f;
18856                                         isAdjustNoiseVar = true;
18857                                         break;
18858                                 case 5:
18859                                         nphy_adj_tone_id_buf[0] = 25;
18860                                         nphy_adj_tone_id_buf[1] = 26;
18861                                         nphy_adj_noise_var_buf[0] = 0x24f;
18862                                         nphy_adj_noise_var_buf[1] = 0x25f;
18863                                         isAdjustNoiseVar = true;
18864                                         break;
18865                                 case 6:
18866                                         nphy_adj_tone_id_buf[0] = 9;
18867                                         nphy_adj_tone_id_buf[1] = 10;
18868                                         nphy_adj_noise_var_buf[0] = 0x22f;
18869                                         nphy_adj_noise_var_buf[1] = 0x24f;
18870                                         isAdjustNoiseVar = true;
18871                                         break;
18872                                 case 7:
18873                                         nphy_adj_tone_id_buf[0] = 121;
18874                                         nphy_adj_tone_id_buf[1] = 122;
18875                                         nphy_adj_noise_var_buf[0] = 0x18f;
18876                                         nphy_adj_noise_var_buf[1] = 0x24f;
18877                                         isAdjustNoiseVar = true;
18878                                         break;
18879                                 case 8:
18880                                         nphy_adj_tone_id_buf[0] = 105;
18881                                         nphy_adj_tone_id_buf[1] = 106;
18882                                         nphy_adj_noise_var_buf[0] = 0x22f;
18883                                         nphy_adj_noise_var_buf[1] = 0x25f;
18884                                         isAdjustNoiseVar = true;
18885                                         break;
18886                                 case 9:
18887                                         nphy_adj_tone_id_buf[0] = 89;
18888                                         nphy_adj_tone_id_buf[1] = 90;
18889                                         nphy_adj_noise_var_buf[0] = 0x22f;
18890                                         nphy_adj_noise_var_buf[1] = 0x24f;
18891                                         isAdjustNoiseVar = true;
18892                                         break;
18893                                 case 10:
18894                                         nphy_adj_tone_id_buf[0] = 73;
18895                                         nphy_adj_tone_id_buf[1] = 74;
18896                                         nphy_adj_noise_var_buf[0] = 0x22f;
18897                                         nphy_adj_noise_var_buf[1] = 0x24f;
18898                                         isAdjustNoiseVar = true;
18899                                         break;
18900                                 default:
18901                                         isAdjustNoiseVar = false;
18902                                         break;
18903                                 }
18904                         }
18905
18906                         if (isAdjustNoiseVar) {
18907                                 numTonesAdjust = sizeof(nphy_adj_tone_id_buf) /
18908                                     sizeof(nphy_adj_tone_id_buf[0]);
18909
18910                                 wlc_phy_adjust_min_noisevar_nphy(pi,
18911                                                                  numTonesAdjust,
18912                                                                  nphy_adj_tone_id_buf,
18913                                                                  nphy_adj_noise_var_buf);
18914
18915                                 tempval = 0;
18916
18917                         } else {
18918
18919                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
18920                                                                  NULL);
18921                         }
18922                 }
18923
18924                 if ((pi->nphy_aband_spurwar_en) &&
18925                     (CHSPEC_IS5G(pi->radio_chanspec))) {
18926                         switch (cur_channel) {
18927                         case 54:
18928                                 nphy_adj_tone_id_buf[0] = 32;
18929                                 nphy_adj_noise_var_buf[0] = 0x25f;
18930                                 break;
18931                         case 38:
18932                         case 102:
18933                         case 118:
18934                                 if ((pi->sh->chip == BCM4716_CHIP_ID) &&
18935                                     (pi->sh->chippkg == BCM4717_PKG_ID)) {
18936                                         nphy_adj_tone_id_buf[0] = 32;
18937                                         nphy_adj_noise_var_buf[0] = 0x21f;
18938                                 } else {
18939                                         nphy_adj_tone_id_buf[0] = 0;
18940                                         nphy_adj_noise_var_buf[0] = 0x0;
18941                                 }
18942                                 break;
18943                         case 134:
18944                                 nphy_adj_tone_id_buf[0] = 32;
18945                                 nphy_adj_noise_var_buf[0] = 0x21f;
18946                                 break;
18947                         case 151:
18948                                 nphy_adj_tone_id_buf[0] = 16;
18949                                 nphy_adj_noise_var_buf[0] = 0x23f;
18950                                 break;
18951                         case 153:
18952                         case 161:
18953                                 nphy_adj_tone_id_buf[0] = 48;
18954                                 nphy_adj_noise_var_buf[0] = 0x23f;
18955                                 break;
18956                         default:
18957                                 nphy_adj_tone_id_buf[0] = 0;
18958                                 nphy_adj_noise_var_buf[0] = 0x0;
18959                                 break;
18960                         }
18961
18962                         if (nphy_adj_tone_id_buf[0]
18963                             && nphy_adj_noise_var_buf[0]) {
18964                                 wlc_phy_adjust_min_noisevar_nphy(pi, 1,
18965                                                                  nphy_adj_tone_id_buf,
18966                                                                  nphy_adj_noise_var_buf);
18967                         } else {
18968                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
18969                                                                  NULL);
18970                         }
18971                 }
18972
18973                 if (pi->phyhang_avoid)
18974                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
18975         }
18976 }
18977
18978 static void
18979 wlc_phy_chanspec_nphy_setup(phy_info_t *pi, chanspec_t chanspec,
18980                             const nphy_sfo_cfg_t *ci)
18981 {
18982         u16 val;
18983
18984         val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
18985         if (CHSPEC_IS5G(chanspec) && !val) {
18986
18987                 val = R_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param);
18988                 W_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param,
18989                       (val | MAC_PHY_FORCE_CLK));
18990
18991                 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
18992                            (BBCFG_RESETCCA | BBCFG_RESETRX));
18993
18994                 W_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param, val);
18995
18996                 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
18997         } else if (!CHSPEC_IS5G(chanspec) && val) {
18998
18999                 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
19000
19001                 val = R_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param);
19002                 W_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param,
19003                       (val | MAC_PHY_FORCE_CLK));
19004
19005                 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
19006                             (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
19007
19008                 W_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param, val);
19009         }
19010
19011         write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
19012         write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
19013         write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
19014
19015         write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
19016         write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
19017         write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
19018
19019         if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
19020                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
19021
19022                 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
19023         } else {
19024                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
19025                                         NPHY_ClassifierCtrl_ofdm_en);
19026
19027                 if (CHSPEC_IS2G(chanspec))
19028                         and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
19029         }
19030
19031         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
19032                 wlc_phy_txpwr_fixpower_nphy(pi);
19033         }
19034
19035         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
19036
19037                 wlc_phy_adjust_lnagaintbl_nphy(pi);
19038         }
19039
19040         wlc_phy_txlpfbw_nphy(pi);
19041
19042         if (NREV_GE(pi->pubpi.phy_rev, 3)
19043             && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
19044                 u8 spuravoid = 0;
19045
19046                 val = CHSPEC_CHANNEL(chanspec);
19047                 if (!CHSPEC_IS40(pi->radio_chanspec)) {
19048                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19049                                 if ((val == 13) || (val == 14) || (val == 153)) {
19050                                         spuravoid = 1;
19051                                 }
19052                         } else {
19053
19054                                 if (((val >= 5) && (val <= 8)) || (val == 13)
19055                                     || (val == 14)) {
19056                                         spuravoid = 1;
19057                                 }
19058                         }
19059                 } else {
19060                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19061                                 if (val == 54) {
19062                                         spuravoid = 1;
19063                                 }
19064                         } else {
19065
19066                                 if (pi->nphy_aband_spurwar_en &&
19067                                     ((val == 38) || (val == 102)
19068                                      || (val == 118))) {
19069                                         if ((pi->sh->chip ==
19070                                              BCM4716_CHIP_ID)
19071                                             && (pi->sh->chippkg ==
19072                                                 BCM4717_PKG_ID)) {
19073                                                 spuravoid = 0;
19074                                         } else {
19075                                                 spuravoid = 1;
19076                                         }
19077                                 }
19078                         }
19079                 }
19080
19081                 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
19082                         spuravoid = 1;
19083
19084                 if ((pi->sh->chip == BCM4716_CHIP_ID) ||
19085                     (pi->sh->chip == BCM47162_CHIP_ID)) {
19086                         si_pmu_spuravoid(pi->sh->sih, pi->sh->osh, spuravoid);
19087                 } else {
19088                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
19089                         si_pmu_spuravoid(pi->sh->sih, pi->sh->osh, spuravoid);
19090                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
19091                 }
19092
19093                 if ((pi->sh->chip == BCM43224_CHIP_ID) ||
19094                     (pi->sh->chip == BCM43225_CHIP_ID) ||
19095                     (pi->sh->chip == BCM43421_CHIP_ID)) {
19096
19097                         if (spuravoid == 1) {
19098
19099                                 W_REG(pi->sh->osh, &pi->regs->tsf_clk_frac_l,
19100                                       0x5341);
19101                                 W_REG(pi->sh->osh, &pi->regs->tsf_clk_frac_h,
19102                                       0x8);
19103                         } else {
19104
19105                                 W_REG(pi->sh->osh, &pi->regs->tsf_clk_frac_l,
19106                                       0x8889);
19107                                 W_REG(pi->sh->osh, &pi->regs->tsf_clk_frac_h,
19108                                       0x8);
19109                         }
19110                 }
19111
19112                 if (!((pi->sh->chip == BCM4716_CHIP_ID) ||
19113                       (pi->sh->chip == BCM47162_CHIP_ID))) {
19114                         wlapi_bmac_core_phypll_reset(pi->sh->physhim);
19115                 }
19116
19117                 mod_phy_reg(pi, 0x01, (0x1 << 15),
19118                             ((spuravoid > 0) ? (0x1 << 15) : 0));
19119
19120                 wlc_phy_resetcca_nphy(pi);
19121
19122                 pi->phy_isspuravoid = (spuravoid > 0);
19123         }
19124
19125         if (NREV_LT(pi->pubpi.phy_rev, 7))
19126                 write_phy_reg(pi, 0x17e, 0x3830);
19127
19128         wlc_phy_spurwar_nphy(pi);
19129 }
19130
19131 void wlc_phy_chanspec_set_nphy(phy_info_t *pi, chanspec_t chanspec)
19132 {
19133         int freq;
19134         chan_info_nphy_radio2057_t *t0 = NULL;
19135         chan_info_nphy_radio205x_t *t1 = NULL;
19136         chan_info_nphy_radio2057_rev5_t *t2 = NULL;
19137         chan_info_nphy_2055_t *t3 = NULL;
19138
19139         if (NORADIO_ENAB(pi->pubpi)) {
19140                 return;
19141         }
19142
19143         if (!wlc_phy_chan2freq_nphy
19144             (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
19145                 return;
19146
19147         wlc_phy_chanspec_radio_set((wlc_phy_t *) pi, chanspec);
19148
19149         if (CHSPEC_BW(chanspec) != pi->bw)
19150                 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
19151
19152         if (CHSPEC_IS40(chanspec)) {
19153                 if (CHSPEC_SB_UPPER(chanspec)) {
19154                         or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
19155                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19156                                 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
19157                         }
19158                 } else {
19159                         and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
19160                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19161                                 and_phy_reg(pi, 0x310,
19162                                             (~PRIM_SEL_UP20 & 0xffff));
19163                         }
19164                 }
19165         }
19166
19167         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19168                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19169
19170                         if ((pi->pubpi.radiorev <= 4)
19171                             || (pi->pubpi.radiorev == 6)) {
19172                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
19173                                               0x2,
19174                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
19175                                                : 0));
19176                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
19177                                               0x2,
19178                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
19179                                                : 0));
19180                         }
19181
19182                         wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
19183                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
19184                                                     (pi->pubpi.radiorev ==
19185                                                      5) ? (const nphy_sfo_cfg_t
19186                                                            *)&(t2->
19187                                                                PHY_BW1a)
19188                                                     : (const nphy_sfo_cfg_t *)
19189                                                     &(t0->PHY_BW1a));
19190
19191                 } else {
19192
19193                         mod_radio_reg(pi,
19194                                       RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
19195                                       0x4,
19196                                       (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
19197                         wlc_phy_chanspec_radio2056_setup(pi, t1);
19198
19199                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
19200                                                     (const nphy_sfo_cfg_t *)
19201                                                     &(t1->PHY_BW1a));
19202                 }
19203
19204         } else {
19205
19206                 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
19207                               (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
19208                                : (0x05 << 4)));
19209
19210                 wlc_phy_chanspec_radio2055_setup(pi, t3);
19211                 wlc_phy_chanspec_nphy_setup(pi, chanspec,
19212                                             (const nphy_sfo_cfg_t *)&(t3->
19213                                                                       PHY_BW1a));
19214         }
19215
19216 }
19217
19218 static void wlc_phy_savecal_nphy(phy_info_t *pi)
19219 {
19220         void *tbl_ptr;
19221         int coreNum;
19222         u16 *txcal_radio_regs = NULL;
19223
19224         if (pi->phyhang_avoid)
19225                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19226
19227         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19228
19229                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
19230                                           &pi->calibration_cache.
19231                                           rxcal_coeffs_2G);
19232
19233                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19234                         txcal_radio_regs =
19235                             pi->calibration_cache.txcal_radio_regs_2G;
19236                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19237
19238                         pi->calibration_cache.txcal_radio_regs_2G[0] =
19239                             read_radio_reg(pi,
19240                                            RADIO_2056_TX_LOFT_FINE_I |
19241                                            RADIO_2056_TX0);
19242                         pi->calibration_cache.txcal_radio_regs_2G[1] =
19243                             read_radio_reg(pi,
19244                                            RADIO_2056_TX_LOFT_FINE_Q |
19245                                            RADIO_2056_TX0);
19246                         pi->calibration_cache.txcal_radio_regs_2G[2] =
19247                             read_radio_reg(pi,
19248                                            RADIO_2056_TX_LOFT_FINE_I |
19249                                            RADIO_2056_TX1);
19250                         pi->calibration_cache.txcal_radio_regs_2G[3] =
19251                             read_radio_reg(pi,
19252                                            RADIO_2056_TX_LOFT_FINE_Q |
19253                                            RADIO_2056_TX1);
19254
19255                         pi->calibration_cache.txcal_radio_regs_2G[4] =
19256                             read_radio_reg(pi,
19257                                            RADIO_2056_TX_LOFT_COARSE_I |
19258                                            RADIO_2056_TX0);
19259                         pi->calibration_cache.txcal_radio_regs_2G[5] =
19260                             read_radio_reg(pi,
19261                                            RADIO_2056_TX_LOFT_COARSE_Q |
19262                                            RADIO_2056_TX0);
19263                         pi->calibration_cache.txcal_radio_regs_2G[6] =
19264                             read_radio_reg(pi,
19265                                            RADIO_2056_TX_LOFT_COARSE_I |
19266                                            RADIO_2056_TX1);
19267                         pi->calibration_cache.txcal_radio_regs_2G[7] =
19268                             read_radio_reg(pi,
19269                                            RADIO_2056_TX_LOFT_COARSE_Q |
19270                                            RADIO_2056_TX1);
19271                 } else {
19272                         pi->calibration_cache.txcal_radio_regs_2G[0] =
19273                             read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
19274                         pi->calibration_cache.txcal_radio_regs_2G[1] =
19275                             read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
19276                         pi->calibration_cache.txcal_radio_regs_2G[2] =
19277                             read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
19278                         pi->calibration_cache.txcal_radio_regs_2G[3] =
19279                             read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
19280                 }
19281
19282                 pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
19283                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
19284         } else {
19285
19286                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
19287                                           &pi->calibration_cache.
19288                                           rxcal_coeffs_5G);
19289
19290                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19291                         txcal_radio_regs =
19292                             pi->calibration_cache.txcal_radio_regs_5G;
19293                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19294
19295                         pi->calibration_cache.txcal_radio_regs_5G[0] =
19296                             read_radio_reg(pi,
19297                                            RADIO_2056_TX_LOFT_FINE_I |
19298                                            RADIO_2056_TX0);
19299                         pi->calibration_cache.txcal_radio_regs_5G[1] =
19300                             read_radio_reg(pi,
19301                                            RADIO_2056_TX_LOFT_FINE_Q |
19302                                            RADIO_2056_TX0);
19303                         pi->calibration_cache.txcal_radio_regs_5G[2] =
19304                             read_radio_reg(pi,
19305                                            RADIO_2056_TX_LOFT_FINE_I |
19306                                            RADIO_2056_TX1);
19307                         pi->calibration_cache.txcal_radio_regs_5G[3] =
19308                             read_radio_reg(pi,
19309                                            RADIO_2056_TX_LOFT_FINE_Q |
19310                                            RADIO_2056_TX1);
19311
19312                         pi->calibration_cache.txcal_radio_regs_5G[4] =
19313                             read_radio_reg(pi,
19314                                            RADIO_2056_TX_LOFT_COARSE_I |
19315                                            RADIO_2056_TX0);
19316                         pi->calibration_cache.txcal_radio_regs_5G[5] =
19317                             read_radio_reg(pi,
19318                                            RADIO_2056_TX_LOFT_COARSE_Q |
19319                                            RADIO_2056_TX0);
19320                         pi->calibration_cache.txcal_radio_regs_5G[6] =
19321                             read_radio_reg(pi,
19322                                            RADIO_2056_TX_LOFT_COARSE_I |
19323                                            RADIO_2056_TX1);
19324                         pi->calibration_cache.txcal_radio_regs_5G[7] =
19325                             read_radio_reg(pi,
19326                                            RADIO_2056_TX_LOFT_COARSE_Q |
19327                                            RADIO_2056_TX1);
19328                 } else {
19329                         pi->calibration_cache.txcal_radio_regs_5G[0] =
19330                             read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
19331                         pi->calibration_cache.txcal_radio_regs_5G[1] =
19332                             read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
19333                         pi->calibration_cache.txcal_radio_regs_5G[2] =
19334                             read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
19335                         pi->calibration_cache.txcal_radio_regs_5G[3] =
19336                             read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
19337                 }
19338
19339                 pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
19340                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
19341         }
19342         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19343                 for (coreNum = 0; coreNum <= 1; coreNum++) {
19344
19345                         txcal_radio_regs[2 * coreNum] =
19346                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19347                                             LOFT_FINE_I);
19348                         txcal_radio_regs[2 * coreNum + 1] =
19349                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19350                                             LOFT_FINE_Q);
19351
19352                         txcal_radio_regs[2 * coreNum + 4] =
19353                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19354                                             LOFT_COARSE_I);
19355                         txcal_radio_regs[2 * coreNum + 5] =
19356                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19357                                             LOFT_COARSE_Q);
19358                 }
19359         }
19360
19361         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
19362
19363         if (pi->phyhang_avoid)
19364                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19365 }
19366
19367 static void wlc_phy_restorecal_nphy(phy_info_t *pi)
19368 {
19369         u16 *loft_comp;
19370         u16 txcal_coeffs_bphy[4];
19371         u16 *tbl_ptr;
19372         int coreNum;
19373         u16 *txcal_radio_regs = NULL;
19374
19375         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19376                 if (pi->nphy_iqcal_chanspec_2G == 0)
19377                         return;
19378
19379                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
19380                 loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
19381         } else {
19382                 if (pi->nphy_iqcal_chanspec_5G == 0)
19383                         return;
19384
19385                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
19386                 loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
19387         }
19388
19389         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16,
19390                                  (void *)tbl_ptr);
19391
19392         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19393                 txcal_coeffs_bphy[0] = tbl_ptr[0];
19394                 txcal_coeffs_bphy[1] = tbl_ptr[1];
19395                 txcal_coeffs_bphy[2] = tbl_ptr[2];
19396                 txcal_coeffs_bphy[3] = tbl_ptr[3];
19397         } else {
19398                 txcal_coeffs_bphy[0] = 0;
19399                 txcal_coeffs_bphy[1] = 0;
19400                 txcal_coeffs_bphy[2] = 0;
19401                 txcal_coeffs_bphy[3] = 0;
19402         }
19403
19404         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
19405                                  txcal_coeffs_bphy);
19406
19407         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
19408
19409         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
19410
19411         if (NREV_LT(pi->pubpi.phy_rev, 2))
19412                 wlc_phy_tx_iq_war_nphy(pi);
19413
19414         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19415                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19416                         txcal_radio_regs =
19417                             pi->calibration_cache.txcal_radio_regs_2G;
19418                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19419
19420                         write_radio_reg(pi,
19421                                         RADIO_2056_TX_LOFT_FINE_I |
19422                                         RADIO_2056_TX0,
19423                                         pi->calibration_cache.
19424                                         txcal_radio_regs_2G[0]);
19425                         write_radio_reg(pi,
19426                                         RADIO_2056_TX_LOFT_FINE_Q |
19427                                         RADIO_2056_TX0,
19428                                         pi->calibration_cache.
19429                                         txcal_radio_regs_2G[1]);
19430                         write_radio_reg(pi,
19431                                         RADIO_2056_TX_LOFT_FINE_I |
19432                                         RADIO_2056_TX1,
19433                                         pi->calibration_cache.
19434                                         txcal_radio_regs_2G[2]);
19435                         write_radio_reg(pi,
19436                                         RADIO_2056_TX_LOFT_FINE_Q |
19437                                         RADIO_2056_TX1,
19438                                         pi->calibration_cache.
19439                                         txcal_radio_regs_2G[3]);
19440
19441                         write_radio_reg(pi,
19442                                         RADIO_2056_TX_LOFT_COARSE_I |
19443                                         RADIO_2056_TX0,
19444                                         pi->calibration_cache.
19445                                         txcal_radio_regs_2G[4]);
19446                         write_radio_reg(pi,
19447                                         RADIO_2056_TX_LOFT_COARSE_Q |
19448                                         RADIO_2056_TX0,
19449                                         pi->calibration_cache.
19450                                         txcal_radio_regs_2G[5]);
19451                         write_radio_reg(pi,
19452                                         RADIO_2056_TX_LOFT_COARSE_I |
19453                                         RADIO_2056_TX1,
19454                                         pi->calibration_cache.
19455                                         txcal_radio_regs_2G[6]);
19456                         write_radio_reg(pi,
19457                                         RADIO_2056_TX_LOFT_COARSE_Q |
19458                                         RADIO_2056_TX1,
19459                                         pi->calibration_cache.
19460                                         txcal_radio_regs_2G[7]);
19461                 } else {
19462                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
19463                                         pi->calibration_cache.
19464                                         txcal_radio_regs_2G[0]);
19465                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
19466                                         pi->calibration_cache.
19467                                         txcal_radio_regs_2G[1]);
19468                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
19469                                         pi->calibration_cache.
19470                                         txcal_radio_regs_2G[2]);
19471                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
19472                                         pi->calibration_cache.
19473                                         txcal_radio_regs_2G[3]);
19474                 }
19475
19476                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
19477                                           &pi->calibration_cache.
19478                                           rxcal_coeffs_2G);
19479         } else {
19480                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19481                         txcal_radio_regs =
19482                             pi->calibration_cache.txcal_radio_regs_5G;
19483                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19484
19485                         write_radio_reg(pi,
19486                                         RADIO_2056_TX_LOFT_FINE_I |
19487                                         RADIO_2056_TX0,
19488                                         pi->calibration_cache.
19489                                         txcal_radio_regs_5G[0]);
19490                         write_radio_reg(pi,
19491                                         RADIO_2056_TX_LOFT_FINE_Q |
19492                                         RADIO_2056_TX0,
19493                                         pi->calibration_cache.
19494                                         txcal_radio_regs_5G[1]);
19495                         write_radio_reg(pi,
19496                                         RADIO_2056_TX_LOFT_FINE_I |
19497                                         RADIO_2056_TX1,
19498                                         pi->calibration_cache.
19499                                         txcal_radio_regs_5G[2]);
19500                         write_radio_reg(pi,
19501                                         RADIO_2056_TX_LOFT_FINE_Q |
19502                                         RADIO_2056_TX1,
19503                                         pi->calibration_cache.
19504                                         txcal_radio_regs_5G[3]);
19505
19506                         write_radio_reg(pi,
19507                                         RADIO_2056_TX_LOFT_COARSE_I |
19508                                         RADIO_2056_TX0,
19509                                         pi->calibration_cache.
19510                                         txcal_radio_regs_5G[4]);
19511                         write_radio_reg(pi,
19512                                         RADIO_2056_TX_LOFT_COARSE_Q |
19513                                         RADIO_2056_TX0,
19514                                         pi->calibration_cache.
19515                                         txcal_radio_regs_5G[5]);
19516                         write_radio_reg(pi,
19517                                         RADIO_2056_TX_LOFT_COARSE_I |
19518                                         RADIO_2056_TX1,
19519                                         pi->calibration_cache.
19520                                         txcal_radio_regs_5G[6]);
19521                         write_radio_reg(pi,
19522                                         RADIO_2056_TX_LOFT_COARSE_Q |
19523                                         RADIO_2056_TX1,
19524                                         pi->calibration_cache.
19525                                         txcal_radio_regs_5G[7]);
19526                 } else {
19527                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
19528                                         pi->calibration_cache.
19529                                         txcal_radio_regs_5G[0]);
19530                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
19531                                         pi->calibration_cache.
19532                                         txcal_radio_regs_5G[1]);
19533                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
19534                                         pi->calibration_cache.
19535                                         txcal_radio_regs_5G[2]);
19536                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
19537                                         pi->calibration_cache.
19538                                         txcal_radio_regs_5G[3]);
19539                 }
19540
19541                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
19542                                           &pi->calibration_cache.
19543                                           rxcal_coeffs_5G);
19544         }
19545
19546         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19547                 for (coreNum = 0; coreNum <= 1; coreNum++) {
19548
19549                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19550                                          LOFT_FINE_I,
19551                                          txcal_radio_regs[2 * coreNum]);
19552                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19553                                          LOFT_FINE_Q,
19554                                          txcal_radio_regs[2 * coreNum + 1]);
19555
19556                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19557                                          LOFT_COARSE_I,
19558                                          txcal_radio_regs[2 * coreNum + 4]);
19559                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19560                                          LOFT_COARSE_Q,
19561                                          txcal_radio_regs[2 * coreNum + 5]);
19562                 }
19563         }
19564 }
19565
19566 void wlc_phy_antsel_init(wlc_phy_t *ppi, bool lut_init)
19567 {
19568         phy_info_t *pi = (phy_info_t *) ppi;
19569         u16 mask = 0xfc00;
19570         u32 mc = 0;
19571
19572         if (NREV_GE(pi->pubpi.phy_rev, 7))
19573                 return;
19574
19575         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19576                 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
19577
19578                 if (lut_init == false)
19579                         return;
19580
19581                 if (pi->srom_fem2g.antswctrllut == 0) {
19582                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19583                                                  1, 0x02, 16, &v0);
19584                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19585                                                  1, 0x03, 16, &v1);
19586                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19587                                                  1, 0x08, 16, &v2);
19588                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19589                                                  1, 0x0C, 16, &v3);
19590                 } else {
19591                         ASSERT(0);
19592                 }
19593
19594                 if (pi->srom_fem5g.antswctrllut == 0) {
19595                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19596                                                  1, 0x12, 16, &v0);
19597                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19598                                                  1, 0x13, 16, &v1);
19599                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19600                                                  1, 0x18, 16, &v2);
19601                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19602                                                  1, 0x1C, 16, &v3);
19603                 } else {
19604                         ASSERT(0);
19605                 }
19606         } else {
19607
19608                 write_phy_reg(pi, 0xc8, 0x0);
19609                 write_phy_reg(pi, 0xc9, 0x0);
19610
19611                 si_gpiocontrol(pi->sh->sih, mask, mask, GPIO_DRV_PRIORITY);
19612
19613                 mc = R_REG(pi->sh->osh, &pi->regs->maccontrol);
19614                 mc &= ~MCTL_GPOUT_SEL_MASK;
19615                 W_REG(pi->sh->osh, &pi->regs->maccontrol, mc);
19616
19617                 OR_REG(pi->sh->osh, &pi->regs->psm_gpio_oe, mask);
19618
19619                 AND_REG(pi->sh->osh, &pi->regs->psm_gpio_out, ~mask);
19620
19621                 if (lut_init) {
19622                         write_phy_reg(pi, 0xf8, 0x02d8);
19623                         write_phy_reg(pi, 0xf9, 0x0301);
19624                         write_phy_reg(pi, 0xfa, 0x02d8);
19625                         write_phy_reg(pi, 0xfb, 0x0301);
19626                 }
19627         }
19628 }
19629
19630 u16 wlc_phy_classifier_nphy(phy_info_t *pi, u16 mask, u16 val)
19631 {
19632         u16 curr_ctl, new_ctl;
19633         bool suspended = false;
19634
19635         if (D11REV_IS(pi->sh->corerev, 16)) {
19636                 suspended =
19637                     (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC) ?
19638                     false : true;
19639                 if (!suspended)
19640                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
19641         }
19642
19643         curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
19644
19645         new_ctl = (curr_ctl & (~mask)) | (val & mask);
19646
19647         mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
19648
19649         if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
19650                 wlapi_enable_mac(pi->sh->physhim);
19651
19652         return new_ctl;
19653 }
19654
19655 static void wlc_phy_clip_det_nphy(phy_info_t *pi, u8 write, u16 *vals)
19656 {
19657
19658         if (write == 0) {
19659                 vals[0] = read_phy_reg(pi, 0x2c);
19660                 vals[1] = read_phy_reg(pi, 0x42);
19661         } else {
19662                 write_phy_reg(pi, 0x2c, vals[0]);
19663                 write_phy_reg(pi, 0x42, vals[1]);
19664         }
19665 }
19666
19667 void wlc_phy_force_rfseq_nphy(phy_info_t *pi, u8 cmd)
19668 {
19669         u16 trigger_mask, status_mask;
19670         u16 orig_RfseqCoreActv;
19671
19672         switch (cmd) {
19673         case NPHY_RFSEQ_RX2TX:
19674                 trigger_mask = NPHY_RfseqTrigger_rx2tx;
19675                 status_mask = NPHY_RfseqStatus_rx2tx;
19676                 break;
19677         case NPHY_RFSEQ_TX2RX:
19678                 trigger_mask = NPHY_RfseqTrigger_tx2rx;
19679                 status_mask = NPHY_RfseqStatus_tx2rx;
19680                 break;
19681         case NPHY_RFSEQ_RESET2RX:
19682                 trigger_mask = NPHY_RfseqTrigger_reset2rx;
19683                 status_mask = NPHY_RfseqStatus_reset2rx;
19684                 break;
19685         case NPHY_RFSEQ_UPDATEGAINH:
19686                 trigger_mask = NPHY_RfseqTrigger_updategainh;
19687                 status_mask = NPHY_RfseqStatus_updategainh;
19688                 break;
19689         case NPHY_RFSEQ_UPDATEGAINL:
19690                 trigger_mask = NPHY_RfseqTrigger_updategainl;
19691                 status_mask = NPHY_RfseqStatus_updategainl;
19692                 break;
19693         case NPHY_RFSEQ_UPDATEGAINU:
19694                 trigger_mask = NPHY_RfseqTrigger_updategainu;
19695                 status_mask = NPHY_RfseqStatus_updategainu;
19696                 break;
19697         default:
19698                 return;
19699         }
19700
19701         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
19702         or_phy_reg(pi, 0xa1,
19703                    (NPHY_RfseqMode_CoreActv_override |
19704                     NPHY_RfseqMode_Trigger_override));
19705         or_phy_reg(pi, 0xa3, trigger_mask);
19706         SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
19707         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
19708
19709         ASSERT((read_phy_reg(pi, 0xa4) & status_mask) == 0);
19710 }
19711
19712 static void
19713 wlc_phy_set_rfseq_nphy(phy_info_t *pi, u8 cmd, u8 *events, u8 *dlys,
19714                        u8 len)
19715 {
19716         u32 t1_offset, t2_offset;
19717         u8 ctr;
19718         u8 end_event =
19719             NREV_GE(pi->pubpi.phy_rev,
19720                     3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
19721         u8 end_dly = 1;
19722
19723         ASSERT(len <= 16);
19724
19725         if (pi->phyhang_avoid)
19726                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19727
19728         t1_offset = cmd << 4;
19729         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
19730                                  events);
19731         t2_offset = t1_offset + 0x080;
19732         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
19733                                  dlys);
19734
19735         for (ctr = len; ctr < 16; ctr++) {
19736                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
19737                                          t1_offset + ctr, 8, &end_event);
19738                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
19739                                          t2_offset + ctr, 8, &end_dly);
19740         }
19741
19742         if (pi->phyhang_avoid)
19743                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19744 }
19745
19746 static u16 wlc_phy_read_lpf_bw_ctl_nphy(phy_info_t *pi, u16 offset)
19747 {
19748         u16 lpf_bw_ctl_val = 0;
19749         u16 rx2tx_lpf_rc_lut_offset = 0;
19750
19751         if (offset == 0) {
19752                 if (CHSPEC_IS40(pi->radio_chanspec)) {
19753                         rx2tx_lpf_rc_lut_offset = 0x159;
19754                 } else {
19755                         rx2tx_lpf_rc_lut_offset = 0x154;
19756                 }
19757         } else {
19758                 rx2tx_lpf_rc_lut_offset = offset;
19759         }
19760         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
19761                                 (u32) rx2tx_lpf_rc_lut_offset, 16,
19762                                 &lpf_bw_ctl_val);
19763
19764         lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
19765
19766         return lpf_bw_ctl_val;
19767 }
19768
19769 static void
19770 wlc_phy_rfctrl_override_nphy_rev7(phy_info_t *pi, u16 field, u16 value,
19771                                   u8 core_mask, u8 off, u8 override_id)
19772 {
19773         u8 core_num;
19774         u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
19775         u8 val_shift = 0;
19776
19777         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19778                 en_mask = field;
19779                 for (core_num = 0; core_num < 2; core_num++) {
19780                         if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
19781
19782                                 switch (field) {
19783                                 case (0x1 << 2):
19784                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19785                                         val_addr = (core_num == 0) ? 0x7a :
19786                                             0x7d;
19787                                         val_mask = (0x1 << 1);
19788                                         val_shift = 1;
19789                                         break;
19790                                 case (0x1 << 3):
19791                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19792                                         val_addr = (core_num == 0) ? 0x7a :
19793                                             0x7d;
19794                                         val_mask = (0x1 << 2);
19795                                         val_shift = 2;
19796                                         break;
19797                                 case (0x1 << 4):
19798                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19799                                         val_addr = (core_num == 0) ? 0x7a :
19800                                             0x7d;
19801                                         val_mask = (0x1 << 4);
19802                                         val_shift = 4;
19803                                         break;
19804                                 case (0x1 << 5):
19805                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19806                                         val_addr = (core_num == 0) ? 0x7a :
19807                                             0x7d;
19808                                         val_mask = (0x1 << 5);
19809                                         val_shift = 5;
19810                                         break;
19811                                 case (0x1 << 6):
19812                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19813                                         val_addr = (core_num == 0) ? 0x7a :
19814                                             0x7d;
19815                                         val_mask = (0x1 << 6);
19816                                         val_shift = 6;
19817                                         break;
19818                                 case (0x1 << 7):
19819                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19820                                         val_addr = (core_num == 0) ? 0x7a :
19821                                             0x7d;
19822                                         val_mask = (0x1 << 7);
19823                                         val_shift = 7;
19824                                         break;
19825                                 case (0x1 << 10):
19826                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19827                                         val_addr = (core_num == 0) ? 0xf8 :
19828                                             0xfa;
19829                                         val_mask = (0x7 << 4);
19830                                         val_shift = 4;
19831                                         break;
19832                                 case (0x1 << 11):
19833                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19834                                         val_addr = (core_num == 0) ? 0x7b :
19835                                             0x7e;
19836                                         val_mask = (0xffff << 0);
19837                                         val_shift = 0;
19838                                         break;
19839                                 case (0x1 << 12):
19840                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19841                                         val_addr = (core_num == 0) ? 0x7c :
19842                                             0x7f;
19843                                         val_mask = (0xffff << 0);
19844                                         val_shift = 0;
19845                                         break;
19846                                 case (0x3 << 13):
19847                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19848                                         val_addr = (core_num == 0) ? 0x348 :
19849                                             0x349;
19850                                         val_mask = (0xff << 0);
19851                                         val_shift = 0;
19852                                         break;
19853                                 case (0x1 << 13):
19854                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19855                                         val_addr = (core_num == 0) ? 0x348 :
19856                                             0x349;
19857                                         val_mask = (0xf << 0);
19858                                         val_shift = 0;
19859                                         break;
19860                                 default:
19861                                         addr = 0xffff;
19862                                         break;
19863                                 }
19864                         } else if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID1) {
19865
19866                                 switch (field) {
19867                                 case (0x1 << 1):
19868                                         en_addr = (core_num == 0) ? 0x342 :
19869                                             0x343;
19870                                         val_addr = (core_num == 0) ? 0x340 :
19871                                             0x341;
19872                                         val_mask = (0x1 << 1);
19873                                         val_shift = 1;
19874                                         break;
19875                                 case (0x1 << 3):
19876                                         en_addr = (core_num == 0) ? 0x342 :
19877                                             0x343;
19878                                         val_addr = (core_num == 0) ? 0x340 :
19879                                             0x341;
19880                                         val_mask = (0x1 << 3);
19881                                         val_shift = 3;
19882                                         break;
19883                                 case (0x1 << 5):
19884                                         en_addr = (core_num == 0) ? 0x342 :
19885                                             0x343;
19886                                         val_addr = (core_num == 0) ? 0x340 :
19887                                             0x341;
19888                                         val_mask = (0x1 << 5);
19889                                         val_shift = 5;
19890                                         break;
19891                                 case (0x1 << 4):
19892                                         en_addr = (core_num == 0) ? 0x342 :
19893                                             0x343;
19894                                         val_addr = (core_num == 0) ? 0x340 :
19895                                             0x341;
19896                                         val_mask = (0x1 << 4);
19897                                         val_shift = 4;
19898                                         break;
19899                                 case (0x1 << 2):
19900
19901                                         en_addr = (core_num == 0) ? 0x342 :
19902                                             0x343;
19903                                         val_addr = (core_num == 0) ? 0x340 :
19904                                             0x341;
19905                                         val_mask = (0x1 << 2);
19906                                         val_shift = 2;
19907                                         break;
19908                                 case (0x1 << 7):
19909
19910                                         en_addr = (core_num == 0) ? 0x342 :
19911                                             0x343;
19912                                         val_addr = (core_num == 0) ? 0x340 :
19913                                             0x341;
19914                                         val_mask = (0x7 << 8);
19915                                         val_shift = 8;
19916                                         break;
19917                                 case (0x1 << 11):
19918                                         en_addr = (core_num == 0) ? 0x342 :
19919                                             0x343;
19920                                         val_addr = (core_num == 0) ? 0x340 :
19921                                             0x341;
19922                                         val_mask = (0x1 << 14);
19923                                         val_shift = 14;
19924                                         break;
19925                                 case (0x1 << 10):
19926                                         en_addr = (core_num == 0) ? 0x342 :
19927                                             0x343;
19928                                         val_addr = (core_num == 0) ? 0x340 :
19929                                             0x341;
19930                                         val_mask = (0x1 << 13);
19931                                         val_shift = 13;
19932                                         break;
19933                                 case (0x1 << 9):
19934                                         en_addr = (core_num == 0) ? 0x342 :
19935                                             0x343;
19936                                         val_addr = (core_num == 0) ? 0x340 :
19937                                             0x341;
19938                                         val_mask = (0x1 << 12);
19939                                         val_shift = 12;
19940                                         break;
19941                                 case (0x1 << 8):
19942                                         en_addr = (core_num == 0) ? 0x342 :
19943                                             0x343;
19944                                         val_addr = (core_num == 0) ? 0x340 :
19945                                             0x341;
19946                                         val_mask = (0x1 << 11);
19947                                         val_shift = 11;
19948                                         break;
19949                                 case (0x1 << 6):
19950                                         en_addr = (core_num == 0) ? 0x342 :
19951                                             0x343;
19952                                         val_addr = (core_num == 0) ? 0x340 :
19953                                             0x341;
19954                                         val_mask = (0x1 << 6);
19955                                         val_shift = 6;
19956                                         break;
19957                                 case (0x1 << 0):
19958                                         en_addr = (core_num == 0) ? 0x342 :
19959                                             0x343;
19960                                         val_addr = (core_num == 0) ? 0x340 :
19961                                             0x341;
19962                                         val_mask = (0x1 << 0);
19963                                         val_shift = 0;
19964                                         break;
19965                                 default:
19966                                         addr = 0xffff;
19967                                         break;
19968                                 }
19969                         } else if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID2) {
19970
19971                                 switch (field) {
19972                                 case (0x1 << 3):
19973                                         en_addr = (core_num == 0) ? 0x346 :
19974                                             0x347;
19975                                         val_addr = (core_num == 0) ? 0x344 :
19976                                             0x345;
19977                                         val_mask = (0x1 << 3);
19978                                         val_shift = 3;
19979                                         break;
19980                                 case (0x1 << 1):
19981                                         en_addr = (core_num == 0) ? 0x346 :
19982                                             0x347;
19983                                         val_addr = (core_num == 0) ? 0x344 :
19984                                             0x345;
19985                                         val_mask = (0x1 << 1);
19986                                         val_shift = 1;
19987                                         break;
19988                                 case (0x1 << 0):
19989                                         en_addr = (core_num == 0) ? 0x346 :
19990                                             0x347;
19991                                         val_addr = (core_num == 0) ? 0x344 :
19992                                             0x345;
19993                                         val_mask = (0x1 << 0);
19994                                         val_shift = 0;
19995                                         break;
19996                                 case (0x1 << 2):
19997                                         en_addr = (core_num == 0) ? 0x346 :
19998                                             0x347;
19999                                         val_addr = (core_num == 0) ? 0x344 :
20000                                             0x345;
20001                                         val_mask = (0x1 << 2);
20002                                         val_shift = 2;
20003                                         break;
20004                                 case (0x1 << 4):
20005                                         en_addr = (core_num == 0) ? 0x346 :
20006                                             0x347;
20007                                         val_addr = (core_num == 0) ? 0x344 :
20008                                             0x345;
20009                                         val_mask = (0x1 << 4);
20010                                         val_shift = 4;
20011                                         break;
20012                                 default:
20013                                         addr = 0xffff;
20014                                         break;
20015                                 }
20016                         }
20017
20018                         if (off) {
20019                                 and_phy_reg(pi, en_addr, ~en_mask);
20020                                 and_phy_reg(pi, val_addr, ~val_mask);
20021                         } else {
20022
20023                                 if ((core_mask == 0)
20024                                     || (core_mask & (1 << core_num))) {
20025                                         or_phy_reg(pi, en_addr, en_mask);
20026
20027                                         if (addr != 0xffff) {
20028                                                 mod_phy_reg(pi, val_addr,
20029                                                             val_mask,
20030                                                             (value <<
20031                                                              val_shift));
20032                                         }
20033                                 }
20034                         }
20035                 }
20036         }
20037 }
20038
20039 static void
20040 wlc_phy_rfctrl_override_nphy(phy_info_t *pi, u16 field, u16 value,
20041                              u8 core_mask, u8 off)
20042 {
20043         u8 core_num;
20044         u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
20045             0, val_mask = 0;
20046         u8 shift = 0, val_shift = 0;
20047
20048         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
20049
20050                 en_mask = field;
20051                 for (core_num = 0; core_num < 2; core_num++) {
20052
20053                         switch (field) {
20054                         case (0x1 << 1):
20055                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20056                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20057                                 val_mask = (0x1 << 0);
20058                                 val_shift = 0;
20059                                 break;
20060                         case (0x1 << 2):
20061                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20062                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20063                                 val_mask = (0x1 << 1);
20064                                 val_shift = 1;
20065                                 break;
20066                         case (0x1 << 3):
20067                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20068                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20069                                 val_mask = (0x1 << 2);
20070                                 val_shift = 2;
20071                                 break;
20072                         case (0x1 << 4):
20073                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20074                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20075                                 val_mask = (0x1 << 4);
20076                                 val_shift = 4;
20077                                 break;
20078                         case (0x1 << 5):
20079                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20080                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20081                                 val_mask = (0x1 << 5);
20082                                 val_shift = 5;
20083                                 break;
20084                         case (0x1 << 6):
20085                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20086                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20087                                 val_mask = (0x1 << 6);
20088                                 val_shift = 6;
20089                                 break;
20090                         case (0x1 << 7):
20091                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20092                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20093                                 val_mask = (0x1 << 7);
20094                                 val_shift = 7;
20095                                 break;
20096                         case (0x1 << 8):
20097                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20098                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20099                                 val_mask = (0x7 << 8);
20100                                 val_shift = 8;
20101                                 break;
20102                         case (0x1 << 11):
20103                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20104                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20105                                 val_mask = (0x7 << 13);
20106                                 val_shift = 13;
20107                                 break;
20108
20109                         case (0x1 << 9):
20110                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20111                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
20112                                 val_mask = (0x7 << 0);
20113                                 val_shift = 0;
20114                                 break;
20115
20116                         case (0x1 << 10):
20117                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20118                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
20119                                 val_mask = (0x7 << 4);
20120                                 val_shift = 4;
20121                                 break;
20122
20123                         case (0x1 << 12):
20124                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20125                                 val_addr = (core_num == 0) ? 0x7b : 0x7e;
20126                                 val_mask = (0xffff << 0);
20127                                 val_shift = 0;
20128                                 break;
20129                         case (0x1 << 13):
20130                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20131                                 val_addr = (core_num == 0) ? 0x7c : 0x7f;
20132                                 val_mask = (0xffff << 0);
20133                                 val_shift = 0;
20134                                 break;
20135                         case (0x1 << 14):
20136                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20137                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
20138                                 val_mask = (0x3 << 6);
20139                                 val_shift = 6;
20140                                 break;
20141                         case (0x1 << 0):
20142                                 en_addr = (core_num == 0) ? 0xe5 : 0xe6;
20143                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
20144                                 val_mask = (0x1 << 15);
20145                                 val_shift = 15;
20146                                 break;
20147                         default:
20148                                 addr = 0xffff;
20149                                 break;
20150                         }
20151
20152                         if (off) {
20153                                 and_phy_reg(pi, en_addr, ~en_mask);
20154                                 and_phy_reg(pi, val_addr, ~val_mask);
20155                         } else {
20156
20157                                 if ((core_mask == 0)
20158                                     || (core_mask & (1 << core_num))) {
20159                                         or_phy_reg(pi, en_addr, en_mask);
20160
20161                                         if (addr != 0xffff) {
20162                                                 mod_phy_reg(pi, val_addr,
20163                                                             val_mask,
20164                                                             (value <<
20165                                                              val_shift));
20166                                         }
20167                                 }
20168                         }
20169                 }
20170         } else {
20171
20172                 if (off) {
20173                         and_phy_reg(pi, 0xec, ~field);
20174                         value = 0x0;
20175                 } else {
20176                         or_phy_reg(pi, 0xec, field);
20177                 }
20178
20179                 for (core_num = 0; core_num < 2; core_num++) {
20180
20181                         switch (field) {
20182                         case (0x1 << 1):
20183                         case (0x1 << 9):
20184                         case (0x1 << 12):
20185                         case (0x1 << 13):
20186                         case (0x1 << 14):
20187                                 addr = 0x78;
20188
20189                                 core_mask = 0x1;
20190                                 break;
20191                         case (0x1 << 2):
20192                         case (0x1 << 3):
20193                         case (0x1 << 4):
20194                         case (0x1 << 5):
20195                         case (0x1 << 6):
20196                         case (0x1 << 7):
20197                         case (0x1 << 8):
20198                                 addr = (core_num == 0) ? 0x7a : 0x7d;
20199                                 break;
20200                         case (0x1 << 10):
20201                                 addr = (core_num == 0) ? 0x7b : 0x7e;
20202                                 break;
20203                         case (0x1 << 11):
20204                                 addr = (core_num == 0) ? 0x7c : 0x7f;
20205                                 break;
20206                         default:
20207                                 addr = 0xffff;
20208                         }
20209
20210                         switch (field) {
20211                         case (0x1 << 1):
20212                                 mask = (0x7 << 3);
20213                                 shift = 3;
20214                                 break;
20215                         case (0x1 << 9):
20216                                 mask = (0x1 << 2);
20217                                 shift = 2;
20218                                 break;
20219                         case (0x1 << 12):
20220                                 mask = (0x1 << 8);
20221                                 shift = 8;
20222                                 break;
20223                         case (0x1 << 13):
20224                                 mask = (0x1 << 9);
20225                                 shift = 9;
20226                                 break;
20227                         case (0x1 << 14):
20228                                 mask = (0xf << 12);
20229                                 shift = 12;
20230                                 break;
20231                         case (0x1 << 2):
20232                                 mask = (0x1 << 0);
20233                                 shift = 0;
20234                                 break;
20235                         case (0x1 << 3):
20236                                 mask = (0x1 << 1);
20237                                 shift = 1;
20238                                 break;
20239                         case (0x1 << 4):
20240                                 mask = (0x1 << 2);
20241                                 shift = 2;
20242                                 break;
20243                         case (0x1 << 5):
20244                                 mask = (0x3 << 4);
20245                                 shift = 4;
20246                                 break;
20247                         case (0x1 << 6):
20248                                 mask = (0x3 << 6);
20249                                 shift = 6;
20250                                 break;
20251                         case (0x1 << 7):
20252                                 mask = (0x1 << 8);
20253                                 shift = 8;
20254                                 break;
20255                         case (0x1 << 8):
20256                                 mask = (0x1 << 9);
20257                                 shift = 9;
20258                                 break;
20259                         case (0x1 << 10):
20260                                 mask = 0x1fff;
20261                                 shift = 0x0;
20262                                 break;
20263                         case (0x1 << 11):
20264                                 mask = 0x1fff;
20265                                 shift = 0x0;
20266                                 break;
20267                         default:
20268                                 mask = 0x0;
20269                                 shift = 0x0;
20270                                 break;
20271                         }
20272
20273                         if ((addr != 0xffff) && (core_mask & (1 << core_num))) {
20274                                 mod_phy_reg(pi, addr, mask, (value << shift));
20275                         }
20276                 }
20277
20278                 or_phy_reg(pi, 0xec, (0x1 << 0));
20279                 or_phy_reg(pi, 0x78, (0x1 << 0));
20280                 udelay(1);
20281                 and_phy_reg(pi, 0xec, ~(0x1 << 0));
20282         }
20283 }
20284
20285 static void
20286 wlc_phy_rfctrl_override_1tomany_nphy(phy_info_t *pi, u16 cmd, u16 value,
20287                                      u8 core_mask, u8 off)
20288 {
20289         u16 rfmxgain = 0, lpfgain = 0;
20290         u16 tgain = 0;
20291
20292         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20293
20294                 switch (cmd) {
20295                 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
20296                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
20297                                                           value, core_mask, off,
20298                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20299                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), value,
20300                                                           core_mask, off,
20301                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20302                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), value,
20303                                                           core_mask, off,
20304                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20305                         break;
20306                 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
20307                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
20308                                                           value, core_mask, off,
20309                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20310                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), value,
20311                                                           core_mask, off,
20312                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20313                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), value,
20314                                                           core_mask, off,
20315                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20316                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), value,
20317                                                           core_mask, off,
20318                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
20319                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0,
20320                                                           core_mask, off,
20321                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20322                         break;
20323                 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
20324                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
20325                                                           value, core_mask, off,
20326                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20327                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), value,
20328                                                           core_mask, off,
20329                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20330                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), value,
20331                                                           core_mask, off,
20332                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
20333                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), value,
20334                                                           core_mask, off,
20335                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
20336                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1,
20337                                                           core_mask, off,
20338                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20339                         break;
20340                 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
20341                         rfmxgain = value & 0x000ff;
20342                         lpfgain = value & 0x0ff00;
20343                         lpfgain = lpfgain >> 8;
20344
20345                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
20346                                                           rfmxgain, core_mask,
20347                                                           off,
20348                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20349                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x3 << 13),
20350                                                           lpfgain, core_mask,
20351                                                           off,
20352                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20353                         break;
20354                 case NPHY_REV7_RfctrlOverride_cmd_txgain:
20355                         tgain = value & 0x7fff;
20356                         lpfgain = value & 0x8000;
20357                         lpfgain = lpfgain >> 14;
20358
20359                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
20360                                                           tgain, core_mask, off,
20361                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20362                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 13),
20363                                                           lpfgain, core_mask,
20364                                                           off,
20365                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20366                         break;
20367                 }
20368         }
20369 }
20370
20371 static void
20372 wlc_phy_scale_offset_rssi_nphy(phy_info_t *pi, u16 scale, s8 offset,
20373                                u8 coresel, u8 rail, u8 rssi_type)
20374 {
20375         u16 valuetostuff;
20376
20377         offset = (offset > NPHY_RSSICAL_MAXREAD) ?
20378             NPHY_RSSICAL_MAXREAD : offset;
20379         offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
20380             -NPHY_RSSICAL_MAXREAD - 1 : offset;
20381
20382         valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
20383
20384         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20385              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20386             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20387                 write_phy_reg(pi, 0x1a6, valuetostuff);
20388         }
20389         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20390              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20391             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20392                 write_phy_reg(pi, 0x1ac, valuetostuff);
20393         }
20394         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20395              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20396             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20397                 write_phy_reg(pi, 0x1b2, valuetostuff);
20398         }
20399         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20400              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20401             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20402                 write_phy_reg(pi, 0x1b8, valuetostuff);
20403         }
20404
20405         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20406              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20407             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20408                 write_phy_reg(pi, 0x1a4, valuetostuff);
20409         }
20410         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20411              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20412             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20413                 write_phy_reg(pi, 0x1aa, valuetostuff);
20414         }
20415         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20416              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20417             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20418                 write_phy_reg(pi, 0x1b0, valuetostuff);
20419         }
20420         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20421              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20422             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20423                 write_phy_reg(pi, 0x1b6, valuetostuff);
20424         }
20425
20426         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20427              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20428             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20429                 write_phy_reg(pi, 0x1a5, valuetostuff);
20430         }
20431         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20432              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20433             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20434                 write_phy_reg(pi, 0x1ab, valuetostuff);
20435         }
20436         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20437              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20438             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20439                 write_phy_reg(pi, 0x1b1, valuetostuff);
20440         }
20441         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20442              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20443             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20444                 write_phy_reg(pi, 0x1b7, valuetostuff);
20445         }
20446
20447         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20448              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20449             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20450                 write_phy_reg(pi, 0x1a7, valuetostuff);
20451         }
20452         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20453              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20454             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20455                 write_phy_reg(pi, 0x1ad, valuetostuff);
20456         }
20457         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20458              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20459             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20460                 write_phy_reg(pi, 0x1b3, valuetostuff);
20461         }
20462         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20463              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20464             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20465                 write_phy_reg(pi, 0x1b9, valuetostuff);
20466         }
20467
20468         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20469              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20470             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20471                 write_phy_reg(pi, 0x1a8, valuetostuff);
20472         }
20473         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20474              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20475             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20476                 write_phy_reg(pi, 0x1ae, valuetostuff);
20477         }
20478         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20479              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20480             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20481                 write_phy_reg(pi, 0x1b4, valuetostuff);
20482         }
20483         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20484              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20485             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20486                 write_phy_reg(pi, 0x1ba, valuetostuff);
20487         }
20488
20489         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20490              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20491             (rssi_type == NPHY_RSSI_SEL_TSSI_2G)) {
20492                 write_phy_reg(pi, 0x1a9, valuetostuff);
20493         }
20494         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20495              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20496             (rssi_type == NPHY_RSSI_SEL_TSSI_2G)) {
20497                 write_phy_reg(pi, 0x1b5, valuetostuff);
20498         }
20499
20500         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20501              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20502             (rssi_type == NPHY_RSSI_SEL_TSSI_5G)) {
20503                 write_phy_reg(pi, 0x1af, valuetostuff);
20504         }
20505         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20506              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20507             (rssi_type == NPHY_RSSI_SEL_TSSI_5G)) {
20508                 write_phy_reg(pi, 0x1bb, valuetostuff);
20509         }
20510 }
20511
20512 void wlc_phy_rssisel_nphy(phy_info_t *pi, u8 core_code, u8 rssi_type)
20513 {
20514         u16 mask, val;
20515         u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
20516             startseq;
20517         u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
20518             rfctrlovr_trigger_val;
20519         u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
20520         u16 rfctrlcmd_val, rfctrlovr_val;
20521         u8 core;
20522
20523         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20524                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
20525                         mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
20526                         mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
20527
20528                         mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
20529                         mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
20530
20531                         mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
20532                         mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
20533
20534                         mask = (0x1 << 2) |
20535                             (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
20536                         mod_phy_reg(pi, 0xf9, mask, 0);
20537                         mod_phy_reg(pi, 0xfb, mask, 0);
20538
20539                 } else {
20540                         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20541                                 if (core_code == RADIO_MIMO_CORESEL_CORE1
20542                                     && core == PHY_CORE_1)
20543                                         continue;
20544                                 else if (core_code == RADIO_MIMO_CORESEL_CORE2
20545                                          && core == PHY_CORE_0)
20546                                         continue;
20547
20548                                 mod_phy_reg(pi, (core == PHY_CORE_0) ?
20549                                             0x8f : 0xa5, (0x1 << 9), 1 << 9);
20550
20551                                 if (rssi_type == NPHY_RSSI_SEL_W1 ||
20552                                     rssi_type == NPHY_RSSI_SEL_W2 ||
20553                                     rssi_type == NPHY_RSSI_SEL_NB) {
20554
20555                                         mod_phy_reg(pi,
20556                                                     (core ==
20557                                                      PHY_CORE_0) ? 0xa6 : 0xa7,
20558                                                     (0x3 << 8), 0);
20559
20560                                         mask = (0x1 << 2) |
20561                                             (0x1 << 3) |
20562                                             (0x1 << 4) | (0x1 << 5);
20563                                         mod_phy_reg(pi,
20564                                                     (core ==
20565                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
20566                                                     mask, 0);
20567
20568                                         if (rssi_type == NPHY_RSSI_SEL_W1) {
20569                                                 if (CHSPEC_IS5G
20570                                                     (pi->radio_chanspec)) {
20571                                                         mask = (0x1 << 2);
20572                                                         val = 1 << 2;
20573                                                 } else {
20574                                                         mask = (0x1 << 3);
20575                                                         val = 1 << 3;
20576                                                 }
20577                                         } else if (rssi_type ==
20578                                                    NPHY_RSSI_SEL_W2) {
20579                                                 mask = (0x1 << 4);
20580                                                 val = 1 << 4;
20581                                         } else {
20582                                                 mask = (0x1 << 5);
20583                                                 val = 1 << 5;
20584                                         }
20585                                         mod_phy_reg(pi,
20586                                                     (core ==
20587                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
20588                                                     mask, val);
20589
20590                                         mask = (0x1 << 5);
20591                                         val = 1 << 5;
20592                                         mod_phy_reg(pi, (core == PHY_CORE_0) ?
20593                                                     0xe5 : 0xe6, mask, val);
20594                                 } else {
20595                                         if (rssi_type == NPHY_RSSI_SEL_TBD) {
20596
20597                                                 mask = (0x3 << 8);
20598                                                 val = 1 << 8;
20599                                                 mod_phy_reg(pi,
20600                                                             (core ==
20601                                                              PHY_CORE_0) ? 0xa6
20602                                                             : 0xa7, mask, val);
20603                                                 mask = (0x3 << 10);
20604                                                 val = 1 << 10;
20605                                                 mod_phy_reg(pi,
20606                                                             (core ==
20607                                                              PHY_CORE_0) ? 0xa6
20608                                                             : 0xa7, mask, val);
20609                                         } else if (rssi_type ==
20610                                                    NPHY_RSSI_SEL_IQ) {
20611
20612                                                 mask = (0x3 << 8);
20613                                                 val = 2 << 8;
20614                                                 mod_phy_reg(pi,
20615                                                             (core ==
20616                                                              PHY_CORE_0) ? 0xa6
20617                                                             : 0xa7, mask, val);
20618                                                 mask = (0x3 << 10);
20619                                                 val = 2 << 10;
20620                                                 mod_phy_reg(pi,
20621                                                             (core ==
20622                                                              PHY_CORE_0) ? 0xa6
20623                                                             : 0xa7, mask, val);
20624                                         } else {
20625
20626                                                 mask = (0x3 << 8);
20627                                                 val = 3 << 8;
20628                                                 mod_phy_reg(pi,
20629                                                             (core ==
20630                                                              PHY_CORE_0) ? 0xa6
20631                                                             : 0xa7, mask, val);
20632                                                 mask = (0x3 << 10);
20633                                                 val = 3 << 10;
20634                                                 mod_phy_reg(pi,
20635                                                             (core ==
20636                                                              PHY_CORE_0) ? 0xa6
20637                                                             : 0xa7, mask, val);
20638
20639                                                 if (PHY_IPA(pi)) {
20640                                                         if (NREV_GE
20641                                                             (pi->pubpi.phy_rev,
20642                                                              7)) {
20643
20644                                                                 write_radio_reg
20645                                                                     (pi,
20646                                                                      ((core ==
20647                                                                        PHY_CORE_0)
20648                                                                       ?
20649                                                                       RADIO_2057_TX0_TX_SSI_MUX
20650                                                                       :
20651                                                                       RADIO_2057_TX1_TX_SSI_MUX),
20652                                                                      (CHSPEC_IS5G
20653                                                                       (pi->
20654                                                                        radio_chanspec)
20655                                                                       ? 0xc :
20656                                                                       0xe));
20657                                                         } else {
20658                                                                 write_radio_reg
20659                                                                     (pi,
20660                                                                      RADIO_2056_TX_TX_SSI_MUX
20661                                                                      |
20662                                                                      ((core ==
20663                                                                        PHY_CORE_0)
20664                                                                       ?
20665                                                                       RADIO_2056_TX0
20666                                                                       :
20667                                                                       RADIO_2056_TX1),
20668                                                                      (CHSPEC_IS5G
20669                                                                       (pi->
20670                                                                        radio_chanspec)
20671                                                                       ? 0xc :
20672                                                                       0xe));
20673                                                         }
20674                                                 } else {
20675
20676                                                         if (NREV_GE
20677                                                             (pi->pubpi.phy_rev,
20678                                                              7)) {
20679                                                                 write_radio_reg
20680                                                                     (pi,
20681                                                                      ((core ==
20682                                                                        PHY_CORE_0)
20683                                                                       ?
20684                                                                       RADIO_2057_TX0_TX_SSI_MUX
20685                                                                       :
20686                                                                       RADIO_2057_TX1_TX_SSI_MUX),
20687                                                                      0x11);
20688
20689                                                                 if (pi->pubpi.
20690                                                                     radioid ==
20691                                                                     BCM2057_ID)
20692                                                                         write_radio_reg
20693                                                                             (pi,
20694                                                                              RADIO_2057_IQTEST_SEL_PU,
20695                                                                              0x1);
20696
20697                                                         } else {
20698                                                                 write_radio_reg
20699                                                                     (pi,
20700                                                                      RADIO_2056_TX_TX_SSI_MUX
20701                                                                      |
20702                                                                      ((core ==
20703                                                                        PHY_CORE_0)
20704                                                                       ?
20705                                                                       RADIO_2056_TX0
20706                                                                       :
20707                                                                       RADIO_2056_TX1),
20708                                                                      0x11);
20709                                                         }
20710                                                 }
20711
20712                                                 afectrlovr_rssi_val = 1 << 9;
20713                                                 mod_phy_reg(pi,
20714                                                             (core ==
20715                                                              PHY_CORE_0) ? 0x8f
20716                                                             : 0xa5, (0x1 << 9),
20717                                                             afectrlovr_rssi_val);
20718                                         }
20719                                 }
20720                         }
20721                 }
20722         } else {
20723
20724                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
20725                     (rssi_type == NPHY_RSSI_SEL_W2) ||
20726                     (rssi_type == NPHY_RSSI_SEL_NB)) {
20727
20728                         val = 0x0;
20729                 } else if (rssi_type == NPHY_RSSI_SEL_TBD) {
20730
20731                         val = 0x1;
20732                 } else if (rssi_type == NPHY_RSSI_SEL_IQ) {
20733
20734                         val = 0x2;
20735                 } else {
20736
20737                         val = 0x3;
20738                 }
20739                 mask = ((0x3 << 12) | (0x3 << 14));
20740                 val = (val << 12) | (val << 14);
20741                 mod_phy_reg(pi, 0xa6, mask, val);
20742                 mod_phy_reg(pi, 0xa7, mask, val);
20743
20744                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
20745                     (rssi_type == NPHY_RSSI_SEL_W2) ||
20746                     (rssi_type == NPHY_RSSI_SEL_NB)) {
20747                         if (rssi_type == NPHY_RSSI_SEL_W1) {
20748                                 val = 0x1;
20749                         }
20750                         if (rssi_type == NPHY_RSSI_SEL_W2) {
20751                                 val = 0x2;
20752                         }
20753                         if (rssi_type == NPHY_RSSI_SEL_NB) {
20754                                 val = 0x3;
20755                         }
20756                         mask = (0x3 << 4);
20757                         val = (val << 4);
20758                         mod_phy_reg(pi, 0x7a, mask, val);
20759                         mod_phy_reg(pi, 0x7d, mask, val);
20760                 }
20761
20762                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
20763                         afectrlovr_rssi_val = 0;
20764                         rfctrlcmd_rxen_val = 0;
20765                         rfctrlcmd_coresel_val = 0;
20766                         rfctrlovr_rssi_val = 0;
20767                         rfctrlovr_rxen_val = 0;
20768                         rfctrlovr_coresel_val = 0;
20769                         rfctrlovr_trigger_val = 0;
20770                         startseq = 0;
20771                 } else {
20772                         afectrlovr_rssi_val = 1;
20773                         rfctrlcmd_rxen_val = 1;
20774                         rfctrlcmd_coresel_val = core_code;
20775                         rfctrlovr_rssi_val = 1;
20776                         rfctrlovr_rxen_val = 1;
20777                         rfctrlovr_coresel_val = 1;
20778                         rfctrlovr_trigger_val = 1;
20779                         startseq = 1;
20780                 }
20781
20782                 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
20783                 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
20784                                        12) | (afectrlovr_rssi_val << 13);
20785                 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
20786                             afectrlovr_rssi_val);
20787
20788                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
20789                     (rssi_type == NPHY_RSSI_SEL_W2) ||
20790                     (rssi_type == NPHY_RSSI_SEL_NB)) {
20791                         rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
20792                         rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
20793                             (rfctrlcmd_coresel_val << 3);
20794
20795                         rfctrlovr_mask = ((0x1 << 5) |
20796                                           (0x1 << 12) |
20797                                           (0x1 << 1) | (0x1 << 0));
20798                         rfctrlovr_val = (rfctrlovr_rssi_val <<
20799                                          5) |
20800                             (rfctrlovr_rxen_val << 12) |
20801                             (rfctrlovr_coresel_val << 1) |
20802                             (rfctrlovr_trigger_val << 0);
20803
20804                         mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
20805                         mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
20806
20807                         mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
20808                         udelay(20);
20809
20810                         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
20811                 }
20812         }
20813 }
20814
20815 int
20816 wlc_phy_poll_rssi_nphy(phy_info_t *pi, u8 rssi_type, s32 *rssi_buf,
20817                        u8 nsamps)
20818 {
20819         s16 rssi0, rssi1;
20820         u16 afectrlCore1_save = 0;
20821         u16 afectrlCore2_save = 0;
20822         u16 afectrlOverride1_save = 0;
20823         u16 afectrlOverride2_save = 0;
20824         u16 rfctrlOverrideAux0_save = 0;
20825         u16 rfctrlOverrideAux1_save = 0;
20826         u16 rfctrlMiscReg1_save = 0;
20827         u16 rfctrlMiscReg2_save = 0;
20828         u16 rfctrlcmd_save = 0;
20829         u16 rfctrloverride_save = 0;
20830         u16 rfctrlrssiothers1_save = 0;
20831         u16 rfctrlrssiothers2_save = 0;
20832         s8 tmp_buf[4];
20833         u8 ctr = 0, samp = 0;
20834         s32 rssi_out_val;
20835         u16 gpiosel_orig;
20836
20837         afectrlCore1_save = read_phy_reg(pi, 0xa6);
20838         afectrlCore2_save = read_phy_reg(pi, 0xa7);
20839         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20840                 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
20841                 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
20842                 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
20843                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
20844                 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
20845                 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
20846         } else {
20847                 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
20848                 rfctrlcmd_save = read_phy_reg(pi, 0x78);
20849                 rfctrloverride_save = read_phy_reg(pi, 0xec);
20850                 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
20851                 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
20852         }
20853
20854         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
20855
20856         gpiosel_orig = read_phy_reg(pi, 0xca);
20857         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
20858                 write_phy_reg(pi, 0xca, 5);
20859         }
20860
20861         for (ctr = 0; ctr < 4; ctr++) {
20862                 rssi_buf[ctr] = 0;
20863         }
20864
20865         for (samp = 0; samp < nsamps; samp++) {
20866                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
20867                         rssi0 = read_phy_reg(pi, 0x1c9);
20868                         rssi1 = read_phy_reg(pi, 0x1ca);
20869                 } else {
20870                         rssi0 = read_phy_reg(pi, 0x219);
20871                         rssi1 = read_phy_reg(pi, 0x21a);
20872                 }
20873
20874                 ctr = 0;
20875                 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
20876                 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
20877                 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
20878                 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
20879
20880                 for (ctr = 0; ctr < 4; ctr++) {
20881                         rssi_buf[ctr] += tmp_buf[ctr];
20882                 }
20883
20884         }
20885
20886         rssi_out_val = rssi_buf[3] & 0xff;
20887         rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
20888         rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
20889         rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
20890
20891         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
20892                 write_phy_reg(pi, 0xca, gpiosel_orig);
20893         }
20894
20895         write_phy_reg(pi, 0xa6, afectrlCore1_save);
20896         write_phy_reg(pi, 0xa7, afectrlCore2_save);
20897         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20898                 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
20899                 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
20900                 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
20901                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
20902                 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
20903                 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
20904         } else {
20905                 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
20906                 write_phy_reg(pi, 0x78, rfctrlcmd_save);
20907                 write_phy_reg(pi, 0xec, rfctrloverride_save);
20908                 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
20909                 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
20910         }
20911
20912         return rssi_out_val;
20913 }
20914
20915 s16 wlc_phy_tempsense_nphy(phy_info_t *pi)
20916 {
20917         u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
20918         u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
20919         u16 pwrdet_rxtx_core1_save;
20920         u16 pwrdet_rxtx_core2_save;
20921         u16 afectrlCore1_save;
20922         u16 afectrlCore2_save;
20923         u16 afectrlOverride_save;
20924         u16 afectrlOverride2_save;
20925         u16 pd_pll_ts_save;
20926         u16 gpioSel_save;
20927         s32 radio_temp[4];
20928         s32 radio_temp2[4];
20929         u16 syn_tempprocsense_save;
20930         s16 offset = 0;
20931
20932         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20933                 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
20934                 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
20935                 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
20936                 s32 auxADC_Vl;
20937                 u16 RfctrlOverride5_save, RfctrlOverride6_save;
20938                 u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
20939                 u16 RSSIMultCoef0QPowerDet_save;
20940                 u16 tempsense_Rcal;
20941
20942                 syn_tempprocsense_save =
20943                     read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
20944
20945                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
20946                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
20947                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
20948                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
20949                 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
20950                 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
20951                 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
20952                 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
20953                 RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
20954
20955                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
20956                                         &auxADC_Vmid_save);
20957                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
20958                                         &auxADC_Av_save);
20959                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
20960                                         &auxADC_rssi_ctrlL_save);
20961                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
20962                                         &auxADC_rssi_ctrlH_save);
20963
20964                 write_phy_reg(pi, 0x1ae, 0x0);
20965
20966                 auxADC_rssi_ctrlL = 0x0;
20967                 auxADC_rssi_ctrlH = 0x20;
20968                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
20969                                          &auxADC_rssi_ctrlL);
20970                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
20971                                          &auxADC_rssi_ctrlH);
20972
20973                 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
20974
20975                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
20976                                 tempsense_Rcal | 0x01);
20977
20978                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
20979                                                   1, 0, 0,
20980                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
20981                 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
20982                 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
20983                 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
20984                 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
20985
20986                 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
20987                 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
20988                 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
20989                 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
20990                 udelay(5);
20991                 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
20992                 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
20993                 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
20994                 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
20995                 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
20996                 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
20997                 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
20998                 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
20999                 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
21000                 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
21001
21002                 auxADC_Vmid = 0xA3;
21003                 auxADC_Av = 0x0;
21004                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21005                                          &auxADC_Vmid);
21006                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21007                                          &auxADC_Av);
21008
21009                 udelay(3);
21010
21011                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21012                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
21013                                 tempsense_Rcal | 0x03);
21014
21015                 udelay(5);
21016                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21017
21018                 auxADC_Av = 0x7;
21019                 if (radio_temp[1] + radio_temp2[1] < -30) {
21020                         auxADC_Vmid = 0x45;
21021                         auxADC_Vl = 263;
21022                 } else if (radio_temp[1] + radio_temp2[1] < -9) {
21023                         auxADC_Vmid = 0x200;
21024                         auxADC_Vl = 467;
21025                 } else if (radio_temp[1] + radio_temp2[1] < 11) {
21026                         auxADC_Vmid = 0x266;
21027                         auxADC_Vl = 634;
21028                 } else {
21029                         auxADC_Vmid = 0x2D5;
21030                         auxADC_Vl = 816;
21031                 }
21032
21033                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21034                                          &auxADC_Vmid);
21035                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21036                                          &auxADC_Av);
21037
21038                 udelay(3);
21039
21040                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21041                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
21042                                 tempsense_Rcal | 0x01);
21043
21044                 udelay(5);
21045                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21046
21047                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
21048                                 syn_tempprocsense_save);
21049
21050                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21051                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21052                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
21053                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21054                 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
21055                 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
21056                 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
21057                 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
21058                 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
21059
21060                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21061                                          &auxADC_Vmid_save);
21062                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21063                                          &auxADC_Av_save);
21064                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
21065                                          &auxADC_rssi_ctrlL_save);
21066                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
21067                                          &auxADC_rssi_ctrlH_save);
21068
21069                 if (pi->sh->chip == BCM5357_CHIP_ID) {
21070                         radio_temp[0] = (193 * (radio_temp[1] + radio_temp2[1])
21071                                          + 88 * (auxADC_Vl) - 27111 +
21072                                          128) / 256;
21073                 } else if (pi->sh->chip == BCM43236_CHIP_ID) {
21074                         radio_temp[0] = (198 * (radio_temp[1] + radio_temp2[1])
21075                                          + 91 * (auxADC_Vl) - 27243 +
21076                                          128) / 256;
21077                 } else {
21078                         radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
21079                                          + 82 * (auxADC_Vl) - 28861 +
21080                                          128) / 256;
21081                 }
21082
21083                 offset = (s16) pi->phy_tempsense_offset;
21084
21085         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21086                 syn_tempprocsense_save =
21087                     read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
21088
21089                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21090                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21091                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
21092                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21093                 gpioSel_save = read_phy_reg(pi, 0xca);
21094
21095                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
21096
21097                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21098                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21099                 } else {
21100                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
21101                 }
21102
21103                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21104                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21105                         write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
21106                 } else {
21107                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
21108                 }
21109
21110                 radio_temp[0] =
21111                     (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
21112
21113                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
21114                                 syn_tempprocsense_save);
21115
21116                 write_phy_reg(pi, 0xca, gpioSel_save);
21117                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21118                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21119                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
21120                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21121
21122                 offset = (s16) pi->phy_tempsense_offset;
21123         } else {
21124
21125                 pwrdet_rxtx_core1_save =
21126                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
21127                 pwrdet_rxtx_core2_save =
21128                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
21129                 core1_txrf_iqcal1_save =
21130                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
21131                 core1_txrf_iqcal2_save =
21132                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
21133                 core2_txrf_iqcal1_save =
21134                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
21135                 core2_txrf_iqcal2_save =
21136                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
21137                 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
21138
21139                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21140                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21141                 afectrlOverride_save = read_phy_reg(pi, 0xa5);
21142                 gpioSel_save = read_phy_reg(pi, 0xca);
21143
21144                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
21145                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
21146                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
21147                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
21148                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
21149                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
21150                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
21151
21152                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21153                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
21154
21155                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21156                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
21157
21158                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21159                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
21160
21161                 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
21162                 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
21163                 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
21164                 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
21165
21166                 radio_temp[0] =
21167                     (radio_temp[0] + radio_temp[1] + radio_temp[2] +
21168                      radio_temp[3]);
21169
21170                 radio_temp[0] =
21171                     (radio_temp[0] + (8 * 32)) * (950 - 350) / 63 + (350 * 8);
21172
21173                 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
21174
21175                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
21176                                 pwrdet_rxtx_core1_save);
21177                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
21178                                 pwrdet_rxtx_core2_save);
21179                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
21180                                 core1_txrf_iqcal1_save);
21181                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
21182                                 core2_txrf_iqcal1_save);
21183                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
21184                                 core1_txrf_iqcal2_save);
21185                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
21186                                 core2_txrf_iqcal2_save);
21187                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
21188
21189                 write_phy_reg(pi, 0xca, gpioSel_save);
21190                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21191                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21192                 write_phy_reg(pi, 0xa5, afectrlOverride_save);
21193         }
21194
21195         return (s16) radio_temp[0] + offset;
21196 }
21197
21198 static void
21199 wlc_phy_set_rssi_2055_vcm(phy_info_t *pi, u8 rssi_type, u8 *vcm_buf)
21200 {
21201         u8 core;
21202
21203         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21204                 if (rssi_type == NPHY_RSSI_SEL_NB) {
21205                         if (core == PHY_CORE_0) {
21206                                 mod_radio_reg(pi,
21207                                               RADIO_2055_CORE1_B0_NBRSSI_VCM,
21208                                               RADIO_2055_NBRSSI_VCM_I_MASK,
21209                                               vcm_buf[2 *
21210                                                       core] <<
21211                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
21212                                 mod_radio_reg(pi,
21213                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
21214                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
21215                                               vcm_buf[2 * core +
21216                                                       1] <<
21217                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
21218                         } else {
21219                                 mod_radio_reg(pi,
21220                                               RADIO_2055_CORE2_B0_NBRSSI_VCM,
21221                                               RADIO_2055_NBRSSI_VCM_I_MASK,
21222                                               vcm_buf[2 *
21223                                                       core] <<
21224                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
21225                                 mod_radio_reg(pi,
21226                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
21227                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
21228                                               vcm_buf[2 * core +
21229                                                       1] <<
21230                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
21231                         }
21232                 } else {
21233
21234                         if (core == PHY_CORE_0) {
21235                                 mod_radio_reg(pi,
21236                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
21237                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
21238                                               vcm_buf[2 *
21239                                                       core] <<
21240                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
21241                         } else {
21242                                 mod_radio_reg(pi,
21243                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
21244                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
21245                                               vcm_buf[2 *
21246                                                       core] <<
21247                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
21248                         }
21249                 }
21250         }
21251 }
21252
21253 void wlc_phy_rssi_cal_nphy(phy_info_t *pi)
21254 {
21255         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21256
21257                 wlc_phy_rssi_cal_nphy_rev3(pi);
21258         } else {
21259                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
21260                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
21261                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
21262         }
21263 }
21264
21265 static void wlc_phy_rssi_cal_nphy_rev2(phy_info_t *pi, u8 rssi_type)
21266 {
21267         s32 target_code;
21268         u16 classif_state;
21269         u16 clip_state[2];
21270         u16 rssi_ctrl_state[2], pd_state[2];
21271         u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
21272         u16 rfctrlintc_override_val;
21273         u16 clip_off[] = { 0xffff, 0xffff };
21274         u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
21275         u8 vcm, min_vcm, vcm_tmp[4];
21276         u8 vcm_final[4] = { 0, 0, 0, 0 };
21277         u8 result_idx, ctr;
21278         s32 poll_results[4][4] = {
21279                 {0, 0, 0, 0},
21280                 {0, 0, 0, 0},
21281                 {0, 0, 0, 0},
21282                 {0, 0, 0, 0}
21283         };
21284         s32 poll_miniq[4][2] = {
21285                 {0, 0},
21286                 {0, 0},
21287                 {0, 0},
21288                 {0, 0}
21289         };
21290         s32 min_d, curr_d;
21291         s32 fine_digital_offset[4];
21292         s32 poll_results_min[4] = { 0, 0, 0, 0 };
21293         s32 min_poll;
21294
21295         switch (rssi_type) {
21296         case NPHY_RSSI_SEL_NB:
21297                 target_code = NPHY_RSSICAL_NB_TARGET;
21298                 break;
21299         case NPHY_RSSI_SEL_W1:
21300                 target_code = NPHY_RSSICAL_W1_TARGET;
21301                 break;
21302         case NPHY_RSSI_SEL_W2:
21303                 target_code = NPHY_RSSICAL_W2_TARGET;
21304                 break;
21305         default:
21306                 return;
21307                 break;
21308         }
21309
21310         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
21311         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
21312         wlc_phy_clip_det_nphy(pi, 0, clip_state);
21313         wlc_phy_clip_det_nphy(pi, 1, clip_off);
21314
21315         rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
21316         rfctrlintc_override_val =
21317             CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
21318
21319         rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
21320         rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
21321         write_phy_reg(pi, 0x91, rfctrlintc_override_val);
21322         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
21323
21324         rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
21325         rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
21326         write_phy_reg(pi, 0x92, rfctrlintc_override_val);
21327         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
21328
21329         pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
21330             RADIO_2055_WBRSSI_G2_PD;
21331         pd_state[0] =
21332             read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
21333         pd_state[1] =
21334             read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
21335         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
21336         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
21337         rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
21338             RADIO_2055_WBRSSI_G2_SEL;
21339         rssi_ctrl_state[0] =
21340             read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
21341         rssi_ctrl_state[1] =
21342             read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
21343         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
21344
21345         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
21346                                        NPHY_RAIL_I, rssi_type);
21347         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
21348                                        NPHY_RAIL_Q, rssi_type);
21349
21350         for (vcm = 0; vcm < 4; vcm++) {
21351
21352                 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
21353                 if (rssi_type != NPHY_RSSI_SEL_W2) {
21354                         wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
21355                 }
21356
21357                 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
21358                                        NPHY_RSSICAL_NPOLL);
21359
21360                 if ((rssi_type == NPHY_RSSI_SEL_W1)
21361                     || (rssi_type == NPHY_RSSI_SEL_W2)) {
21362                         for (ctr = 0; ctr < 2; ctr++) {
21363                                 poll_miniq[vcm][ctr] =
21364                                     min(poll_results[vcm][ctr * 2 + 0],
21365                                         poll_results[vcm][ctr * 2 + 1]);
21366                         }
21367                 }
21368         }
21369
21370         for (result_idx = 0; result_idx < 4; result_idx++) {
21371                 min_d = NPHY_RSSICAL_MAXD;
21372                 min_vcm = 0;
21373                 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
21374                 for (vcm = 0; vcm < 4; vcm++) {
21375                         curr_d = ABS(((rssi_type == NPHY_RSSI_SEL_NB) ?
21376                                       poll_results[vcm][result_idx] :
21377                                       poll_miniq[vcm][result_idx / 2]) -
21378                                      (target_code * NPHY_RSSICAL_NPOLL));
21379                         if (curr_d < min_d) {
21380                                 min_d = curr_d;
21381                                 min_vcm = vcm;
21382                         }
21383                         if (poll_results[vcm][result_idx] < min_poll) {
21384                                 min_poll = poll_results[vcm][result_idx];
21385                         }
21386                 }
21387                 vcm_final[result_idx] = min_vcm;
21388                 poll_results_min[result_idx] = min_poll;
21389         }
21390
21391         if (rssi_type != NPHY_RSSI_SEL_W2) {
21392                 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
21393         }
21394
21395         for (result_idx = 0; result_idx < 4; result_idx++) {
21396                 fine_digital_offset[result_idx] =
21397                     (target_code * NPHY_RSSICAL_NPOLL) -
21398                     poll_results[vcm_final[result_idx]][result_idx];
21399                 if (fine_digital_offset[result_idx] < 0) {
21400                         fine_digital_offset[result_idx] =
21401                             ABS(fine_digital_offset[result_idx]);
21402                         fine_digital_offset[result_idx] +=
21403                             (NPHY_RSSICAL_NPOLL / 2);
21404                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
21405                         fine_digital_offset[result_idx] =
21406                             -fine_digital_offset[result_idx];
21407                 } else {
21408                         fine_digital_offset[result_idx] +=
21409                             (NPHY_RSSICAL_NPOLL / 2);
21410                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
21411                 }
21412
21413                 if (poll_results_min[result_idx] ==
21414                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL) {
21415                         fine_digital_offset[result_idx] =
21416                             (target_code - NPHY_RSSICAL_MAXREAD - 1);
21417                 }
21418
21419                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
21420                                                (s8)
21421                                                fine_digital_offset[result_idx],
21422                                                (result_idx / 2 ==
21423                                                 0) ? RADIO_MIMO_CORESEL_CORE1 :
21424                                                RADIO_MIMO_CORESEL_CORE2,
21425                                                (result_idx % 2 ==
21426                                                 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
21427                                                rssi_type);
21428         }
21429
21430         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
21431         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
21432         if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL) {
21433                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21434                                      NPHY_RSSI_SEL_NB);
21435         } else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL) {
21436                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21437                                      NPHY_RSSI_SEL_W1);
21438         } else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G2_SEL) {
21439                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21440                                      NPHY_RSSI_SEL_W2);
21441         } else {
21442                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21443                                      NPHY_RSSI_SEL_W2);
21444         }
21445         if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL) {
21446                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21447                                      NPHY_RSSI_SEL_NB);
21448         } else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL) {
21449                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21450                                      NPHY_RSSI_SEL_W1);
21451         } else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G2_SEL) {
21452                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21453                                      NPHY_RSSI_SEL_W2);
21454         } else {
21455                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21456                                      NPHY_RSSI_SEL_W2);
21457         }
21458
21459         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
21460
21461         write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
21462         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
21463         write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
21464         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
21465
21466         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
21467         wlc_phy_clip_det_nphy(pi, 1, clip_state);
21468
21469         wlc_phy_resetcca_nphy(pi);
21470 }
21471
21472 int BCMFASTPATH
21473 wlc_phy_rssi_compute_nphy(phy_info_t *pi, wlc_d11rxhdr_t *wlc_rxh)
21474 {
21475         d11rxhdr_t *rxh = &wlc_rxh->rxhdr;
21476         s16 rxpwr, rxpwr0, rxpwr1;
21477         s16 phyRx0_l, phyRx2_l;
21478
21479         rxpwr = 0;
21480         rxpwr0 = le16_to_cpu(rxh->PhyRxStatus_1) & PRXS1_nphy_PWR0_MASK;
21481         rxpwr1 = (le16_to_cpu(rxh->PhyRxStatus_1) & PRXS1_nphy_PWR1_MASK) >> 8;
21482
21483         if (rxpwr0 > 127)
21484                 rxpwr0 -= 256;
21485         if (rxpwr1 > 127)
21486                 rxpwr1 -= 256;
21487
21488         phyRx0_l = le16_to_cpu(rxh->PhyRxStatus_0) & 0x00ff;
21489         phyRx2_l = le16_to_cpu(rxh->PhyRxStatus_2) & 0x00ff;
21490         if (phyRx2_l > 127)
21491                 phyRx2_l -= 256;
21492
21493         if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
21494                 rxpwr0 = rxpwr1;
21495                 rxpwr1 = phyRx2_l;
21496         }
21497
21498         wlc_rxh->rxpwr[0] = (s8) rxpwr0;
21499         wlc_rxh->rxpwr[1] = (s8) rxpwr1;
21500         wlc_rxh->do_rssi_ma = 0;
21501
21502         if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
21503                 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
21504         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
21505                 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
21506         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
21507                 rxpwr = (rxpwr0 + rxpwr1) >> 1;
21508         else
21509                 ASSERT(0);
21510
21511         return rxpwr;
21512 }
21513
21514 static void
21515 wlc_phy_rfctrlintc_override_nphy(phy_info_t *pi, u8 field, u16 value,
21516                                  u8 core_code)
21517 {
21518         u16 mask;
21519         u16 val;
21520         u8 core;
21521
21522         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21523                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21524                         if (core_code == RADIO_MIMO_CORESEL_CORE1
21525                             && core == PHY_CORE_1)
21526                                 continue;
21527                         else if (core_code == RADIO_MIMO_CORESEL_CORE2
21528                                  && core == PHY_CORE_0)
21529                                 continue;
21530
21531                         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
21532
21533                                 mask = (0x1 << 10);
21534                                 val = 1 << 10;
21535                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
21536                                             0x92, mask, val);
21537                         }
21538
21539                         if (field == NPHY_RfctrlIntc_override_OFF) {
21540
21541                                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
21542                                               0x92, 0);
21543
21544                                 wlc_phy_force_rfseq_nphy(pi,
21545                                                          NPHY_RFSEQ_RESET2RX);
21546                         } else if (field == NPHY_RfctrlIntc_override_TRSW) {
21547
21548                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21549
21550                                         mask = (0x1 << 6) | (0x1 << 7);
21551
21552                                         val = value << 6;
21553                                         mod_phy_reg(pi,
21554                                                     (core ==
21555                                                      PHY_CORE_0) ? 0x91 : 0x92,
21556                                                     mask, val);
21557
21558                                         or_phy_reg(pi,
21559                                                    (core ==
21560                                                     PHY_CORE_0) ? 0x91 : 0x92,
21561                                                    (0x1 << 10));
21562
21563                                         and_phy_reg(pi, 0x2ff, (u16)
21564                                                     ~(0x3 << 14));
21565                                         or_phy_reg(pi, 0x2ff, (0x1 << 13));
21566                                         or_phy_reg(pi, 0x2ff, (0x1 << 0));
21567                                 } else {
21568
21569                                         mask = (0x1 << 6) |
21570                                             (0x1 << 7) |
21571                                             (0x1 << 8) | (0x1 << 9);
21572                                         val = value << 6;
21573                                         mod_phy_reg(pi,
21574                                                     (core ==
21575                                                      PHY_CORE_0) ? 0x91 : 0x92,
21576                                                     mask, val);
21577
21578                                         mask = (0x1 << 0);
21579                                         val = 1 << 0;
21580                                         mod_phy_reg(pi,
21581                                                     (core ==
21582                                                      PHY_CORE_0) ? 0xe7 : 0xec,
21583                                                     mask, val);
21584
21585                                         mask = (core == PHY_CORE_0) ? (0x1 << 0)
21586                                             : (0x1 << 1);
21587                                         val = 1 << ((core == PHY_CORE_0) ?
21588                                                     0 : 1);
21589                                         mod_phy_reg(pi, 0x78, mask, val);
21590
21591                                         SPINWAIT(((read_phy_reg(pi, 0x78) & val)
21592                                                   != 0), 10000);
21593                                         ASSERT((read_phy_reg(pi, 0x78) & val) ==
21594                                                0);
21595
21596                                         mask = (0x1 << 0);
21597                                         val = 0 << 0;
21598                                         mod_phy_reg(pi,
21599                                                     (core ==
21600                                                      PHY_CORE_0) ? 0xe7 : 0xec,
21601                                                     mask, val);
21602                                 }
21603                         } else if (field == NPHY_RfctrlIntc_override_PA) {
21604                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21605
21606                                         mask = (0x1 << 4) | (0x1 << 5);
21607
21608                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21609                                                 val = value << 5;
21610                                         } else {
21611                                                 val = value << 4;
21612                                         }
21613
21614                                         mod_phy_reg(pi,
21615                                                     (core ==
21616                                                      PHY_CORE_0) ? 0x91 : 0x92,
21617                                                     mask, val);
21618
21619                                         or_phy_reg(pi,
21620                                                    (core ==
21621                                                     PHY_CORE_0) ? 0x91 : 0x92,
21622                                                    (0x1 << 12));
21623                                 } else {
21624
21625                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21626                                                 mask = (0x1 << 5);
21627                                                 val = value << 5;
21628                                         } else {
21629                                                 mask = (0x1 << 4);
21630                                                 val = value << 4;
21631                                         }
21632                                         mod_phy_reg(pi,
21633                                                     (core ==
21634                                                      PHY_CORE_0) ? 0x91 : 0x92,
21635                                                     mask, val);
21636                                 }
21637                         } else if (field == NPHY_RfctrlIntc_override_EXT_LNA_PU) {
21638                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21639                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21640
21641                                                 mask = (0x1 << 0);
21642                                                 val = value << 0;
21643                                                 mod_phy_reg(pi,
21644                                                             (core ==
21645                                                              PHY_CORE_0) ? 0x91
21646                                                             : 0x92, mask, val);
21647
21648                                                 mask = (0x1 << 2);
21649                                                 mod_phy_reg(pi,
21650                                                             (core ==
21651                                                              PHY_CORE_0) ? 0x91
21652                                                             : 0x92, mask, 0);
21653                                         } else {
21654
21655                                                 mask = (0x1 << 2);
21656                                                 val = value << 2;
21657                                                 mod_phy_reg(pi,
21658                                                             (core ==
21659                                                              PHY_CORE_0) ? 0x91
21660                                                             : 0x92, mask, val);
21661
21662                                                 mask = (0x1 << 0);
21663                                                 mod_phy_reg(pi,
21664                                                             (core ==
21665                                                              PHY_CORE_0) ? 0x91
21666                                                             : 0x92, mask, 0);
21667                                         }
21668
21669                                         mask = (0x1 << 11);
21670                                         val = 1 << 11;
21671                                         mod_phy_reg(pi,
21672                                                     (core ==
21673                                                      PHY_CORE_0) ? 0x91 : 0x92,
21674                                                     mask, val);
21675                                 } else {
21676
21677                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21678                                                 mask = (0x1 << 0);
21679                                                 val = value << 0;
21680                                         } else {
21681                                                 mask = (0x1 << 2);
21682                                                 val = value << 2;
21683                                         }
21684                                         mod_phy_reg(pi,
21685                                                     (core ==
21686                                                      PHY_CORE_0) ? 0x91 : 0x92,
21687                                                     mask, val);
21688                                 }
21689                         } else if (field ==
21690                                    NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
21691                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21692                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21693
21694                                                 mask = (0x1 << 1);
21695                                                 val = value << 1;
21696                                                 mod_phy_reg(pi,
21697                                                             (core ==
21698                                                              PHY_CORE_0) ? 0x91
21699                                                             : 0x92, mask, val);
21700
21701                                                 mask = (0x1 << 3);
21702                                                 mod_phy_reg(pi,
21703                                                             (core ==
21704                                                              PHY_CORE_0) ? 0x91
21705                                                             : 0x92, mask, 0);
21706                                         } else {
21707
21708                                                 mask = (0x1 << 3);
21709                                                 val = value << 3;
21710                                                 mod_phy_reg(pi,
21711                                                             (core ==
21712                                                              PHY_CORE_0) ? 0x91
21713                                                             : 0x92, mask, val);
21714
21715                                                 mask = (0x1 << 1);
21716                                                 mod_phy_reg(pi,
21717                                                             (core ==
21718                                                              PHY_CORE_0) ? 0x91
21719                                                             : 0x92, mask, 0);
21720                                         }
21721
21722                                         mask = (0x1 << 11);
21723                                         val = 1 << 11;
21724                                         mod_phy_reg(pi,
21725                                                     (core ==
21726                                                      PHY_CORE_0) ? 0x91 : 0x92,
21727                                                     mask, val);
21728                                 } else {
21729
21730                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21731                                                 mask = (0x1 << 1);
21732                                                 val = value << 1;
21733                                         } else {
21734                                                 mask = (0x1 << 3);
21735                                                 val = value << 3;
21736                                         }
21737                                         mod_phy_reg(pi,
21738                                                     (core ==
21739                                                      PHY_CORE_0) ? 0x91 : 0x92,
21740                                                     mask, val);
21741                                 }
21742                         }
21743                 }
21744         } else {
21745                 return;
21746         }
21747 }
21748
21749 static void wlc_phy_rssi_cal_nphy_rev3(phy_info_t *pi)
21750 {
21751         u16 classif_state;
21752         u16 clip_state[2];
21753         u16 clip_off[] = { 0xffff, 0xffff };
21754         s32 target_code;
21755         u8 vcm, min_vcm;
21756         u8 vcm_final = 0;
21757         u8 result_idx;
21758         s32 poll_results[8][4] = {
21759                 {0, 0, 0, 0},
21760                 {0, 0, 0, 0},
21761                 {0, 0, 0, 0},
21762                 {0, 0, 0, 0},
21763                 {0, 0, 0, 0},
21764                 {0, 0, 0, 0},
21765                 {0, 0, 0, 0},
21766                 {0, 0, 0, 0}
21767         };
21768         s32 poll_result_core[4] = { 0, 0, 0, 0 };
21769         s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
21770         s32 fine_digital_offset[4];
21771         s32 poll_results_min[4] = { 0, 0, 0, 0 };
21772         s32 min_poll;
21773         u8 vcm_level_max;
21774         u8 core;
21775         u8 wb_cnt;
21776         u8 rssi_type;
21777         u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
21778         u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
21779         u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
21780         u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
21781         u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
21782         u16 NPHY_RfctrlCmd_save;
21783         u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
21784         u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
21785         u8 rxcore_state;
21786         u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
21787         u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
21788         u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
21789         u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
21790
21791         NPHY_REV7_RfctrlOverride3_save = NPHY_REV7_RfctrlOverride4_save =
21792             NPHY_REV7_RfctrlOverride5_save = NPHY_REV7_RfctrlOverride6_save =
21793             NPHY_REV7_RfctrlMiscReg3_save = NPHY_REV7_RfctrlMiscReg4_save =
21794             NPHY_REV7_RfctrlMiscReg5_save = NPHY_REV7_RfctrlMiscReg6_save = 0;
21795
21796         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
21797         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
21798         wlc_phy_clip_det_nphy(pi, 0, clip_state);
21799         wlc_phy_clip_det_nphy(pi, 1, clip_off);
21800
21801         NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
21802         NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
21803         NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
21804         NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
21805         NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
21806         NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
21807         NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
21808         NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
21809         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21810                 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
21811                 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
21812                 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
21813                 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
21814         }
21815         NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
21816         NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
21817         NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
21818         NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
21819         NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
21820         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21821                 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
21822                 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
21823                 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
21824                 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
21825         }
21826         NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
21827         NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
21828
21829         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
21830                                          RADIO_MIMO_CORESEL_ALLRXTX);
21831         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
21832                                          RADIO_MIMO_CORESEL_ALLRXTX);
21833
21834         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21835                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
21836                                                      NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
21837                                                      0, 0, 0);
21838         } else {
21839                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
21840         }
21841
21842         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21843                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
21844                                                      NPHY_REV7_RfctrlOverride_cmd_rx_pu,
21845                                                      1, 0, 0);
21846         } else {
21847                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
21848         }
21849
21850         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21851                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
21852                                                   1, 0, 0,
21853                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
21854                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
21855                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
21856         } else {
21857                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
21858                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
21859         }
21860
21861         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21862                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21863                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
21864                                                           0, 0, 0,
21865                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21866                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 1, 0,
21867                                                           0,
21868                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21869                 } else {
21870                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
21871                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
21872                 }
21873
21874         } else {
21875                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21876                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4),
21877                                                           0, 0, 0,
21878                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21879                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 1, 0,
21880                                                           0,
21881                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21882                 } else {
21883                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
21884                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
21885                 }
21886         }
21887
21888         rxcore_state = wlc_phy_rxcore_getstate_nphy((wlc_phy_t *) pi);
21889
21890         vcm_level_max = 8;
21891
21892         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21893
21894                 if ((rxcore_state & (1 << core)) == 0)
21895                         continue;
21896
21897                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
21898                                                core ==
21899                                                PHY_CORE_0 ?
21900                                                RADIO_MIMO_CORESEL_CORE1 :
21901                                                RADIO_MIMO_CORESEL_CORE2,
21902                                                NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
21903                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
21904                                                core ==
21905                                                PHY_CORE_0 ?
21906                                                RADIO_MIMO_CORESEL_CORE1 :
21907                                                RADIO_MIMO_CORESEL_CORE2,
21908                                                NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
21909
21910                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
21911                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21912
21913                                 mod_radio_reg(pi, (core == PHY_CORE_0) ?
21914                                               RADIO_2057_NB_MASTER_CORE0 :
21915                                               RADIO_2057_NB_MASTER_CORE1,
21916                                               RADIO_2057_VCM_MASK, vcm);
21917                         } else {
21918
21919                                 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
21920                                               ((core ==
21921                                                 PHY_CORE_0) ? RADIO_2056_RX0 :
21922                                                RADIO_2056_RX1),
21923                                               RADIO_2056_VCM_MASK,
21924                                               vcm << RADIO_2056_RSSI_VCM_SHIFT);
21925                         }
21926
21927                         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
21928                                                &poll_results[vcm][0],
21929                                                NPHY_RSSICAL_NPOLL);
21930                 }
21931
21932                 for (result_idx = 0; result_idx < 4; result_idx++) {
21933                         if ((core == result_idx / 2) && (result_idx % 2 == 0)) {
21934
21935                                 min_d = NPHY_RSSICAL_MAXD;
21936                                 min_vcm = 0;
21937                                 min_poll =
21938                                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL +
21939                                     1;
21940                                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
21941                                         curr_d = poll_results[vcm][result_idx] *
21942                                             poll_results[vcm][result_idx] +
21943                                             poll_results[vcm][result_idx + 1] *
21944                                             poll_results[vcm][result_idx + 1];
21945                                         if (curr_d < min_d) {
21946                                                 min_d = curr_d;
21947                                                 min_vcm = vcm;
21948                                         }
21949                                         if (poll_results[vcm][result_idx] <
21950                                             min_poll) {
21951                                                 min_poll =
21952                                                     poll_results[vcm]
21953                                                     [result_idx];
21954                                         }
21955                                 }
21956                                 vcm_final = min_vcm;
21957                                 poll_results_min[result_idx] = min_poll;
21958                         }
21959                 }
21960
21961                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21962                         mod_radio_reg(pi, (core == PHY_CORE_0) ?
21963                                       RADIO_2057_NB_MASTER_CORE0 :
21964                                       RADIO_2057_NB_MASTER_CORE1,
21965                                       RADIO_2057_VCM_MASK, vcm_final);
21966                 } else {
21967                         mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
21968                                       ((core ==
21969                                         PHY_CORE_0) ? RADIO_2056_RX0 :
21970                                        RADIO_2056_RX1), RADIO_2056_VCM_MASK,
21971                                       vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
21972                 }
21973
21974                 for (result_idx = 0; result_idx < 4; result_idx++) {
21975                         if (core == result_idx / 2) {
21976                                 fine_digital_offset[result_idx] =
21977                                     (NPHY_RSSICAL_NB_TARGET *
21978                                      NPHY_RSSICAL_NPOLL) -
21979                                     poll_results[vcm_final][result_idx];
21980                                 if (fine_digital_offset[result_idx] < 0) {
21981                                         fine_digital_offset[result_idx] =
21982                                             ABS(fine_digital_offset
21983                                                 [result_idx]);
21984                                         fine_digital_offset[result_idx] +=
21985                                             (NPHY_RSSICAL_NPOLL / 2);
21986                                         fine_digital_offset[result_idx] /=
21987                                             NPHY_RSSICAL_NPOLL;
21988                                         fine_digital_offset[result_idx] =
21989                                             -fine_digital_offset[result_idx];
21990                                 } else {
21991                                         fine_digital_offset[result_idx] +=
21992                                             (NPHY_RSSICAL_NPOLL / 2);
21993                                         fine_digital_offset[result_idx] /=
21994                                             NPHY_RSSICAL_NPOLL;
21995                                 }
21996
21997                                 if (poll_results_min[result_idx] ==
21998                                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL) {
21999                                         fine_digital_offset[result_idx] =
22000                                             (NPHY_RSSICAL_NB_TARGET -
22001                                              NPHY_RSSICAL_MAXREAD - 1);
22002                                 }
22003
22004                                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
22005                                                                (s8)
22006                                                                fine_digital_offset
22007                                                                [result_idx],
22008                                                                (result_idx /
22009                                                                 2 ==
22010                                                                 0) ?
22011                                                                RADIO_MIMO_CORESEL_CORE1
22012                                                                :
22013                                                                RADIO_MIMO_CORESEL_CORE2,
22014                                                                (result_idx %
22015                                                                 2 ==
22016                                                                 0) ? NPHY_RAIL_I
22017                                                                : NPHY_RAIL_Q,
22018                                                                NPHY_RSSI_SEL_NB);
22019                         }
22020                 }
22021
22022         }
22023
22024         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22025
22026                 if ((rxcore_state & (1 << core)) == 0)
22027                         continue;
22028
22029                 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22030                         if (wb_cnt == 0) {
22031                                 rssi_type = NPHY_RSSI_SEL_W1;
22032                                 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22033                         } else {
22034                                 rssi_type = NPHY_RSSI_SEL_W2;
22035                                 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22036                         }
22037
22038                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22039                                                        core ==
22040                                                        PHY_CORE_0 ?
22041                                                        RADIO_MIMO_CORESEL_CORE1
22042                                                        :
22043                                                        RADIO_MIMO_CORESEL_CORE2,
22044                                                        NPHY_RAIL_I, rssi_type);
22045                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22046                                                        core ==
22047                                                        PHY_CORE_0 ?
22048                                                        RADIO_MIMO_CORESEL_CORE1
22049                                                        :
22050                                                        RADIO_MIMO_CORESEL_CORE2,
22051                                                        NPHY_RAIL_Q, rssi_type);
22052
22053                         wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22054                                                NPHY_RSSICAL_NPOLL);
22055
22056                         for (result_idx = 0; result_idx < 4; result_idx++) {
22057                                 if (core == result_idx / 2) {
22058                                         fine_digital_offset[result_idx] =
22059                                             (target_code * NPHY_RSSICAL_NPOLL) -
22060                                             poll_result_core[result_idx];
22061                                         if (fine_digital_offset[result_idx] < 0) {
22062                                                 fine_digital_offset[result_idx]
22063                                                     =
22064                                                     ABS(fine_digital_offset
22065                                                         [result_idx]);
22066                                                 fine_digital_offset[result_idx]
22067                                                     += (NPHY_RSSICAL_NPOLL / 2);
22068                                                 fine_digital_offset[result_idx]
22069                                                     /= NPHY_RSSICAL_NPOLL;
22070                                                 fine_digital_offset[result_idx]
22071                                                     =
22072                                                     -fine_digital_offset
22073                                                     [result_idx];
22074                                         } else {
22075                                                 fine_digital_offset[result_idx]
22076                                                     += (NPHY_RSSICAL_NPOLL / 2);
22077                                                 fine_digital_offset[result_idx]
22078                                                     /= NPHY_RSSICAL_NPOLL;
22079                                         }
22080
22081                                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
22082                                                                        (s8)
22083                                                                        fine_digital_offset
22084                                                                        [core *
22085                                                                         2],
22086                                                                        (core ==
22087                                                                         PHY_CORE_0)
22088                                                                        ?
22089                                                                        RADIO_MIMO_CORESEL_CORE1
22090                                                                        :
22091                                                                        RADIO_MIMO_CORESEL_CORE2,
22092                                                                        (result_idx
22093                                                                         % 2 ==
22094                                                                         0) ?
22095                                                                        NPHY_RAIL_I
22096                                                                        :
22097                                                                        NPHY_RAIL_Q,
22098                                                                        rssi_type);
22099                                 }
22100                         }
22101
22102                 }
22103         }
22104
22105         write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22106         write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22107
22108         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22109
22110         mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22111         mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22112         mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22113
22114         mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22115         mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22116         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22117
22118         write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22119         write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22120         write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22121         write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22122         write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22123         write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22124         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22125                 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22126                 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22127                 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22128                 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22129         }
22130         write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22131         write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22132         write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22133         write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22134         write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22135         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22136                 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22137                 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22138                 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22139                 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22140         }
22141         write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22142         write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22143
22144         if (CHSPEC_IS2G(pi->radio_chanspec)) {
22145                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22146                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22147                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22148                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22149                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22150                 } else {
22151                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22152                             read_radio_reg(pi,
22153                                            RADIO_2056_RX_RSSI_MISC |
22154                                            RADIO_2056_RX0);
22155                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22156                             read_radio_reg(pi,
22157                                            RADIO_2056_RX_RSSI_MISC |
22158                                            RADIO_2056_RX1);
22159                 }
22160
22161                 pi->rssical_cache.rssical_phyregs_2G[0] =
22162                     read_phy_reg(pi, 0x1a6);
22163                 pi->rssical_cache.rssical_phyregs_2G[1] =
22164                     read_phy_reg(pi, 0x1ac);
22165                 pi->rssical_cache.rssical_phyregs_2G[2] =
22166                     read_phy_reg(pi, 0x1b2);
22167                 pi->rssical_cache.rssical_phyregs_2G[3] =
22168                     read_phy_reg(pi, 0x1b8);
22169                 pi->rssical_cache.rssical_phyregs_2G[4] =
22170                     read_phy_reg(pi, 0x1a4);
22171                 pi->rssical_cache.rssical_phyregs_2G[5] =
22172                     read_phy_reg(pi, 0x1aa);
22173                 pi->rssical_cache.rssical_phyregs_2G[6] =
22174                     read_phy_reg(pi, 0x1b0);
22175                 pi->rssical_cache.rssical_phyregs_2G[7] =
22176                     read_phy_reg(pi, 0x1b6);
22177                 pi->rssical_cache.rssical_phyregs_2G[8] =
22178                     read_phy_reg(pi, 0x1a5);
22179                 pi->rssical_cache.rssical_phyregs_2G[9] =
22180                     read_phy_reg(pi, 0x1ab);
22181                 pi->rssical_cache.rssical_phyregs_2G[10] =
22182                     read_phy_reg(pi, 0x1b1);
22183                 pi->rssical_cache.rssical_phyregs_2G[11] =
22184                     read_phy_reg(pi, 0x1b7);
22185
22186                 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22187         } else {
22188                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22189                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22190                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22191                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22192                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22193                 } else {
22194                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22195                             read_radio_reg(pi,
22196                                            RADIO_2056_RX_RSSI_MISC |
22197                                            RADIO_2056_RX0);
22198                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22199                             read_radio_reg(pi,
22200                                            RADIO_2056_RX_RSSI_MISC |
22201                                            RADIO_2056_RX1);
22202                 }
22203
22204                 pi->rssical_cache.rssical_phyregs_5G[0] =
22205                     read_phy_reg(pi, 0x1a6);
22206                 pi->rssical_cache.rssical_phyregs_5G[1] =
22207                     read_phy_reg(pi, 0x1ac);
22208                 pi->rssical_cache.rssical_phyregs_5G[2] =
22209                     read_phy_reg(pi, 0x1b2);
22210                 pi->rssical_cache.rssical_phyregs_5G[3] =
22211                     read_phy_reg(pi, 0x1b8);
22212                 pi->rssical_cache.rssical_phyregs_5G[4] =
22213                     read_phy_reg(pi, 0x1a4);
22214                 pi->rssical_cache.rssical_phyregs_5G[5] =
22215                     read_phy_reg(pi, 0x1aa);
22216                 pi->rssical_cache.rssical_phyregs_5G[6] =
22217                     read_phy_reg(pi, 0x1b0);
22218                 pi->rssical_cache.rssical_phyregs_5G[7] =
22219                     read_phy_reg(pi, 0x1b6);
22220                 pi->rssical_cache.rssical_phyregs_5G[8] =
22221                     read_phy_reg(pi, 0x1a5);
22222                 pi->rssical_cache.rssical_phyregs_5G[9] =
22223                     read_phy_reg(pi, 0x1ab);
22224                 pi->rssical_cache.rssical_phyregs_5G[10] =
22225                     read_phy_reg(pi, 0x1b1);
22226                 pi->rssical_cache.rssical_phyregs_5G[11] =
22227                     read_phy_reg(pi, 0x1b7);
22228
22229                 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22230         }
22231
22232         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22233         wlc_phy_clip_det_nphy(pi, 1, clip_state);
22234 }
22235
22236 static void wlc_phy_restore_rssical_nphy(phy_info_t *pi)
22237 {
22238         ASSERT(NREV_GE(pi->pubpi.phy_rev, 3));
22239
22240         if (CHSPEC_IS2G(pi->radio_chanspec)) {
22241                 if (pi->nphy_rssical_chanspec_2G == 0)
22242                         return;
22243
22244                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22245                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
22246                                       RADIO_2057_VCM_MASK,
22247                                       pi->rssical_cache.
22248                                       rssical_radio_regs_2G[0]);
22249                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
22250                                       RADIO_2057_VCM_MASK,
22251                                       pi->rssical_cache.
22252                                       rssical_radio_regs_2G[1]);
22253                 } else {
22254                         mod_radio_reg(pi,
22255                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
22256                                       RADIO_2056_VCM_MASK,
22257                                       pi->rssical_cache.
22258                                       rssical_radio_regs_2G[0]);
22259                         mod_radio_reg(pi,
22260                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
22261                                       RADIO_2056_VCM_MASK,
22262                                       pi->rssical_cache.
22263                                       rssical_radio_regs_2G[1]);
22264                 }
22265
22266                 write_phy_reg(pi, 0x1a6,
22267                               pi->rssical_cache.rssical_phyregs_2G[0]);
22268                 write_phy_reg(pi, 0x1ac,
22269                               pi->rssical_cache.rssical_phyregs_2G[1]);
22270                 write_phy_reg(pi, 0x1b2,
22271                               pi->rssical_cache.rssical_phyregs_2G[2]);
22272                 write_phy_reg(pi, 0x1b8,
22273                               pi->rssical_cache.rssical_phyregs_2G[3]);
22274                 write_phy_reg(pi, 0x1a4,
22275                               pi->rssical_cache.rssical_phyregs_2G[4]);
22276                 write_phy_reg(pi, 0x1aa,
22277                               pi->rssical_cache.rssical_phyregs_2G[5]);
22278                 write_phy_reg(pi, 0x1b0,
22279                               pi->rssical_cache.rssical_phyregs_2G[6]);
22280                 write_phy_reg(pi, 0x1b6,
22281                               pi->rssical_cache.rssical_phyregs_2G[7]);
22282                 write_phy_reg(pi, 0x1a5,
22283                               pi->rssical_cache.rssical_phyregs_2G[8]);
22284                 write_phy_reg(pi, 0x1ab,
22285                               pi->rssical_cache.rssical_phyregs_2G[9]);
22286                 write_phy_reg(pi, 0x1b1,
22287                               pi->rssical_cache.rssical_phyregs_2G[10]);
22288                 write_phy_reg(pi, 0x1b7,
22289                               pi->rssical_cache.rssical_phyregs_2G[11]);
22290
22291         } else {
22292                 if (pi->nphy_rssical_chanspec_5G == 0)
22293                         return;
22294
22295                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22296                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
22297                                       RADIO_2057_VCM_MASK,
22298                                       pi->rssical_cache.
22299                                       rssical_radio_regs_5G[0]);
22300                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
22301                                       RADIO_2057_VCM_MASK,
22302                                       pi->rssical_cache.
22303                                       rssical_radio_regs_5G[1]);
22304                 } else {
22305                         mod_radio_reg(pi,
22306                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
22307                                       RADIO_2056_VCM_MASK,
22308                                       pi->rssical_cache.
22309                                       rssical_radio_regs_5G[0]);
22310                         mod_radio_reg(pi,
22311                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
22312                                       RADIO_2056_VCM_MASK,
22313                                       pi->rssical_cache.
22314                                       rssical_radio_regs_5G[1]);
22315                 }
22316
22317                 write_phy_reg(pi, 0x1a6,
22318                               pi->rssical_cache.rssical_phyregs_5G[0]);
22319                 write_phy_reg(pi, 0x1ac,
22320                               pi->rssical_cache.rssical_phyregs_5G[1]);
22321                 write_phy_reg(pi, 0x1b2,
22322                               pi->rssical_cache.rssical_phyregs_5G[2]);
22323                 write_phy_reg(pi, 0x1b8,
22324                               pi->rssical_cache.rssical_phyregs_5G[3]);
22325                 write_phy_reg(pi, 0x1a4,
22326                               pi->rssical_cache.rssical_phyregs_5G[4]);
22327                 write_phy_reg(pi, 0x1aa,
22328                               pi->rssical_cache.rssical_phyregs_5G[5]);
22329                 write_phy_reg(pi, 0x1b0,
22330                               pi->rssical_cache.rssical_phyregs_5G[6]);
22331                 write_phy_reg(pi, 0x1b6,
22332                               pi->rssical_cache.rssical_phyregs_5G[7]);
22333                 write_phy_reg(pi, 0x1a5,
22334                               pi->rssical_cache.rssical_phyregs_5G[8]);
22335                 write_phy_reg(pi, 0x1ab,
22336                               pi->rssical_cache.rssical_phyregs_5G[9]);
22337                 write_phy_reg(pi, 0x1b1,
22338                               pi->rssical_cache.rssical_phyregs_5G[10]);
22339                 write_phy_reg(pi, 0x1b7,
22340                               pi->rssical_cache.rssical_phyregs_5G[11]);
22341         }
22342 }
22343
22344 static u16
22345 wlc_phy_gen_load_samples_nphy(phy_info_t *pi, u32 f_kHz, u16 max_val,
22346                               u8 dac_test_mode)
22347 {
22348         u8 phy_bw, is_phybw40;
22349         u16 num_samps, t, spur;
22350         fixed theta = 0, rot = 0;
22351         u32 tbl_len;
22352         cs32 *tone_buf = NULL;
22353
22354         is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
22355         phy_bw = (is_phybw40 == 1) ? 40 : 20;
22356         tbl_len = (phy_bw << 3);
22357
22358         if (dac_test_mode == 1) {
22359                 spur = read_phy_reg(pi, 0x01);
22360                 spur = (spur >> 15) & 1;
22361                 phy_bw = (spur == 1) ? 82 : 80;
22362                 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
22363
22364                 tbl_len = (phy_bw << 1);
22365         }
22366
22367         tone_buf = kmalloc(sizeof(cs32) * tbl_len, GFP_ATOMIC);
22368         if (tone_buf == NULL) {
22369                 return 0;
22370         }
22371
22372         num_samps = (u16) tbl_len;
22373         rot = FIXED((f_kHz * 36) / phy_bw) / 100;
22374         theta = 0;
22375
22376         for (t = 0; t < num_samps; t++) {
22377
22378                 wlc_phy_cordic(theta, &tone_buf[t]);
22379
22380                 theta += rot;
22381
22382                 tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
22383                 tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
22384         }
22385
22386         wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
22387
22388         if (tone_buf != NULL)
22389                 kfree(tone_buf);
22390
22391         return num_samps;
22392 }
22393
22394 int
22395 wlc_phy_tx_tone_nphy(phy_info_t *pi, u32 f_kHz, u16 max_val,
22396                      u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
22397 {
22398         u16 num_samps;
22399         u16 loops = 0xffff;
22400         u16 wait = 0;
22401
22402         num_samps =
22403                 wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val, dac_test_mode);
22404         if (num_samps == 0) {
22405                 return BCME_ERROR;
22406         }
22407
22408         wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
22409                                 dac_test_mode, modify_bbmult);
22410
22411         return BCME_OK;
22412 }
22413
22414 static void
22415 wlc_phy_loadsampletable_nphy(phy_info_t *pi, cs32 *tone_buf,
22416                              u16 num_samps)
22417 {
22418         u16 t;
22419         u32 *data_buf = NULL;
22420
22421         data_buf = kmalloc(sizeof(u32) * num_samps, GFP_ATOMIC);
22422         if (data_buf == NULL) {
22423                 return;
22424         }
22425
22426         if (pi->phyhang_avoid)
22427                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
22428
22429         for (t = 0; t < num_samps; t++) {
22430                 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
22431                     (((unsigned int)tone_buf[t].q) & 0x3ff);
22432         }
22433         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
22434                                  data_buf);
22435
22436         if (data_buf != NULL)
22437                 kfree(data_buf);
22438
22439         if (pi->phyhang_avoid)
22440                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
22441 }
22442
22443 static void
22444 wlc_phy_runsamples_nphy(phy_info_t *pi, u16 num_samps, u16 loops,
22445                         u16 wait, u8 iqmode, u8 dac_test_mode,
22446                         bool modify_bbmult)
22447 {
22448         u16 bb_mult;
22449         u8 phy_bw, sample_cmd;
22450         u16 orig_RfseqCoreActv;
22451         u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
22452             lpf_bw_ctl_miscreg4;
22453
22454         if (pi->phyhang_avoid)
22455                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
22456
22457         phy_bw = 20;
22458         if (CHSPEC_IS40(pi->radio_chanspec))
22459                 phy_bw = 40;
22460
22461         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22462
22463                 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
22464                 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
22465                 if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
22466                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
22467                             (0x7 << 8);
22468                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
22469                             (0x7 << 8);
22470                 } else {
22471                         wlc_phy_rfctrl_override_nphy_rev7(pi,
22472                                                           (0x1 << 7),
22473                                                           wlc_phy_read_lpf_bw_ctl_nphy
22474                                                           (pi, 0), 0, 0,
22475                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
22476
22477                         pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
22478
22479                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
22480                             (0x7 << 8);
22481                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
22482                             (0x7 << 8);
22483                 }
22484         }
22485
22486         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
22487
22488                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
22489                                         &bb_mult);
22490                 pi->nphy_bb_mult_save =
22491                     BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
22492         }
22493
22494         if (modify_bbmult) {
22495                 bb_mult = (phy_bw == 20) ? 100 : 71;
22496                 bb_mult = (bb_mult << 8) + bb_mult;
22497                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
22498                                          &bb_mult);
22499         }
22500
22501         if (pi->phyhang_avoid)
22502                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
22503
22504         write_phy_reg(pi, 0xc6, num_samps - 1);
22505
22506         if (loops != 0xffff) {
22507                 write_phy_reg(pi, 0xc4, loops - 1);
22508         } else {
22509                 write_phy_reg(pi, 0xc4, loops);
22510         }
22511         write_phy_reg(pi, 0xc5, wait);
22512
22513         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
22514         or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
22515         if (iqmode) {
22516
22517                 and_phy_reg(pi, 0xc2, 0x7FFF);
22518
22519                 or_phy_reg(pi, 0xc2, 0x8000);
22520         } else {
22521
22522                 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
22523                 write_phy_reg(pi, 0xc3, sample_cmd);
22524         }
22525
22526         SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
22527
22528         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
22529 }
22530
22531 void wlc_phy_stopplayback_nphy(phy_info_t *pi)
22532 {
22533         u16 playback_status;
22534         u16 bb_mult;
22535
22536         if (pi->phyhang_avoid)
22537                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
22538
22539         playback_status = read_phy_reg(pi, 0xc7);
22540         if (playback_status & 0x1) {
22541                 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
22542         } else if (playback_status & 0x2) {
22543
22544                 and_phy_reg(pi, 0xc2,
22545                             (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
22546         }
22547
22548         and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
22549
22550         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
22551
22552                 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
22553                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
22554                                          &bb_mult);
22555
22556                 pi->nphy_bb_mult_save = 0;
22557         }
22558
22559         if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
22560                 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
22561                         wlc_phy_rfctrl_override_nphy_rev7(pi,
22562                                                           (0x1 << 7),
22563                                                           0, 0, 1,
22564                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
22565                         pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
22566                 }
22567         }
22568
22569         if (pi->phyhang_avoid)
22570                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
22571 }
22572
22573 nphy_txgains_t wlc_phy_get_tx_gain_nphy(phy_info_t *pi)
22574 {
22575         u16 base_idx[2], curr_gain[2];
22576         u8 core_no;
22577         nphy_txgains_t target_gain;
22578         u32 *tx_pwrctrl_tbl = NULL;
22579
22580         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
22581                 if (pi->phyhang_avoid)
22582                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
22583
22584                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
22585                                         curr_gain);
22586
22587                 if (pi->phyhang_avoid)
22588                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
22589
22590                 for (core_no = 0; core_no < 2; core_no++) {
22591                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22592                                 target_gain.ipa[core_no] =
22593                                     curr_gain[core_no] & 0x0007;
22594                                 target_gain.pad[core_no] =
22595                                     ((curr_gain[core_no] & 0x00F8) >> 3);
22596                                 target_gain.pga[core_no] =
22597                                     ((curr_gain[core_no] & 0x0F00) >> 8);
22598                                 target_gain.txgm[core_no] =
22599                                     ((curr_gain[core_no] & 0x7000) >> 12);
22600                                 target_gain.txlpf[core_no] =
22601                                     ((curr_gain[core_no] & 0x8000) >> 15);
22602                         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22603                                 target_gain.ipa[core_no] =
22604                                     curr_gain[core_no] & 0x000F;
22605                                 target_gain.pad[core_no] =
22606                                     ((curr_gain[core_no] & 0x00F0) >> 4);
22607                                 target_gain.pga[core_no] =
22608                                     ((curr_gain[core_no] & 0x0F00) >> 8);
22609                                 target_gain.txgm[core_no] =
22610                                     ((curr_gain[core_no] & 0x7000) >> 12);
22611                         } else {
22612                                 target_gain.ipa[core_no] =
22613                                     curr_gain[core_no] & 0x0003;
22614                                 target_gain.pad[core_no] =
22615                                     ((curr_gain[core_no] & 0x000C) >> 2);
22616                                 target_gain.pga[core_no] =
22617                                     ((curr_gain[core_no] & 0x0070) >> 4);
22618                                 target_gain.txgm[core_no] =
22619                                     ((curr_gain[core_no] & 0x0380) >> 7);
22620                         }
22621                 }
22622         } else {
22623                 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
22624                 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
22625                 for (core_no = 0; core_no < 2; core_no++) {
22626                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22627                                 if (PHY_IPA(pi)) {
22628                                         tx_pwrctrl_tbl =
22629                                             wlc_phy_get_ipa_gaintbl_nphy(pi);
22630                                 } else {
22631                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22632                                                 if NREV_IS
22633                                                         (pi->pubpi.phy_rev, 3) {
22634                                                         tx_pwrctrl_tbl =
22635                                                             nphy_tpc_5GHz_txgain_rev3;
22636                                                 } else if NREV_IS
22637                                                         (pi->pubpi.phy_rev, 4) {
22638                                                         tx_pwrctrl_tbl =
22639                                                             (pi->srom_fem5g.
22640                                                              extpagain ==
22641                                                              3) ?
22642                                                             nphy_tpc_5GHz_txgain_HiPwrEPA
22643                                                             :
22644                                                             nphy_tpc_5GHz_txgain_rev4;
22645                                                 } else {
22646                                                         tx_pwrctrl_tbl =
22647                                                             nphy_tpc_5GHz_txgain_rev5;
22648                                                 }
22649                                         } else {
22650                                                 if (NREV_GE
22651                                                     (pi->pubpi.phy_rev, 7)) {
22652                                                         if (pi->pubpi.
22653                                                             radiorev == 3) {
22654                                                                 tx_pwrctrl_tbl =
22655                                                                     nphy_tpc_txgain_epa_2057rev3;
22656                                                         } else if (pi->pubpi.
22657                                                                    radiorev ==
22658                                                                    5) {
22659                                                                 tx_pwrctrl_tbl =
22660                                                                     nphy_tpc_txgain_epa_2057rev5;
22661                                                         }
22662
22663                                                 } else {
22664                                                         if (NREV_GE
22665                                                             (pi->pubpi.phy_rev,
22666                                                              5)
22667                                                             && (pi->srom_fem2g.
22668                                                                 extpagain ==
22669                                                                 3)) {
22670                                                                 tx_pwrctrl_tbl =
22671                                                                     nphy_tpc_txgain_HiPwrEPA;
22672                                                         } else {
22673                                                                 tx_pwrctrl_tbl =
22674                                                                     nphy_tpc_txgain_rev3;
22675                                                         }
22676                                                 }
22677                                         }
22678                                 }
22679                                 if NREV_GE
22680                                         (pi->pubpi.phy_rev, 7) {
22681                                         target_gain.ipa[core_no] =
22682                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22683                                              >> 16) & 0x7;
22684                                         target_gain.pad[core_no] =
22685                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22686                                              >> 19) & 0x1f;
22687                                         target_gain.pga[core_no] =
22688                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22689                                              >> 24) & 0xf;
22690                                         target_gain.txgm[core_no] =
22691                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22692                                              >> 28) & 0x7;
22693                                         target_gain.txlpf[core_no] =
22694                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22695                                              >> 31) & 0x1;
22696                                 } else {
22697                                         target_gain.ipa[core_no] =
22698                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22699                                              >> 16) & 0xf;
22700                                         target_gain.pad[core_no] =
22701                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22702                                              >> 20) & 0xf;
22703                                         target_gain.pga[core_no] =
22704                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22705                                              >> 24) & 0xf;
22706                                         target_gain.txgm[core_no] =
22707                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22708                                              >> 28) & 0x7;
22709                                 }
22710                         } else {
22711                                 target_gain.ipa[core_no] =
22712                                     (nphy_tpc_txgain[base_idx[core_no]] >> 16) &
22713                                     0x3;
22714                                 target_gain.pad[core_no] =
22715                                     (nphy_tpc_txgain[base_idx[core_no]] >> 18) &
22716                                     0x3;
22717                                 target_gain.pga[core_no] =
22718                                     (nphy_tpc_txgain[base_idx[core_no]] >> 20) &
22719                                     0x7;
22720                                 target_gain.txgm[core_no] =
22721                                     (nphy_tpc_txgain[base_idx[core_no]] >> 23) &
22722                                     0x7;
22723                         }
22724                 }
22725         }
22726
22727         return target_gain;
22728 }
22729
22730 static void
22731 wlc_phy_iqcal_gainparams_nphy(phy_info_t *pi, u16 core_no,
22732                               nphy_txgains_t target_gain,
22733                               nphy_iqcal_params_t *params)
22734 {
22735         u8 k;
22736         int idx;
22737         u16 gain_index;
22738         u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
22739
22740         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22741                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22742                         params->txlpf = target_gain.txlpf[core_no];
22743                 }
22744                 params->txgm = target_gain.txgm[core_no];
22745                 params->pga = target_gain.pga[core_no];
22746                 params->pad = target_gain.pad[core_no];
22747                 params->ipa = target_gain.ipa[core_no];
22748                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22749                         params->cal_gain =
22750                             ((params->txlpf << 15) | (params->
22751                                                       txgm << 12) | (params->
22752                                                                      pga << 8) |
22753                              (params->pad << 3) | (params->ipa));
22754                 } else {
22755                         params->cal_gain =
22756                             ((params->txgm << 12) | (params->
22757                                                      pga << 8) | (params->
22758                                                                   pad << 4) |
22759                              (params->ipa));
22760                 }
22761                 params->ncorr[0] = 0x79;
22762                 params->ncorr[1] = 0x79;
22763                 params->ncorr[2] = 0x79;
22764                 params->ncorr[3] = 0x79;
22765                 params->ncorr[4] = 0x79;
22766         } else {
22767
22768                 gain_index = ((target_gain.pad[core_no] << 0) |
22769                               (target_gain.pga[core_no] << 4) | (target_gain.
22770                                                                  txgm[core_no]
22771                                                                  << 8));
22772
22773                 idx = -1;
22774                 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
22775                         if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
22776                             gain_index) {
22777                                 idx = k;
22778                                 break;
22779                         }
22780                 }
22781
22782                 ASSERT(idx != -1);
22783
22784                 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
22785                 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
22786                 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
22787                 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
22788                                     (params->pad << 2));
22789                 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
22790                 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
22791                 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
22792                 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
22793         }
22794 }
22795
22796 static void wlc_phy_txcal_radio_setup_nphy(phy_info_t *pi)
22797 {
22798         u16 jtag_core, core;
22799
22800         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22801
22802                 for (core = 0; core <= 1; core++) {
22803
22804                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
22805                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22806                                             TX_SSI_MASTER);
22807
22808                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
22809                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22810                                             IQCAL_VCM_HG);
22811
22812                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
22813                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22814                                             IQCAL_IDAC);
22815
22816                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
22817                             READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM);
22818
22819                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
22820
22821                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
22822                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22823                                             TX_SSI_MUX);
22824
22825                         if (pi->pubpi.radiorev != 5)
22826                                 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
22827                                     READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22828                                                     TSSIA);
22829
22830                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
22831                             READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
22832
22833                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
22834                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22835                                             TSSI_MISC1);
22836
22837                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22838                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22839                                                  TX_SSI_MASTER, 0x0a);
22840                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22841                                                  IQCAL_VCM_HG, 0x43);
22842                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22843                                                  IQCAL_IDAC, 0x55);
22844                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22845                                                  TSSI_VCM, 0x00);
22846                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22847                                                  TSSIG, 0x00);
22848                                 if (pi->use_int_tx_iqlo_cal_nphy) {
22849                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
22850                                                          core, TX_SSI_MUX, 0x4);
22851                                         if (!
22852                                             (pi->
22853                                              internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
22854
22855                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22856                                                                  TX, core,
22857                                                                  TSSIA, 0x31);
22858                                         } else {
22859
22860                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22861                                                                  TX, core,
22862                                                                  TSSIA, 0x21);
22863                                         }
22864                                 }
22865                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22866                                                  TSSI_MISC1, 0x00);
22867                         } else {
22868                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22869                                                  TX_SSI_MASTER, 0x06);
22870                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22871                                                  IQCAL_VCM_HG, 0x43);
22872                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22873                                                  IQCAL_IDAC, 0x55);
22874                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22875                                                  TSSI_VCM, 0x00);
22876
22877                                 if (pi->pubpi.radiorev != 5)
22878                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
22879                                                          core, TSSIA, 0x00);
22880                                 if (pi->use_int_tx_iqlo_cal_nphy) {
22881                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
22882                                                          core, TX_SSI_MUX,
22883                                                          0x06);
22884                                         if (!
22885                                             (pi->
22886                                              internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
22887
22888                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22889                                                                  TX, core,
22890                                                                  TSSIG, 0x31);
22891                                         } else {
22892
22893                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22894                                                                  TX, core,
22895                                                                  TSSIG, 0x21);
22896                                         }
22897                                 }
22898                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22899                                                  TSSI_MISC1, 0x00);
22900                         }
22901                 }
22902         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22903
22904                 for (core = 0; core <= 1; core++) {
22905                         jtag_core =
22906                             (core ==
22907                              PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
22908
22909                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
22910                             read_radio_reg(pi,
22911                                            RADIO_2056_TX_TX_SSI_MASTER |
22912                                            jtag_core);
22913
22914                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
22915                             read_radio_reg(pi,
22916                                            RADIO_2056_TX_IQCAL_VCM_HG |
22917                                            jtag_core);
22918
22919                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
22920                             read_radio_reg(pi,
22921                                            RADIO_2056_TX_IQCAL_IDAC |
22922                                            jtag_core);
22923
22924                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
22925                             read_radio_reg(pi,
22926                                            RADIO_2056_TX_TSSI_VCM | jtag_core);
22927
22928                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
22929                             read_radio_reg(pi,
22930                                            RADIO_2056_TX_TX_AMP_DET |
22931                                            jtag_core);
22932
22933                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
22934                             read_radio_reg(pi,
22935                                            RADIO_2056_TX_TX_SSI_MUX |
22936                                            jtag_core);
22937
22938                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
22939                             read_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core);
22940
22941                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
22942                             read_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core);
22943
22944                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
22945                             read_radio_reg(pi,
22946                                            RADIO_2056_TX_TSSI_MISC1 |
22947                                            jtag_core);
22948
22949                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
22950                             read_radio_reg(pi,
22951                                            RADIO_2056_TX_TSSI_MISC2 |
22952                                            jtag_core);
22953
22954                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
22955                             read_radio_reg(pi,
22956                                            RADIO_2056_TX_TSSI_MISC3 |
22957                                            jtag_core);
22958
22959                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22960                                 write_radio_reg(pi,
22961                                                 RADIO_2056_TX_TX_SSI_MASTER |
22962                                                 jtag_core, 0x0a);
22963                                 write_radio_reg(pi,
22964                                                 RADIO_2056_TX_IQCAL_VCM_HG |
22965                                                 jtag_core, 0x40);
22966                                 write_radio_reg(pi,
22967                                                 RADIO_2056_TX_IQCAL_IDAC |
22968                                                 jtag_core, 0x55);
22969                                 write_radio_reg(pi,
22970                                                 RADIO_2056_TX_TSSI_VCM |
22971                                                 jtag_core, 0x00);
22972                                 write_radio_reg(pi,
22973                                                 RADIO_2056_TX_TX_AMP_DET |
22974                                                 jtag_core, 0x00);
22975
22976                                 if (PHY_IPA(pi)) {
22977                                         write_radio_reg(pi,
22978                                                         RADIO_2056_TX_TX_SSI_MUX
22979                                                         | jtag_core, 0x4);
22980                                         write_radio_reg(pi,
22981                                                         RADIO_2056_TX_TSSIA |
22982                                                         jtag_core, 0x1);
22983                                 } else {
22984                                         write_radio_reg(pi,
22985                                                         RADIO_2056_TX_TX_SSI_MUX
22986                                                         | jtag_core, 0x00);
22987                                         write_radio_reg(pi,
22988                                                         RADIO_2056_TX_TSSIA |
22989                                                         jtag_core, 0x2f);
22990                                 }
22991                                 write_radio_reg(pi,
22992                                                 RADIO_2056_TX_TSSIG | jtag_core,
22993                                                 0x00);
22994                                 write_radio_reg(pi,
22995                                                 RADIO_2056_TX_TSSI_MISC1 |
22996                                                 jtag_core, 0x00);
22997
22998                                 write_radio_reg(pi,
22999                                                 RADIO_2056_TX_TSSI_MISC2 |
23000                                                 jtag_core, 0x00);
23001                                 write_radio_reg(pi,
23002                                                 RADIO_2056_TX_TSSI_MISC3 |
23003                                                 jtag_core, 0x00);
23004                         } else {
23005                                 write_radio_reg(pi,
23006                                                 RADIO_2056_TX_TX_SSI_MASTER |
23007                                                 jtag_core, 0x06);
23008                                 write_radio_reg(pi,
23009                                                 RADIO_2056_TX_IQCAL_VCM_HG |
23010                                                 jtag_core, 0x40);
23011                                 write_radio_reg(pi,
23012                                                 RADIO_2056_TX_IQCAL_IDAC |
23013                                                 jtag_core, 0x55);
23014                                 write_radio_reg(pi,
23015                                                 RADIO_2056_TX_TSSI_VCM |
23016                                                 jtag_core, 0x00);
23017                                 write_radio_reg(pi,
23018                                                 RADIO_2056_TX_TX_AMP_DET |
23019                                                 jtag_core, 0x00);
23020                                 write_radio_reg(pi,
23021                                                 RADIO_2056_TX_TSSIA | jtag_core,
23022                                                 0x00);
23023
23024                                 if (PHY_IPA(pi)) {
23025
23026                                         write_radio_reg(pi,
23027                                                         RADIO_2056_TX_TX_SSI_MUX
23028                                                         | jtag_core, 0x06);
23029                                         if (NREV_LT(pi->pubpi.phy_rev, 5)) {
23030
23031                                                 write_radio_reg(pi,
23032                                                                 RADIO_2056_TX_TSSIG
23033                                                                 | jtag_core,
23034                                                                 0x11);
23035                                         } else {
23036
23037                                                 write_radio_reg(pi,
23038                                                                 RADIO_2056_TX_TSSIG
23039                                                                 | jtag_core,
23040                                                                 0x1);
23041                                         }
23042                                 } else {
23043                                         write_radio_reg(pi,
23044                                                         RADIO_2056_TX_TX_SSI_MUX
23045                                                         | jtag_core, 0x00);
23046                                         write_radio_reg(pi,
23047                                                         RADIO_2056_TX_TSSIG |
23048                                                         jtag_core, 0x20);
23049                                 }
23050
23051                                 write_radio_reg(pi,
23052                                                 RADIO_2056_TX_TSSI_MISC1 |
23053                                                 jtag_core, 0x00);
23054                                 write_radio_reg(pi,
23055                                                 RADIO_2056_TX_TSSI_MISC2 |
23056                                                 jtag_core, 0x00);
23057                                 write_radio_reg(pi,
23058                                                 RADIO_2056_TX_TSSI_MISC3 |
23059                                                 jtag_core, 0x00);
23060                         }
23061                 }
23062         } else {
23063
23064                 pi->tx_rx_cal_radio_saveregs[0] =
23065                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23066                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23067                 pi->tx_rx_cal_radio_saveregs[1] =
23068                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23069                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23070
23071                 pi->tx_rx_cal_radio_saveregs[2] =
23072                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23073                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23074                 pi->tx_rx_cal_radio_saveregs[3] =
23075                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23076                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23077
23078                 pi->tx_rx_cal_radio_saveregs[4] =
23079                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23080                 pi->tx_rx_cal_radio_saveregs[5] =
23081                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23082
23083                 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23084                     0) {
23085
23086                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23087                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23088                 } else {
23089
23090                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23091                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23092                 }
23093
23094                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23095
23096                         or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23097                         or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23098                 } else {
23099
23100                         and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23101                         and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23102                 }
23103         }
23104 }
23105
23106 static void wlc_phy_txcal_radio_cleanup_nphy(phy_info_t *pi)
23107 {
23108         u16 jtag_core, core;
23109
23110         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23111                 for (core = 0; core <= 1; core++) {
23112
23113                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23114                                          TX_SSI_MASTER,
23115                                          pi->
23116                                          tx_rx_cal_radio_saveregs[(core * 11) +
23117                                                                   0]);
23118
23119                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23120                                          pi->
23121                                          tx_rx_cal_radio_saveregs[(core * 11) +
23122                                                                   1]);
23123
23124                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23125                                          pi->
23126                                          tx_rx_cal_radio_saveregs[(core * 11) +
23127                                                                   2]);
23128
23129                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23130                                          pi->
23131                                          tx_rx_cal_radio_saveregs[(core * 11) +
23132                                                                   3]);
23133
23134                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23135                                          pi->
23136                                          tx_rx_cal_radio_saveregs[(core * 11) +
23137                                                                   5]);
23138
23139                         if (pi->pubpi.radiorev != 5)
23140                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23141                                                  TSSIA,
23142                                                  pi->
23143                                                  tx_rx_cal_radio_saveregs[(core
23144                                                                            *
23145                                                                            11) +
23146                                                                           6]);
23147
23148                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23149                                          pi->
23150                                          tx_rx_cal_radio_saveregs[(core * 11) +
23151                                                                   7]);
23152
23153                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23154                                          pi->
23155                                          tx_rx_cal_radio_saveregs[(core * 11) +
23156                                                                   8]);
23157                 }
23158         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23159                 for (core = 0; core <= 1; core++) {
23160                         jtag_core =
23161                             (core ==
23162                              PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23163
23164                         write_radio_reg(pi,
23165                                         RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23166                                         pi->
23167                                         tx_rx_cal_radio_saveregs[(core * 11) +
23168                                                                  0]);
23169
23170                         write_radio_reg(pi,
23171                                         RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23172                                         pi->
23173                                         tx_rx_cal_radio_saveregs[(core * 11) +
23174                                                                  1]);
23175
23176                         write_radio_reg(pi,
23177                                         RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23178                                         pi->
23179                                         tx_rx_cal_radio_saveregs[(core * 11) +
23180                                                                  2]);
23181
23182                         write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23183                                         pi->
23184                                         tx_rx_cal_radio_saveregs[(core * 11) +
23185                                                                  3]);
23186
23187                         write_radio_reg(pi,
23188                                         RADIO_2056_TX_TX_AMP_DET | jtag_core,
23189                                         pi->
23190                                         tx_rx_cal_radio_saveregs[(core * 11) +
23191                                                                  4]);
23192
23193                         write_radio_reg(pi,
23194                                         RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23195                                         pi->
23196                                         tx_rx_cal_radio_saveregs[(core * 11) +
23197                                                                  5]);
23198
23199                         write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23200                                         pi->
23201                                         tx_rx_cal_radio_saveregs[(core * 11) +
23202                                                                  6]);
23203
23204                         write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23205                                         pi->
23206                                         tx_rx_cal_radio_saveregs[(core * 11) +
23207                                                                  7]);
23208
23209                         write_radio_reg(pi,
23210                                         RADIO_2056_TX_TSSI_MISC1 | jtag_core,
23211                                         pi->
23212                                         tx_rx_cal_radio_saveregs[(core * 11) +
23213                                                                  8]);
23214
23215                         write_radio_reg(pi,
23216                                         RADIO_2056_TX_TSSI_MISC2 | jtag_core,
23217                                         pi->
23218                                         tx_rx_cal_radio_saveregs[(core * 11) +
23219                                                                  9]);
23220
23221                         write_radio_reg(pi,
23222                                         RADIO_2056_TX_TSSI_MISC3 | jtag_core,
23223                                         pi->
23224                                         tx_rx_cal_radio_saveregs[(core * 11) +
23225                                                                  10]);
23226                 }
23227         } else {
23228
23229                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
23230                                 pi->tx_rx_cal_radio_saveregs[0]);
23231                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
23232                                 pi->tx_rx_cal_radio_saveregs[1]);
23233                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
23234                                 pi->tx_rx_cal_radio_saveregs[2]);
23235                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
23236                                 pi->tx_rx_cal_radio_saveregs[3]);
23237                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
23238                                 pi->tx_rx_cal_radio_saveregs[4]);
23239                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
23240                                 pi->tx_rx_cal_radio_saveregs[5]);
23241         }
23242 }
23243
23244 static void wlc_phy_txcal_physetup_nphy(phy_info_t *pi)
23245 {
23246         u16 val, mask;
23247
23248         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23249                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23250                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23251
23252                 mask = ((0x3 << 8) | (0x3 << 10));
23253                 val = (0x2 << 8);
23254                 val |= (0x2 << 10);
23255                 mod_phy_reg(pi, 0xa6, mask, val);
23256                 mod_phy_reg(pi, 0xa7, mask, val);
23257
23258                 val = read_phy_reg(pi, 0x8f);
23259                 pi->tx_rx_cal_phy_saveregs[2] = val;
23260                 val |= ((0x1 << 9) | (0x1 << 10));
23261                 write_phy_reg(pi, 0x8f, val);
23262
23263                 val = read_phy_reg(pi, 0xa5);
23264                 pi->tx_rx_cal_phy_saveregs[3] = val;
23265                 val |= ((0x1 << 9) | (0x1 << 10));
23266                 write_phy_reg(pi, 0xa5, val);
23267
23268                 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
23269                 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23270
23271                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23272                                         &val);
23273                 pi->tx_rx_cal_phy_saveregs[5] = val;
23274                 val = 0;
23275                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23276                                          &val);
23277
23278                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23279                                         &val);
23280                 pi->tx_rx_cal_phy_saveregs[6] = val;
23281                 val = 0;
23282                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23283                                          &val);
23284
23285                 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
23286                 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
23287
23288                 if (!(pi->use_int_tx_iqlo_cal_nphy)) {
23289
23290                         wlc_phy_rfctrlintc_override_nphy(pi,
23291                                                          NPHY_RfctrlIntc_override_PA,
23292                                                          1,
23293                                                          RADIO_MIMO_CORESEL_CORE1
23294                                                          |
23295                                                          RADIO_MIMO_CORESEL_CORE2);
23296                 } else {
23297
23298                         wlc_phy_rfctrlintc_override_nphy(pi,
23299                                                          NPHY_RfctrlIntc_override_PA,
23300                                                          0,
23301                                                          RADIO_MIMO_CORESEL_CORE1
23302                                                          |
23303                                                          RADIO_MIMO_CORESEL_CORE2);
23304                 }
23305
23306                 wlc_phy_rfctrlintc_override_nphy(pi,
23307                                                  NPHY_RfctrlIntc_override_TRSW,
23308                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
23309                 wlc_phy_rfctrlintc_override_nphy(pi,
23310                                                  NPHY_RfctrlIntc_override_TRSW,
23311                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
23312
23313                 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
23314                 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
23315                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
23316                             0x29b, (0x1 << 0), (0) << 0);
23317
23318                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
23319                             0x29b, (0x1 << 0), (0) << 0);
23320
23321                 if (NREV_IS(pi->pubpi.phy_rev, 7)
23322                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
23323                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
23324                                                           wlc_phy_read_lpf_bw_ctl_nphy
23325                                                           (pi, 0), 0, 0,
23326                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
23327                 }
23328
23329                 if (pi->use_int_tx_iqlo_cal_nphy
23330                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
23331
23332                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
23333
23334                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
23335                                               1 << 4);
23336
23337                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23338                                         mod_radio_reg(pi,
23339                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE0,
23340                                                       1, 0);
23341                                         mod_radio_reg(pi,
23342                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE1,
23343                                                       1, 0);
23344                                 } else {
23345                                         mod_radio_reg(pi,
23346                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
23347                                                       1, 0);
23348                                         mod_radio_reg(pi,
23349                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
23350                                                       1, 0);
23351                                 }
23352                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
23353                                 wlc_phy_rfctrl_override_nphy_rev7(pi,
23354                                                                   (0x1 << 3), 0,
23355                                                                   0x3, 0,
23356                                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
23357                         }
23358                 }
23359         } else {
23360                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23361                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23362
23363                 mask = ((0x3 << 12) | (0x3 << 14));
23364                 val = (0x2 << 12);
23365                 val |= (0x2 << 14);
23366                 mod_phy_reg(pi, 0xa6, mask, val);
23367                 mod_phy_reg(pi, 0xa7, mask, val);
23368
23369                 val = read_phy_reg(pi, 0xa5);
23370                 pi->tx_rx_cal_phy_saveregs[2] = val;
23371                 val |= ((0x1 << 12) | (0x1 << 13));
23372                 write_phy_reg(pi, 0xa5, val);
23373
23374                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
23375                                         &val);
23376                 pi->tx_rx_cal_phy_saveregs[3] = val;
23377                 val |= 0x2000;
23378                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
23379                                          &val);
23380
23381                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
23382                                         &val);
23383                 pi->tx_rx_cal_phy_saveregs[4] = val;
23384                 val |= 0x2000;
23385                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
23386                                          &val);
23387
23388                 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
23389                 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
23390                 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
23391                 write_phy_reg(pi, 0x91, val);
23392                 write_phy_reg(pi, 0x92, val);
23393         }
23394 }
23395
23396 static void wlc_phy_txcal_phycleanup_nphy(phy_info_t *pi)
23397 {
23398         u16 mask;
23399
23400         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23401                 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
23402                 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
23403                 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
23404                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
23405                 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
23406
23407                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23408                                          &pi->tx_rx_cal_phy_saveregs[5]);
23409                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23410                                          &pi->tx_rx_cal_phy_saveregs[6]);
23411
23412                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
23413                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
23414
23415                 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
23416                 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
23417
23418                 if (NREV_IS(pi->pubpi.phy_rev, 7)
23419                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
23420                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7), 0, 0,
23421                                                           1,
23422                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
23423                 }
23424
23425                 wlc_phy_resetcca_nphy(pi);
23426
23427                 if (pi->use_int_tx_iqlo_cal_nphy
23428                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
23429
23430                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
23431                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23432                                         mod_radio_reg(pi,
23433                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE0,
23434                                                       1, 1);
23435                                         mod_radio_reg(pi,
23436                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE1,
23437                                                       1, 1);
23438                                 } else {
23439                                         mod_radio_reg(pi,
23440                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
23441                                                       1, 1);
23442                                         mod_radio_reg(pi,
23443                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
23444                                                       1, 1);
23445                                 }
23446
23447                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
23448                                               0);
23449                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
23450                                 wlc_phy_rfctrl_override_nphy_rev7(pi,
23451                                                                   (0x1 << 3), 0,
23452                                                                   0x3, 1,
23453                                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
23454                         }
23455                 }
23456         } else {
23457                 mask = ((0x3 << 12) | (0x3 << 14));
23458                 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
23459                 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
23460                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
23461
23462                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
23463                                          &pi->tx_rx_cal_phy_saveregs[3]);
23464
23465                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
23466                                          &pi->tx_rx_cal_phy_saveregs[4]);
23467
23468                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
23469                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
23470         }
23471 }
23472
23473 #define NPHY_CAL_TSSISAMPS      64
23474 #define NPHY_TEST_TONE_FREQ_40MHz 4000
23475 #define NPHY_TEST_TONE_FREQ_20MHz 2500
23476
23477 void
23478 wlc_phy_est_tonepwr_nphy(phy_info_t *pi, s32 *qdBm_pwrbuf, u8 num_samps)
23479 {
23480         u16 tssi_reg;
23481         s32 temp, pwrindex[2];
23482         s32 idle_tssi[2];
23483         s32 rssi_buf[4];
23484         s32 tssival[2];
23485         u8 tssi_type;
23486
23487         tssi_reg = read_phy_reg(pi, 0x1e9);
23488
23489         temp = (s32) (tssi_reg & 0x3f);
23490         idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
23491
23492         temp = (s32) ((tssi_reg >> 8) & 0x3f);
23493         idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
23494
23495         tssi_type =
23496             CHSPEC_IS5G(pi->radio_chanspec) ?
23497             (u8)NPHY_RSSI_SEL_TSSI_5G:(u8)NPHY_RSSI_SEL_TSSI_2G;
23498
23499         wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
23500
23501         tssival[0] = rssi_buf[0] / ((s32) num_samps);
23502         tssival[1] = rssi_buf[2] / ((s32) num_samps);
23503
23504         pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
23505         pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
23506
23507         if (pwrindex[0] < 0) {
23508                 pwrindex[0] = 0;
23509         } else if (pwrindex[0] > 63) {
23510                 pwrindex[0] = 63;
23511         }
23512
23513         if (pwrindex[1] < 0) {
23514                 pwrindex[1] = 0;
23515         } else if (pwrindex[1] > 63) {
23516                 pwrindex[1] = 63;
23517         }
23518
23519         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
23520                                 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
23521         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
23522                                 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
23523 }
23524
23525 static void wlc_phy_internal_cal_txgain_nphy(phy_info_t *pi)
23526 {
23527         u16 txcal_gain[2];
23528
23529         pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
23530         pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
23531         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
23532         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
23533
23534         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23535                                 txcal_gain);
23536
23537         if (CHSPEC_IS2G(pi->radio_chanspec)) {
23538                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
23539                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
23540         } else {
23541                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
23542                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
23543         }
23544
23545         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23546                                  txcal_gain);
23547 }
23548
23549 static void wlc_phy_precal_txgain_nphy(phy_info_t *pi)
23550 {
23551         bool save_bbmult = false;
23552         u8 txcal_index_2057_rev5n7 = 0;
23553         u8 txcal_index_2057_rev3n4n6 = 10;
23554
23555         if (pi->use_int_tx_iqlo_cal_nphy) {
23556                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23557                         if ((pi->pubpi.radiorev == 3) ||
23558                             (pi->pubpi.radiorev == 4) ||
23559                             (pi->pubpi.radiorev == 6)) {
23560
23561                                 pi->nphy_txcal_pwr_idx[0] =
23562                                     txcal_index_2057_rev3n4n6;
23563                                 pi->nphy_txcal_pwr_idx[1] =
23564                                     txcal_index_2057_rev3n4n6;
23565                                 wlc_phy_txpwr_index_nphy(pi, 3,
23566                                                          txcal_index_2057_rev3n4n6,
23567                                                          false);
23568                         } else {
23569
23570                                 pi->nphy_txcal_pwr_idx[0] =
23571                                     txcal_index_2057_rev5n7;
23572                                 pi->nphy_txcal_pwr_idx[1] =
23573                                     txcal_index_2057_rev5n7;
23574                                 wlc_phy_txpwr_index_nphy(pi, 3,
23575                                                          txcal_index_2057_rev5n7,
23576                                                          false);
23577                         }
23578                         save_bbmult = true;
23579
23580                 } else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
23581                         wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
23582                         if (pi->sh->hw_phytxchain != 3) {
23583                                 pi->nphy_txcal_pwr_idx[1] =
23584                                     pi->nphy_txcal_pwr_idx[0];
23585                                 wlc_phy_txpwr_index_nphy(pi, 3,
23586                                                          pi->
23587                                                          nphy_txcal_pwr_idx[0],
23588                                                          true);
23589                                 save_bbmult = true;
23590                         }
23591
23592                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
23593                         if (PHY_IPA(pi)) {
23594                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23595                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
23596                                                                     false);
23597                                 } else {
23598                                         pi->nphy_txcal_pwr_idx[0] = 80;
23599                                         pi->nphy_txcal_pwr_idx[1] = 80;
23600                                         wlc_phy_txpwr_index_nphy(pi, 3, 80,
23601                                                                  false);
23602                                         save_bbmult = true;
23603                                 }
23604                         } else {
23605
23606                                 wlc_phy_internal_cal_txgain_nphy(pi);
23607                                 save_bbmult = true;
23608                         }
23609
23610                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
23611                         if (PHY_IPA(pi)) {
23612                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23613                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
23614                                                                     false);
23615                                 } else {
23616                                         wlc_phy_cal_txgainctrl_nphy(pi, 14,
23617                                                                     false);
23618                                 }
23619                         } else {
23620
23621                                 wlc_phy_internal_cal_txgain_nphy(pi);
23622                                 save_bbmult = true;
23623                         }
23624                 }
23625
23626         } else {
23627                 wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
23628         }
23629
23630         if (save_bbmult) {
23631                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
23632                                         &pi->nphy_txcal_bbmult);
23633         }
23634 }
23635
23636 void
23637 wlc_phy_cal_txgainctrl_nphy(phy_info_t *pi, s32 dBm_targetpower, bool debug)
23638 {
23639         int gainctrl_loopidx;
23640         uint core;
23641         u16 m0m1, curr_m0m1;
23642         s32 delta_power;
23643         s32 txpwrindex;
23644         s32 qdBm_power[2];
23645         u16 orig_BBConfig;
23646         u16 phy_saveregs[4];
23647         u32 freq_test;
23648         u16 ampl_test = 250;
23649         uint stepsize;
23650         bool phyhang_avoid_state = false;
23651
23652         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23653
23654                 stepsize = 2;
23655         } else {
23656
23657                 stepsize = 1;
23658         }
23659
23660         if (CHSPEC_IS40(pi->radio_chanspec)) {
23661                 freq_test = 5000;
23662         } else {
23663                 freq_test = 2500;
23664         }
23665
23666         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
23667         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
23668
23669         if (pi->phyhang_avoid)
23670                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23671
23672         phyhang_avoid_state = pi->phyhang_avoid;
23673         pi->phyhang_avoid = false;
23674
23675         phy_saveregs[0] = read_phy_reg(pi, 0x91);
23676         phy_saveregs[1] = read_phy_reg(pi, 0x92);
23677         phy_saveregs[2] = read_phy_reg(pi, 0xe7);
23678         phy_saveregs[3] = read_phy_reg(pi, 0xec);
23679         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
23680                                          RADIO_MIMO_CORESEL_CORE1 |
23681                                          RADIO_MIMO_CORESEL_CORE2);
23682
23683         if (!debug) {
23684                 wlc_phy_rfctrlintc_override_nphy(pi,
23685                                                  NPHY_RfctrlIntc_override_TRSW,
23686                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
23687                 wlc_phy_rfctrlintc_override_nphy(pi,
23688                                                  NPHY_RfctrlIntc_override_TRSW,
23689                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
23690         } else {
23691                 wlc_phy_rfctrlintc_override_nphy(pi,
23692                                                  NPHY_RfctrlIntc_override_TRSW,
23693                                                  0x1, RADIO_MIMO_CORESEL_CORE1);
23694                 wlc_phy_rfctrlintc_override_nphy(pi,
23695                                                  NPHY_RfctrlIntc_override_TRSW,
23696                                                  0x7, RADIO_MIMO_CORESEL_CORE2);
23697         }
23698
23699         orig_BBConfig = read_phy_reg(pi, 0x01);
23700         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23701
23702         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
23703
23704         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
23705                 txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
23706
23707                 for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
23708                      gainctrl_loopidx++) {
23709                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
23710                                              false);
23711
23712                         if (core == PHY_CORE_0) {
23713                                 curr_m0m1 = m0m1 & 0xff00;
23714                         } else {
23715                                 curr_m0m1 = m0m1 & 0x00ff;
23716                         }
23717
23718                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
23719                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
23720
23721                         udelay(50);
23722
23723                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
23724                                                  NPHY_CAL_TSSISAMPS);
23725
23726                         pi->nphy_bb_mult_save = 0;
23727                         wlc_phy_stopplayback_nphy(pi);
23728
23729                         delta_power = (dBm_targetpower * 4) - qdBm_power[core];
23730
23731                         txpwrindex -= stepsize * delta_power;
23732                         if (txpwrindex < 0) {
23733                                 txpwrindex = 0;
23734                         } else if (txpwrindex > 127) {
23735                                 txpwrindex = 127;
23736                         }
23737
23738                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23739                                 if (NREV_IS(pi->pubpi.phy_rev, 4) &&
23740                                     (pi->srom_fem5g.extpagain == 3)) {
23741                                         if (txpwrindex < 30) {
23742                                                 txpwrindex = 30;
23743                                         }
23744                                 }
23745                         } else {
23746                                 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
23747                                     (pi->srom_fem2g.extpagain == 3)) {
23748                                         if (txpwrindex < 50) {
23749                                                 txpwrindex = 50;
23750                                         }
23751                                 }
23752                         }
23753
23754                         wlc_phy_txpwr_index_nphy(pi, (1 << core),
23755                                                  (u8) txpwrindex, true);
23756                 }
23757
23758                 pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
23759
23760                 if (debug) {
23761                         u16 radio_gain;
23762                         u16 dbg_m0m1;
23763
23764                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
23765
23766                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
23767                                              false);
23768
23769                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
23770                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
23771
23772                         udelay(100);
23773
23774                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
23775                                                  NPHY_CAL_TSSISAMPS);
23776
23777                         wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
23778                                                 &radio_gain);
23779
23780                         mdelay(4000);
23781                         pi->nphy_bb_mult_save = 0;
23782                         wlc_phy_stopplayback_nphy(pi);
23783                 }
23784         }
23785
23786         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
23787         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
23788
23789         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
23790
23791         write_phy_reg(pi, 0x01, orig_BBConfig);
23792
23793         write_phy_reg(pi, 0x91, phy_saveregs[0]);
23794         write_phy_reg(pi, 0x92, phy_saveregs[1]);
23795         write_phy_reg(pi, 0xe7, phy_saveregs[2]);
23796         write_phy_reg(pi, 0xec, phy_saveregs[3]);
23797
23798         pi->phyhang_avoid = phyhang_avoid_state;
23799
23800         if (pi->phyhang_avoid)
23801                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23802 }
23803
23804 static void wlc_phy_update_txcal_ladder_nphy(phy_info_t *pi, u16 core)
23805 {
23806         int index;
23807         u32 bbmult_scale;
23808         u16 bbmult;
23809         u16 tblentry;
23810
23811         nphy_txiqcal_ladder_t ladder_lo[] = {
23812                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
23813                 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
23814                 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
23815         };
23816
23817         nphy_txiqcal_ladder_t ladder_iq[] = {
23818                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
23819                 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
23820                 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
23821         };
23822
23823         bbmult = (core == PHY_CORE_0) ?
23824             ((pi->nphy_txcal_bbmult >> 8) & 0xff) : (pi->
23825                                                      nphy_txcal_bbmult & 0xff);
23826
23827         for (index = 0; index < 18; index++) {
23828                 bbmult_scale = ladder_lo[index].percent * bbmult;
23829                 bbmult_scale /= 100;
23830
23831                 tblentry =
23832                     ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
23833                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
23834                                          &tblentry);
23835
23836                 bbmult_scale = ladder_iq[index].percent * bbmult;
23837                 bbmult_scale /= 100;
23838
23839                 tblentry =
23840                     ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
23841                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
23842                                          16, &tblentry);
23843         }
23844 }
23845
23846 void wlc_phy_cal_perical_nphy_run(phy_info_t *pi, u8 caltype)
23847 {
23848         nphy_txgains_t target_gain;
23849         u8 tx_pwr_ctrl_state;
23850         bool fullcal = true;
23851         bool restore_tx_gain = false;
23852         bool mphase;
23853
23854         if (NORADIO_ENAB(pi->pubpi)) {
23855                 wlc_phy_cal_perical_mphase_reset(pi);
23856                 return;
23857         }
23858
23859         if (PHY_MUTED(pi))
23860                 return;
23861
23862         ASSERT(pi->nphy_perical != PHY_PERICAL_DISABLE);
23863
23864         if (caltype == PHY_PERICAL_AUTO)
23865                 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
23866         else if (caltype == PHY_PERICAL_PARTIAL)
23867                 fullcal = false;
23868
23869         if (pi->cal_type_override != PHY_PERICAL_AUTO) {
23870                 fullcal =
23871                     (pi->cal_type_override == PHY_PERICAL_FULL) ? true : false;
23872         }
23873
23874         if ((pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT)) {
23875                 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
23876                         wlc_phy_cal_perical_mphase_restart(pi);
23877         }
23878
23879         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL)) {
23880                 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
23881         }
23882
23883         wlapi_suspend_mac_and_wait(pi->sh->physhim);
23884
23885         wlc_phyreg_enter((wlc_phy_t *) pi);
23886
23887         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
23888             (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
23889                 pi->nphy_cal_orig_pwr_idx[0] =
23890                     (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
23891                 pi->nphy_cal_orig_pwr_idx[1] =
23892                     (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
23893
23894                 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
23895                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
23896                                                 0x110, 16,
23897                                                 pi->nphy_cal_orig_tx_gain);
23898                 } else {
23899                         pi->nphy_cal_orig_tx_gain[0] = 0;
23900                         pi->nphy_cal_orig_tx_gain[1] = 0;
23901                 }
23902         }
23903         target_gain = wlc_phy_get_tx_gain_nphy(pi);
23904         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
23905         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
23906
23907         if (pi->antsel_type == ANTSEL_2x3)
23908                 wlc_phy_antsel_init((wlc_phy_t *) pi, true);
23909
23910         mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
23911         if (!mphase) {
23912
23913                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23914                         wlc_phy_precal_txgain_nphy(pi);
23915                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
23916                         restore_tx_gain = true;
23917
23918                         target_gain = pi->nphy_cal_target_gain;
23919                 }
23920                 if (BCME_OK ==
23921                     wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal, mphase)) {
23922                         if (PHY_IPA(pi))
23923                                 wlc_phy_a4(pi, true);
23924
23925                         wlc_phyreg_exit((wlc_phy_t *) pi);
23926                         wlapi_enable_mac(pi->sh->physhim);
23927                         wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
23928                                              10000);
23929                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
23930                         wlc_phyreg_enter((wlc_phy_t *) pi);
23931
23932                         if (BCME_OK == wlc_phy_cal_rxiq_nphy(pi, target_gain,
23933                                                              (pi->
23934                                                               first_cal_after_assoc
23935                                                               || (pi->
23936                                                                   cal_type_override
23937                                                                   ==
23938                                                                   PHY_PERICAL_FULL))
23939                                                              ? 2 : 0, false)) {
23940                                 wlc_phy_savecal_nphy(pi);
23941
23942                                 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
23943
23944                                 pi->nphy_perical_last = pi->sh->now;
23945                         }
23946                 }
23947                 if (caltype != PHY_PERICAL_AUTO) {
23948                         wlc_phy_rssi_cal_nphy(pi);
23949                 }
23950
23951                 if (pi->first_cal_after_assoc
23952                     || (pi->cal_type_override == PHY_PERICAL_FULL)) {
23953                         pi->first_cal_after_assoc = false;
23954                         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
23955                         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
23956                 }
23957
23958                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23959                         wlc_phy_radio205x_vcocal_nphy(pi);
23960                 }
23961         } else {
23962                 ASSERT(pi->nphy_perical >= PHY_PERICAL_MPHASE);
23963
23964                 switch (pi->mphase_cal_phase_id) {
23965                 case MPHASE_CAL_STATE_INIT:
23966                         pi->nphy_perical_last = pi->sh->now;
23967                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
23968
23969                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23970                                 wlc_phy_precal_txgain_nphy(pi);
23971                         }
23972                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
23973                         pi->mphase_cal_phase_id++;
23974                         break;
23975
23976                 case MPHASE_CAL_STATE_TXPHASE0:
23977                 case MPHASE_CAL_STATE_TXPHASE1:
23978                 case MPHASE_CAL_STATE_TXPHASE2:
23979                 case MPHASE_CAL_STATE_TXPHASE3:
23980                 case MPHASE_CAL_STATE_TXPHASE4:
23981                 case MPHASE_CAL_STATE_TXPHASE5:
23982                         if ((pi->radar_percal_mask & 0x10) != 0)
23983                                 pi->nphy_rxcal_active = true;
23984
23985                         if (wlc_phy_cal_txiqlo_nphy
23986                             (pi, pi->nphy_cal_target_gain, fullcal,
23987                              true) != BCME_OK) {
23988
23989                                 wlc_phy_cal_perical_mphase_reset(pi);
23990                                 break;
23991                         }
23992
23993                         if (NREV_LE(pi->pubpi.phy_rev, 2) &&
23994                             (pi->mphase_cal_phase_id ==
23995                              MPHASE_CAL_STATE_TXPHASE4)) {
23996                                 pi->mphase_cal_phase_id += 2;
23997                         } else {
23998                                 pi->mphase_cal_phase_id++;
23999                         }
24000                         break;
24001
24002                 case MPHASE_CAL_STATE_PAPDCAL:
24003                         if ((pi->radar_percal_mask & 0x2) != 0)
24004                                 pi->nphy_rxcal_active = true;
24005
24006                         if (PHY_IPA(pi)) {
24007                                 wlc_phy_a4(pi, true);
24008                         }
24009                         pi->mphase_cal_phase_id++;
24010                         break;
24011
24012                 case MPHASE_CAL_STATE_RXCAL:
24013                         if ((pi->radar_percal_mask & 0x1) != 0)
24014                                 pi->nphy_rxcal_active = true;
24015                         if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
24016                                                   (pi->first_cal_after_assoc ||
24017                                                    (pi->cal_type_override ==
24018                                                     PHY_PERICAL_FULL)) ? 2 : 0,
24019                                                   false) == BCME_OK) {
24020                                 wlc_phy_savecal_nphy(pi);
24021                         }
24022
24023                         pi->mphase_cal_phase_id++;
24024                         break;
24025
24026                 case MPHASE_CAL_STATE_RSSICAL:
24027                         if ((pi->radar_percal_mask & 0x4) != 0)
24028                                 pi->nphy_rxcal_active = true;
24029                         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
24030                         wlc_phy_rssi_cal_nphy(pi);
24031
24032                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24033                                 wlc_phy_radio205x_vcocal_nphy(pi);
24034                         }
24035                         restore_tx_gain = true;
24036
24037                         if (pi->first_cal_after_assoc) {
24038                                 pi->mphase_cal_phase_id++;
24039                         } else {
24040                                 wlc_phy_cal_perical_mphase_reset(pi);
24041                         }
24042
24043                         break;
24044
24045                 case MPHASE_CAL_STATE_IDLETSSI:
24046                         if ((pi->radar_percal_mask & 0x8) != 0)
24047                                 pi->nphy_rxcal_active = true;
24048
24049                         if (pi->first_cal_after_assoc) {
24050                                 pi->first_cal_after_assoc = false;
24051                                 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
24052                                 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
24053                         }
24054
24055                         wlc_phy_cal_perical_mphase_reset(pi);
24056                         break;
24057
24058                 default:
24059                         ASSERT(0);
24060                         wlc_phy_cal_perical_mphase_reset(pi);
24061                         break;
24062                 }
24063         }
24064
24065         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24066                 if (restore_tx_gain) {
24067                         if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
24068
24069                                 wlc_phy_txpwr_index_nphy(pi, 1,
24070                                                          pi->
24071                                                          nphy_cal_orig_pwr_idx
24072                                                          [0], false);
24073                                 wlc_phy_txpwr_index_nphy(pi, 2,
24074                                                          pi->
24075                                                          nphy_cal_orig_pwr_idx
24076                                                          [1], false);
24077
24078                                 pi->nphy_txpwrindex[0].index = -1;
24079                                 pi->nphy_txpwrindex[1].index = -1;
24080                         } else {
24081                                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
24082                                                          (s8) (pi->
24083                                                                  nphy_txpwrindex
24084                                                                  [0].
24085                                                                  index_internal),
24086                                                          false);
24087                                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
24088                                                          (s8) (pi->
24089                                                                  nphy_txpwrindex
24090                                                                  [1].
24091                                                                  index_internal),
24092                                                          false);
24093                         }
24094                 }
24095         }
24096
24097         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
24098         wlc_phyreg_exit((wlc_phy_t *) pi);
24099         wlapi_enable_mac(pi->sh->physhim);
24100 }
24101
24102 int
24103 wlc_phy_cal_txiqlo_nphy(phy_info_t *pi, nphy_txgains_t target_gain,
24104                         bool fullcal, bool mphase)
24105 {
24106         u16 val;
24107         u16 tbl_buf[11];
24108         u8 cal_cnt;
24109         u16 cal_cmd;
24110         u8 num_cals, max_cal_cmds;
24111         u16 core_no, cal_type;
24112         u16 diq_start = 0;
24113         u8 phy_bw;
24114         u16 max_val;
24115         u16 tone_freq;
24116         u16 gain_save[2];
24117         u16 cal_gain[2];
24118         nphy_iqcal_params_t cal_params[2];
24119         u32 tbl_len;
24120         void *tbl_ptr;
24121         bool ladder_updated[2];
24122         u8 mphase_cal_lastphase = 0;
24123         int bcmerror = BCME_OK;
24124         bool phyhang_avoid_state = false;
24125
24126         u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
24127                 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
24128                     0x1902,
24129                 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
24130                     0x6407
24131         };
24132
24133         u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
24134                 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
24135                     0x3200,
24136                 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
24137                     0x6407
24138         };
24139
24140         u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
24141                 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
24142                     0x1202,
24143                 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
24144                     0x4707
24145         };
24146
24147         u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
24148                 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
24149                     0x2300,
24150                 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
24151                     0x4707
24152         };
24153
24154         u16 tbl_tx_iqlo_cal_startcoefs[] = {
24155                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
24156                     0x0000
24157         };
24158
24159         u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
24160                 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
24161                 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
24162         };
24163
24164         u16 tbl_tx_iqlo_cal_cmds_recal[] = {
24165                 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
24166                 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
24167         };
24168
24169         u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
24170                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
24171                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
24172                 0x0000
24173         };
24174
24175         u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
24176                 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
24177                 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
24178         };
24179
24180         u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
24181                 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
24182                 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
24183         };
24184
24185         wlc_phy_stay_in_carriersearch_nphy(pi, true);
24186
24187         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
24188                 phyhang_avoid_state = pi->phyhang_avoid;
24189                 pi->phyhang_avoid = false;
24190         }
24191
24192         if (CHSPEC_IS40(pi->radio_chanspec)) {
24193                 phy_bw = 40;
24194         } else {
24195                 phy_bw = 20;
24196         }
24197
24198         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
24199
24200         for (core_no = 0; core_no <= 1; core_no++) {
24201                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
24202                                               &cal_params[core_no]);
24203                 cal_gain[core_no] = cal_params[core_no].cal_gain;
24204         }
24205
24206         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
24207
24208         wlc_phy_txcal_radio_setup_nphy(pi);
24209
24210         wlc_phy_txcal_physetup_nphy(pi);
24211
24212         ladder_updated[0] = ladder_updated[1] = false;
24213         if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
24214               (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
24215                && (CHSPEC_IS2G(pi->radio_chanspec))))) {
24216
24217                 if (phy_bw == 40) {
24218                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
24219                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
24220                 } else {
24221                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
24222                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
24223                 }
24224                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
24225                                          16, tbl_ptr);
24226
24227                 if (phy_bw == 40) {
24228                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
24229                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
24230                 } else {
24231                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
24232                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
24233                 }
24234                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
24235                                          16, tbl_ptr);
24236         }
24237
24238         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24239                 write_phy_reg(pi, 0xc2, 0x8ad9);
24240         } else {
24241                 write_phy_reg(pi, 0xc2, 0x8aa9);
24242         }
24243
24244         max_val = 250;
24245         tone_freq = (phy_bw == 20) ? 2500 : 5000;
24246
24247         if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
24248                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
24249                 bcmerror = BCME_OK;
24250         } else {
24251                 bcmerror =
24252                     wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0, false);
24253         }
24254
24255         if (bcmerror == BCME_OK) {
24256
24257                 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
24258                         tbl_ptr = pi->mphase_txcal_bestcoeffs;
24259                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
24260                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24261
24262                                 tbl_len -= 2;
24263                         }
24264                 } else {
24265                         if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
24266
24267                                 tbl_ptr = pi->nphy_txiqlocal_bestc;
24268                                 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
24269                                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24270
24271                                         tbl_len -= 2;
24272                                 }
24273                         } else {
24274
24275                                 fullcal = true;
24276
24277                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24278                                         tbl_ptr =
24279                                             tbl_tx_iqlo_cal_startcoefs_nphyrev3;
24280                                         tbl_len =
24281                                             ARRAY_SIZE
24282                                             (tbl_tx_iqlo_cal_startcoefs_nphyrev3);
24283                                 } else {
24284                                         tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
24285                                         tbl_len =
24286                                             ARRAY_SIZE
24287                                             (tbl_tx_iqlo_cal_startcoefs);
24288                                 }
24289                         }
24290                 }
24291                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
24292                                          16, tbl_ptr);
24293
24294                 if (fullcal) {
24295                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24296                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
24297                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
24298                 } else {
24299                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24300                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
24301                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
24302                 }
24303
24304                 if (mphase) {
24305                         cal_cnt = pi->mphase_txcal_cmdidx;
24306                         if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds) {
24307                                 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
24308                         } else {
24309                                 num_cals = max_cal_cmds;
24310                         }
24311                 } else {
24312                         cal_cnt = 0;
24313                         num_cals = max_cal_cmds;
24314                 }
24315
24316                 for (; cal_cnt < num_cals; cal_cnt++) {
24317
24318                         if (fullcal) {
24319                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24320                                     tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
24321                                     [cal_cnt] :
24322                                     tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
24323                         } else {
24324                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24325                                     tbl_tx_iqlo_cal_cmds_recal_nphyrev3[cal_cnt]
24326                                     : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
24327                         }
24328
24329                         core_no = ((cal_cmd & 0x3000) >> 12);
24330                         cal_type = ((cal_cmd & 0x0F00) >> 8);
24331
24332                         if (NREV_GE(pi->pubpi.phy_rev, 6) ||
24333                             (NREV_IS(pi->pubpi.phy_rev, 5) &&
24334                              PHY_IPA(pi)
24335                              && (CHSPEC_IS2G(pi->radio_chanspec)))) {
24336                                 if (!ladder_updated[core_no]) {
24337                                         wlc_phy_update_txcal_ladder_nphy(pi,
24338                                                                          core_no);
24339                                         ladder_updated[core_no] = true;
24340                                 }
24341                         }
24342
24343                         val =
24344                             (cal_params[core_no].
24345                              ncorr[cal_type] << 8) | NPHY_N_GCTL;
24346                         write_phy_reg(pi, 0xc1, val);
24347
24348                         if ((cal_type == 1) || (cal_type == 3)
24349                             || (cal_type == 4)) {
24350
24351                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24352                                                         1, 69 + core_no, 16,
24353                                                         tbl_buf);
24354
24355                                 diq_start = tbl_buf[0];
24356
24357                                 tbl_buf[0] = 0;
24358                                 wlc_phy_table_write_nphy(pi,
24359                                                          NPHY_TBL_ID_IQLOCAL, 1,
24360                                                          69 + core_no, 16,
24361                                                          tbl_buf);
24362                         }
24363
24364                         write_phy_reg(pi, 0xc0, cal_cmd);
24365
24366                         SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
24367                                  20000);
24368                         ASSERT((read_phy_reg(pi, 0xc0) & 0xc000) == 0);
24369
24370                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24371                                                 tbl_len, 96, 16, tbl_buf);
24372                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24373                                                  tbl_len, 64, 16, tbl_buf);
24374
24375                         if ((cal_type == 1) || (cal_type == 3)
24376                             || (cal_type == 4)) {
24377
24378                                 tbl_buf[0] = diq_start;
24379
24380                         }
24381
24382                 }
24383
24384                 if (mphase) {
24385                         pi->mphase_txcal_cmdidx = num_cals;
24386                         if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
24387                                 pi->mphase_txcal_cmdidx = 0;
24388                 }
24389
24390                 mphase_cal_lastphase =
24391                     (NREV_LE(pi->pubpi.phy_rev, 2)) ?
24392                     MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
24393
24394                 if (!mphase
24395                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
24396
24397                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
24398                                                 16, tbl_buf);
24399                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
24400                                                  16, tbl_buf);
24401
24402                         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
24403
24404                                 tbl_buf[0] = 0;
24405                                 tbl_buf[1] = 0;
24406                                 tbl_buf[2] = 0;
24407                                 tbl_buf[3] = 0;
24408
24409                         }
24410                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
24411                                                  16, tbl_buf);
24412
24413                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
24414                                                 16, tbl_buf);
24415                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
24416                                                  16, tbl_buf);
24417
24418                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
24419                                                  16, tbl_buf);
24420
24421                         tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
24422                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24423
24424                                 tbl_len -= 2;
24425                         }
24426                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24427                                                 tbl_len, 96, 16,
24428                                                 pi->nphy_txiqlocal_bestc);
24429
24430                         pi->nphy_txiqlocal_coeffsvalid = true;
24431                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
24432                 } else {
24433                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
24434                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24435
24436                                 tbl_len -= 2;
24437                         }
24438                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24439                                                 tbl_len, 96, 16,
24440                                                 pi->mphase_txcal_bestcoeffs);
24441                 }
24442
24443                 wlc_phy_stopplayback_nphy(pi);
24444
24445                 write_phy_reg(pi, 0xc2, 0x0000);
24446
24447         }
24448
24449         wlc_phy_txcal_phycleanup_nphy(pi);
24450
24451         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
24452                                  gain_save);
24453
24454         wlc_phy_txcal_radio_cleanup_nphy(pi);
24455
24456         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
24457                 if (!mphase
24458                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
24459                         wlc_phy_tx_iq_war_nphy(pi);
24460         }
24461
24462         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
24463                 pi->phyhang_avoid = phyhang_avoid_state;
24464         }
24465
24466         wlc_phy_stay_in_carriersearch_nphy(pi, false);
24467
24468         return bcmerror;
24469 }
24470
24471 static void wlc_phy_reapply_txcal_coeffs_nphy(phy_info_t *pi)
24472 {
24473         u16 tbl_buf[7];
24474
24475         ASSERT(NREV_LT(pi->pubpi.phy_rev, 2));
24476
24477         if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
24478             (pi->nphy_txiqlocal_coeffsvalid)) {
24479                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24480                                         ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
24481
24482                 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
24483                     (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
24484                     (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
24485                     (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
24486
24487                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
24488                                                  16, pi->nphy_txiqlocal_bestc);
24489
24490                         tbl_buf[0] = 0;
24491                         tbl_buf[1] = 0;
24492                         tbl_buf[2] = 0;
24493                         tbl_buf[3] = 0;
24494                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
24495                                                  16, tbl_buf);
24496
24497                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
24498                                                  16,
24499                                                  &pi->nphy_txiqlocal_bestc[5]);
24500
24501                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
24502                                                  16,
24503                                                  &pi->nphy_txiqlocal_bestc[5]);
24504                 }
24505         }
24506 }
24507
24508 static void wlc_phy_tx_iq_war_nphy(phy_info_t *pi)
24509 {
24510         nphy_iq_comp_t tx_comp;
24511
24512         wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, (void *)&tx_comp);
24513
24514         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
24515         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
24516         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
24517         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
24518 }
24519
24520 void
24521 wlc_phy_rx_iq_coeffs_nphy(phy_info_t *pi, u8 write, nphy_iq_comp_t *pcomp)
24522 {
24523         if (write) {
24524                 write_phy_reg(pi, 0x9a, pcomp->a0);
24525                 write_phy_reg(pi, 0x9b, pcomp->b0);
24526                 write_phy_reg(pi, 0x9c, pcomp->a1);
24527                 write_phy_reg(pi, 0x9d, pcomp->b1);
24528         } else {
24529                 pcomp->a0 = read_phy_reg(pi, 0x9a);
24530                 pcomp->b0 = read_phy_reg(pi, 0x9b);
24531                 pcomp->a1 = read_phy_reg(pi, 0x9c);
24532                 pcomp->b1 = read_phy_reg(pi, 0x9d);
24533         }
24534 }
24535
24536 void
24537 wlc_phy_rx_iq_est_nphy(phy_info_t *pi, phy_iq_est_t *est, u16 num_samps,
24538                        u8 wait_time, u8 wait_for_crs)
24539 {
24540         u8 core;
24541
24542         write_phy_reg(pi, 0x12b, num_samps);
24543         mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
24544         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
24545                     (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
24546
24547         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
24548
24549         SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
24550                  10000);
24551         ASSERT((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0);
24552
24553         if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
24554                 ASSERT(pi->pubpi.phy_corenum <= PHY_CORE_MAX);
24555                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24556                         est[core].i_pwr =
24557                             (read_phy_reg(pi, NPHY_IqestipwrAccHi(core)) << 16)
24558                             | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
24559                         est[core].q_pwr =
24560                             (read_phy_reg(pi, NPHY_IqestqpwrAccHi(core)) << 16)
24561                             | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
24562                         est[core].iq_prod =
24563                             (read_phy_reg(pi, NPHY_IqestIqAccHi(core)) << 16) |
24564                             read_phy_reg(pi, NPHY_IqestIqAccLo(core));
24565                 }
24566         }
24567 }
24568
24569 #define CAL_RETRY_CNT 2
24570 static void wlc_phy_calc_rx_iq_comp_nphy(phy_info_t *pi, u8 core_mask)
24571 {
24572         u8 curr_core;
24573         phy_iq_est_t est[PHY_CORE_MAX];
24574         nphy_iq_comp_t old_comp, new_comp;
24575         s32 iq = 0;
24576         u32 ii = 0, qq = 0;
24577         s16 iq_nbits, qq_nbits, brsh, arsh;
24578         s32 a, b, temp;
24579         int bcmerror = BCME_OK;
24580         uint cal_retry = 0;
24581
24582         if (core_mask == 0x0)
24583                 return;
24584
24585         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
24586         new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
24587         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
24588
24589  cal_try:
24590         wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
24591
24592         new_comp = old_comp;
24593
24594         for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
24595
24596                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
24597                         iq = est[curr_core].iq_prod;
24598                         ii = est[curr_core].i_pwr;
24599                         qq = est[curr_core].q_pwr;
24600                 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
24601                         iq = est[curr_core].iq_prod;
24602                         ii = est[curr_core].i_pwr;
24603                         qq = est[curr_core].q_pwr;
24604                 } else {
24605                         continue;
24606                 }
24607
24608                 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
24609                         bcmerror = BCME_ERROR;
24610                         break;
24611                 }
24612
24613                 iq_nbits = wlc_phy_nbits(iq);
24614                 qq_nbits = wlc_phy_nbits(qq);
24615
24616                 arsh = 10 - (30 - iq_nbits);
24617                 if (arsh >= 0) {
24618                         a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
24619                         temp = (s32) (ii >> arsh);
24620                         if (temp == 0) {
24621                                 bcmerror = BCME_ERROR;
24622                                 break;
24623                         }
24624                 } else {
24625                         a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
24626                         temp = (s32) (ii << -arsh);
24627                         if (temp == 0) {
24628                                 bcmerror = BCME_ERROR;
24629                                 break;
24630                         }
24631                 }
24632
24633                 a /= temp;
24634
24635                 brsh = qq_nbits - 31 + 20;
24636                 if (brsh >= 0) {
24637                         b = (qq << (31 - qq_nbits));
24638                         temp = (s32) (ii >> brsh);
24639                         if (temp == 0) {
24640                                 bcmerror = BCME_ERROR;
24641                                 break;
24642                         }
24643                 } else {
24644                         b = (qq << (31 - qq_nbits));
24645                         temp = (s32) (ii << -brsh);
24646                         if (temp == 0) {
24647                                 bcmerror = BCME_ERROR;
24648                                 break;
24649                         }
24650                 }
24651                 b /= temp;
24652                 b -= a * a;
24653                 b = (s32) wlc_phy_sqrt_int((u32) b);
24654                 b -= (1 << 10);
24655
24656                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
24657                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24658                                 new_comp.a0 = (s16) a & 0x3ff;
24659                                 new_comp.b0 = (s16) b & 0x3ff;
24660                         } else {
24661
24662                                 new_comp.a0 = (s16) b & 0x3ff;
24663                                 new_comp.b0 = (s16) a & 0x3ff;
24664                         }
24665                 }
24666                 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
24667                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24668                                 new_comp.a1 = (s16) a & 0x3ff;
24669                                 new_comp.b1 = (s16) b & 0x3ff;
24670                         } else {
24671
24672                                 new_comp.a1 = (s16) b & 0x3ff;
24673                                 new_comp.b1 = (s16) a & 0x3ff;
24674                         }
24675                 }
24676         }
24677
24678         if (bcmerror != BCME_OK) {
24679                 printk("%s: Failed, cnt = %d\n", __func__, cal_retry);
24680
24681                 if (cal_retry < CAL_RETRY_CNT) {
24682                         cal_retry++;
24683                         goto cal_try;
24684                 }
24685
24686                 new_comp = old_comp;
24687         } else if (cal_retry > 0) {
24688         }
24689
24690         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
24691 }
24692
24693 static void wlc_phy_rxcal_radio_setup_nphy(phy_info_t *pi, u8 rx_core)
24694 {
24695         u16 offtune_val;
24696         u16 bias_g = 0;
24697         u16 bias_a = 0;
24698
24699         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24700                 if (rx_core == PHY_CORE_0) {
24701                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24702                                 pi->tx_rx_cal_radio_saveregs[0] =
24703                                     read_radio_reg(pi,
24704                                                    RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
24705                                 pi->tx_rx_cal_radio_saveregs[1] =
24706                                     read_radio_reg(pi,
24707                                                    RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
24708
24709                                 write_radio_reg(pi,
24710                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
24711                                                 0x3);
24712                                 write_radio_reg(pi,
24713                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
24714                                                 0xaf);
24715
24716                         } else {
24717                                 pi->tx_rx_cal_radio_saveregs[0] =
24718                                     read_radio_reg(pi,
24719                                                    RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
24720                                 pi->tx_rx_cal_radio_saveregs[1] =
24721                                     read_radio_reg(pi,
24722                                                    RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
24723
24724                                 write_radio_reg(pi,
24725                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
24726                                                 0x3);
24727                                 write_radio_reg(pi,
24728                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
24729                                                 0x7f);
24730                         }
24731
24732                 } else {
24733                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24734                                 pi->tx_rx_cal_radio_saveregs[0] =
24735                                     read_radio_reg(pi,
24736                                                    RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
24737                                 pi->tx_rx_cal_radio_saveregs[1] =
24738                                     read_radio_reg(pi,
24739                                                    RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
24740
24741                                 write_radio_reg(pi,
24742                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
24743                                                 0x3);
24744                                 write_radio_reg(pi,
24745                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
24746                                                 0xaf);
24747
24748                         } else {
24749                                 pi->tx_rx_cal_radio_saveregs[0] =
24750                                     read_radio_reg(pi,
24751                                                    RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
24752                                 pi->tx_rx_cal_radio_saveregs[1] =
24753                                     read_radio_reg(pi,
24754                                                    RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
24755
24756                                 write_radio_reg(pi,
24757                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
24758                                                 0x3);
24759                                 write_radio_reg(pi,
24760                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
24761                                                 0x7f);
24762                         }
24763                 }
24764
24765         } else {
24766                 if (rx_core == PHY_CORE_0) {
24767                         pi->tx_rx_cal_radio_saveregs[0] =
24768                             read_radio_reg(pi,
24769                                            RADIO_2056_TX_RXIQCAL_TXMUX |
24770                                            RADIO_2056_TX1);
24771                         pi->tx_rx_cal_radio_saveregs[1] =
24772                             read_radio_reg(pi,
24773                                            RADIO_2056_RX_RXIQCAL_RXMUX |
24774                                            RADIO_2056_RX0);
24775
24776                         if (pi->pubpi.radiorev >= 5) {
24777                                 pi->tx_rx_cal_radio_saveregs[2] =
24778                                     read_radio_reg(pi,
24779                                                    RADIO_2056_RX_RXSPARE2 |
24780                                                    RADIO_2056_RX0);
24781                                 pi->tx_rx_cal_radio_saveregs[3] =
24782                                     read_radio_reg(pi,
24783                                                    RADIO_2056_TX_TXSPARE2 |
24784                                                    RADIO_2056_TX1);
24785                         }
24786
24787                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24788
24789                                 if (pi->pubpi.radiorev >= 5) {
24790                                         pi->tx_rx_cal_radio_saveregs[4] =
24791                                             read_radio_reg(pi,
24792                                                            RADIO_2056_RX_LNAA_MASTER
24793                                                            | RADIO_2056_RX0);
24794
24795                                         write_radio_reg(pi,
24796                                                         RADIO_2056_RX_LNAA_MASTER
24797                                                         | RADIO_2056_RX0, 0x40);
24798
24799                                         write_radio_reg(pi,
24800                                                         RADIO_2056_TX_TXSPARE2 |
24801                                                         RADIO_2056_TX1, bias_a);
24802
24803                                         write_radio_reg(pi,
24804                                                         RADIO_2056_RX_RXSPARE2 |
24805                                                         RADIO_2056_RX0, bias_a);
24806                                 } else {
24807                                         pi->tx_rx_cal_radio_saveregs[4] =
24808                                             read_radio_reg(pi,
24809                                                            RADIO_2056_RX_LNAA_TUNE
24810                                                            | RADIO_2056_RX0);
24811
24812                                         offtune_val =
24813                                             (pi->
24814                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24815                                             >> 8;
24816                                         offtune_val =
24817                                             (offtune_val <= 0x7) ? 0xF : 0;
24818
24819                                         mod_radio_reg(pi,
24820                                                       RADIO_2056_RX_LNAA_TUNE |
24821                                                       RADIO_2056_RX0, 0xF0,
24822                                                       (offtune_val << 8));
24823                                 }
24824
24825                                 write_radio_reg(pi,
24826                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24827                                                 RADIO_2056_TX1, 0x9);
24828                                 write_radio_reg(pi,
24829                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24830                                                 RADIO_2056_RX0, 0x9);
24831                         } else {
24832                                 if (pi->pubpi.radiorev >= 5) {
24833                                         pi->tx_rx_cal_radio_saveregs[4] =
24834                                             read_radio_reg(pi,
24835                                                            RADIO_2056_RX_LNAG_MASTER
24836                                                            | RADIO_2056_RX0);
24837
24838                                         write_radio_reg(pi,
24839                                                         RADIO_2056_RX_LNAG_MASTER
24840                                                         | RADIO_2056_RX0, 0x40);
24841
24842                                         write_radio_reg(pi,
24843                                                         RADIO_2056_TX_TXSPARE2 |
24844                                                         RADIO_2056_TX1, bias_g);
24845
24846                                         write_radio_reg(pi,
24847                                                         RADIO_2056_RX_RXSPARE2 |
24848                                                         RADIO_2056_RX0, bias_g);
24849
24850                                 } else {
24851                                         pi->tx_rx_cal_radio_saveregs[4] =
24852                                             read_radio_reg(pi,
24853                                                            RADIO_2056_RX_LNAG_TUNE
24854                                                            | RADIO_2056_RX0);
24855
24856                                         offtune_val =
24857                                             (pi->
24858                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24859                                             >> 8;
24860                                         offtune_val =
24861                                             (offtune_val <= 0x7) ? 0xF : 0;
24862
24863                                         mod_radio_reg(pi,
24864                                                       RADIO_2056_RX_LNAG_TUNE |
24865                                                       RADIO_2056_RX0, 0xF0,
24866                                                       (offtune_val << 8));
24867                                 }
24868
24869                                 write_radio_reg(pi,
24870                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24871                                                 RADIO_2056_TX1, 0x6);
24872                                 write_radio_reg(pi,
24873                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24874                                                 RADIO_2056_RX0, 0x6);
24875                         }
24876
24877                 } else {
24878                         pi->tx_rx_cal_radio_saveregs[0] =
24879                             read_radio_reg(pi,
24880                                            RADIO_2056_TX_RXIQCAL_TXMUX |
24881                                            RADIO_2056_TX0);
24882                         pi->tx_rx_cal_radio_saveregs[1] =
24883                             read_radio_reg(pi,
24884                                            RADIO_2056_RX_RXIQCAL_RXMUX |
24885                                            RADIO_2056_RX1);
24886
24887                         if (pi->pubpi.radiorev >= 5) {
24888                                 pi->tx_rx_cal_radio_saveregs[2] =
24889                                     read_radio_reg(pi,
24890                                                    RADIO_2056_RX_RXSPARE2 |
24891                                                    RADIO_2056_RX1);
24892                                 pi->tx_rx_cal_radio_saveregs[3] =
24893                                     read_radio_reg(pi,
24894                                                    RADIO_2056_TX_TXSPARE2 |
24895                                                    RADIO_2056_TX0);
24896                         }
24897
24898                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24899
24900                                 if (pi->pubpi.radiorev >= 5) {
24901                                         pi->tx_rx_cal_radio_saveregs[4] =
24902                                             read_radio_reg(pi,
24903                                                            RADIO_2056_RX_LNAA_MASTER
24904                                                            | RADIO_2056_RX1);
24905
24906                                         write_radio_reg(pi,
24907                                                         RADIO_2056_RX_LNAA_MASTER
24908                                                         | RADIO_2056_RX1, 0x40);
24909
24910                                         write_radio_reg(pi,
24911                                                         RADIO_2056_TX_TXSPARE2 |
24912                                                         RADIO_2056_TX0, bias_a);
24913
24914                                         write_radio_reg(pi,
24915                                                         RADIO_2056_RX_RXSPARE2 |
24916                                                         RADIO_2056_RX1, bias_a);
24917                                 } else {
24918                                         pi->tx_rx_cal_radio_saveregs[4] =
24919                                             read_radio_reg(pi,
24920                                                            RADIO_2056_RX_LNAA_TUNE
24921                                                            | RADIO_2056_RX1);
24922
24923                                         offtune_val =
24924                                             (pi->
24925                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24926                                             >> 8;
24927                                         offtune_val =
24928                                             (offtune_val <= 0x7) ? 0xF : 0;
24929
24930                                         mod_radio_reg(pi,
24931                                                       RADIO_2056_RX_LNAA_TUNE |
24932                                                       RADIO_2056_RX1, 0xF0,
24933                                                       (offtune_val << 8));
24934                                 }
24935
24936                                 write_radio_reg(pi,
24937                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24938                                                 RADIO_2056_TX0, 0x9);
24939                                 write_radio_reg(pi,
24940                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24941                                                 RADIO_2056_RX1, 0x9);
24942                         } else {
24943                                 if (pi->pubpi.radiorev >= 5) {
24944                                         pi->tx_rx_cal_radio_saveregs[4] =
24945                                             read_radio_reg(pi,
24946                                                            RADIO_2056_RX_LNAG_MASTER
24947                                                            | RADIO_2056_RX1);
24948
24949                                         write_radio_reg(pi,
24950                                                         RADIO_2056_RX_LNAG_MASTER
24951                                                         | RADIO_2056_RX1, 0x40);
24952
24953                                         write_radio_reg(pi,
24954                                                         RADIO_2056_TX_TXSPARE2 |
24955                                                         RADIO_2056_TX0, bias_g);
24956
24957                                         write_radio_reg(pi,
24958                                                         RADIO_2056_RX_RXSPARE2 |
24959                                                         RADIO_2056_RX1, bias_g);
24960                                 } else {
24961                                         pi->tx_rx_cal_radio_saveregs[4] =
24962                                             read_radio_reg(pi,
24963                                                            RADIO_2056_RX_LNAG_TUNE
24964                                                            | RADIO_2056_RX1);
24965
24966                                         offtune_val =
24967                                             (pi->
24968                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24969                                             >> 8;
24970                                         offtune_val =
24971                                             (offtune_val <= 0x7) ? 0xF : 0;
24972
24973                                         mod_radio_reg(pi,
24974                                                       RADIO_2056_RX_LNAG_TUNE |
24975                                                       RADIO_2056_RX1, 0xF0,
24976                                                       (offtune_val << 8));
24977                                 }
24978
24979                                 write_radio_reg(pi,
24980                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24981                                                 RADIO_2056_TX0, 0x6);
24982                                 write_radio_reg(pi,
24983                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24984                                                 RADIO_2056_RX1, 0x6);
24985                         }
24986                 }
24987         }
24988 }
24989
24990 static void wlc_phy_rxcal_radio_cleanup_nphy(phy_info_t *pi, u8 rx_core)
24991 {
24992         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24993                 if (rx_core == PHY_CORE_0) {
24994                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24995                                 write_radio_reg(pi,
24996                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
24997                                                 pi->
24998                                                 tx_rx_cal_radio_saveregs[0]);
24999                                 write_radio_reg(pi,
25000                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
25001                                                 pi->
25002                                                 tx_rx_cal_radio_saveregs[1]);
25003
25004                         } else {
25005                                 write_radio_reg(pi,
25006                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
25007                                                 pi->
25008                                                 tx_rx_cal_radio_saveregs[0]);
25009                                 write_radio_reg(pi,
25010                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
25011                                                 pi->
25012                                                 tx_rx_cal_radio_saveregs[1]);
25013                         }
25014
25015                 } else {
25016                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25017                                 write_radio_reg(pi,
25018                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
25019                                                 pi->
25020                                                 tx_rx_cal_radio_saveregs[0]);
25021                                 write_radio_reg(pi,
25022                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
25023                                                 pi->
25024                                                 tx_rx_cal_radio_saveregs[1]);
25025
25026                         } else {
25027                                 write_radio_reg(pi,
25028                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
25029                                                 pi->
25030                                                 tx_rx_cal_radio_saveregs[0]);
25031                                 write_radio_reg(pi,
25032                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
25033                                                 pi->
25034                                                 tx_rx_cal_radio_saveregs[1]);
25035                         }
25036                 }
25037
25038         } else {
25039                 if (rx_core == PHY_CORE_0) {
25040                         write_radio_reg(pi,
25041                                         RADIO_2056_TX_RXIQCAL_TXMUX |
25042                                         RADIO_2056_TX1,
25043                                         pi->tx_rx_cal_radio_saveregs[0]);
25044
25045                         write_radio_reg(pi,
25046                                         RADIO_2056_RX_RXIQCAL_RXMUX |
25047                                         RADIO_2056_RX0,
25048                                         pi->tx_rx_cal_radio_saveregs[1]);
25049
25050                         if (pi->pubpi.radiorev >= 5) {
25051                                 write_radio_reg(pi,
25052                                                 RADIO_2056_RX_RXSPARE2 |
25053                                                 RADIO_2056_RX0,
25054                                                 pi->
25055                                                 tx_rx_cal_radio_saveregs[2]);
25056
25057                                 write_radio_reg(pi,
25058                                                 RADIO_2056_TX_TXSPARE2 |
25059                                                 RADIO_2056_TX1,
25060                                                 pi->
25061                                                 tx_rx_cal_radio_saveregs[3]);
25062                         }
25063
25064                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25065                                 if (pi->pubpi.radiorev >= 5) {
25066                                         write_radio_reg(pi,
25067                                                         RADIO_2056_RX_LNAA_MASTER
25068                                                         | RADIO_2056_RX0,
25069                                                         pi->
25070                                                         tx_rx_cal_radio_saveregs
25071                                                         [4]);
25072                                 } else {
25073                                         write_radio_reg(pi,
25074                                                         RADIO_2056_RX_LNAA_TUNE
25075                                                         | RADIO_2056_RX0,
25076                                                         pi->
25077                                                         tx_rx_cal_radio_saveregs
25078                                                         [4]);
25079                                 }
25080                         } else {
25081                                 if (pi->pubpi.radiorev >= 5) {
25082                                         write_radio_reg(pi,
25083                                                         RADIO_2056_RX_LNAG_MASTER
25084                                                         | RADIO_2056_RX0,
25085                                                         pi->
25086                                                         tx_rx_cal_radio_saveregs
25087                                                         [4]);
25088                                 } else {
25089                                         write_radio_reg(pi,
25090                                                         RADIO_2056_RX_LNAG_TUNE
25091                                                         | RADIO_2056_RX0,
25092                                                         pi->
25093                                                         tx_rx_cal_radio_saveregs
25094                                                         [4]);
25095                                 }
25096                         }
25097
25098                 } else {
25099                         write_radio_reg(pi,
25100                                         RADIO_2056_TX_RXIQCAL_TXMUX |
25101                                         RADIO_2056_TX0,
25102                                         pi->tx_rx_cal_radio_saveregs[0]);
25103
25104                         write_radio_reg(pi,
25105                                         RADIO_2056_RX_RXIQCAL_RXMUX |
25106                                         RADIO_2056_RX1,
25107                                         pi->tx_rx_cal_radio_saveregs[1]);
25108
25109                         if (pi->pubpi.radiorev >= 5) {
25110                                 write_radio_reg(pi,
25111                                                 RADIO_2056_RX_RXSPARE2 |
25112                                                 RADIO_2056_RX1,
25113                                                 pi->
25114                                                 tx_rx_cal_radio_saveregs[2]);
25115
25116                                 write_radio_reg(pi,
25117                                                 RADIO_2056_TX_TXSPARE2 |
25118                                                 RADIO_2056_TX0,
25119                                                 pi->
25120                                                 tx_rx_cal_radio_saveregs[3]);
25121                         }
25122
25123                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25124                                 if (pi->pubpi.radiorev >= 5) {
25125                                         write_radio_reg(pi,
25126                                                         RADIO_2056_RX_LNAA_MASTER
25127                                                         | RADIO_2056_RX1,
25128                                                         pi->
25129                                                         tx_rx_cal_radio_saveregs
25130                                                         [4]);
25131                                 } else {
25132                                         write_radio_reg(pi,
25133                                                         RADIO_2056_RX_LNAA_TUNE
25134                                                         | RADIO_2056_RX1,
25135                                                         pi->
25136                                                         tx_rx_cal_radio_saveregs
25137                                                         [4]);
25138                                 }
25139                         } else {
25140                                 if (pi->pubpi.radiorev >= 5) {
25141                                         write_radio_reg(pi,
25142                                                         RADIO_2056_RX_LNAG_MASTER
25143                                                         | RADIO_2056_RX1,
25144                                                         pi->
25145                                                         tx_rx_cal_radio_saveregs
25146                                                         [4]);
25147                                 } else {
25148                                         write_radio_reg(pi,
25149                                                         RADIO_2056_RX_LNAG_TUNE
25150                                                         | RADIO_2056_RX1,
25151                                                         pi->
25152                                                         tx_rx_cal_radio_saveregs
25153                                                         [4]);
25154                                 }
25155                         }
25156                 }
25157         }
25158 }
25159
25160 static void wlc_phy_rxcal_physetup_nphy(phy_info_t *pi, u8 rx_core)
25161 {
25162         u8 tx_core;
25163         u16 rx_antval, tx_antval;
25164
25165         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25166
25167                 tx_core = rx_core;
25168         } else {
25169                 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
25170         }
25171
25172         pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
25173         pi->tx_rx_cal_phy_saveregs[1] =
25174             read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
25175         pi->tx_rx_cal_phy_saveregs[2] =
25176             read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
25177         pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
25178         pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
25179         pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
25180         pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
25181         pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
25182         pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
25183         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25184                 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
25185                 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
25186                 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
25187                 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
25188         }
25189
25190         pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
25191         pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
25192         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25193                     0x29b, (0x1 << 0), (0) << 0);
25194
25195         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25196                     0x29b, (0x1 << 0), (0) << 0);
25197
25198         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25199
25200                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
25201
25202                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
25203
25204         } else {
25205
25206                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
25207                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
25208                 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
25209                 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
25210         }
25211
25212         mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
25213         mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
25214                     (0x1 << 2), (0x1 << 2));
25215         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
25216                 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
25217                             (0x1 << 0) | (0x1 << 1), 0);
25218                 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
25219                             0x8f : 0xa5,
25220                             (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
25221         }
25222
25223         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
25224                                          RADIO_MIMO_CORESEL_CORE1 |
25225                                          RADIO_MIMO_CORESEL_CORE2);
25226
25227         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25228                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25229                                                   0, 0, 0,
25230                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
25231                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
25232                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25233                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
25234                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25235                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
25236                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25237                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
25238                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
25239                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
25240                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25241                 if (CHSPEC_IS40(pi->radio_chanspec)) {
25242                         wlc_phy_rfctrl_override_nphy_rev7(pi,
25243                                                           (0x1 << 7),
25244                                                           2, 0, 0,
25245                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
25246                 } else {
25247                         wlc_phy_rfctrl_override_nphy_rev7(pi,
25248                                                           (0x1 << 7),
25249                                                           0, 0, 0,
25250                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
25251                 }
25252                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
25253                                                   0, 0, 0,
25254                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25255                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
25256                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25257         } else {
25258                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
25259         }
25260
25261         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
25262
25263         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25264
25265                 wlc_phy_rfctrlintc_override_nphy(pi,
25266                                                  NPHY_RfctrlIntc_override_TRSW,
25267                                                  0x1, rx_core + 1);
25268         } else {
25269
25270                 if (rx_core == PHY_CORE_0) {
25271                         rx_antval = 0x1;
25272                         tx_antval = 0x8;
25273                 } else {
25274                         rx_antval = 0x4;
25275                         tx_antval = 0x2;
25276                 }
25277
25278                 wlc_phy_rfctrlintc_override_nphy(pi,
25279                                                  NPHY_RfctrlIntc_override_TRSW,
25280                                                  rx_antval, rx_core + 1);
25281                 wlc_phy_rfctrlintc_override_nphy(pi,
25282                                                  NPHY_RfctrlIntc_override_TRSW,
25283                                                  tx_antval, tx_core + 1);
25284         }
25285 }
25286
25287 static void wlc_phy_rxcal_phycleanup_nphy(phy_info_t *pi, u8 rx_core)
25288 {
25289
25290         write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
25291         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
25292                       pi->tx_rx_cal_phy_saveregs[1]);
25293         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
25294                       pi->tx_rx_cal_phy_saveregs[2]);
25295         write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
25296         write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
25297
25298         write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
25299         write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
25300         write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
25301         write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
25302         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25303                 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
25304                 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
25305                 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
25306                 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
25307         }
25308
25309         write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
25310         write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
25311 }
25312
25313 static void
25314 wlc_phy_rxcal_gainctrl_nphy_rev5(phy_info_t *pi, u8 rx_core,
25315                                  u16 *rxgain, u8 cal_type)
25316 {
25317
25318         u16 num_samps;
25319         phy_iq_est_t est[PHY_CORE_MAX];
25320         u8 tx_core;
25321         nphy_iq_comp_t save_comp, zero_comp;
25322         u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0, thresh_pwr =
25323             10000;
25324         s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
25325         bool gainctrl_done = false;
25326         u8 mix_tia_gain = 3;
25327         s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
25328         s8 curr_gaintbl_index = 3;
25329         u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
25330         nphy_ipa_txrxgain_t *nphy_rxcal_gaintbl;
25331         u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
25332         int fine_gain_idx;
25333         s8 txpwrindex;
25334         u16 nphy_rxcal_txgain[2];
25335
25336         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25337
25338                 tx_core = rx_core;
25339         } else {
25340                 tx_core = 1 - rx_core;
25341         }
25342
25343         num_samps = 1024;
25344         desired_log2_pwr = (cal_type == 0) ? 13 : 13;
25345
25346         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
25347         zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
25348         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
25349
25350         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25351                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25352                         mix_tia_gain = 3;
25353                 } else if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25354                         mix_tia_gain = 4;
25355                 } else {
25356                         mix_tia_gain = 6;
25357                 }
25358                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25359                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
25360                 } else {
25361                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
25362                 }
25363         } else {
25364                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25365                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
25366                 } else {
25367                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
25368                 }
25369         }
25370
25371         do {
25372
25373                 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
25374                     0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
25375                 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
25376                 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
25377                 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
25378                 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
25379                 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
25380
25381                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25382                         wlc_phy_rfctrl_override_1tomany_nphy(pi,
25383                                                              NPHY_REV7_RfctrlOverride_cmd_rxgain,
25384                                                              ((lpf_biq1 << 12) |
25385                                                               (lpf_biq0 << 8) |
25386                                                               (mix_tia_gain <<
25387                                                                4) | (lna2 << 2)
25388                                                               | lna1), 0x3, 0);
25389                 } else {
25390                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
25391                                                      ((hpvga << 12) |
25392                                                       (lpf_biq1 << 10) |
25393                                                       (lpf_biq0 << 8) |
25394                                                       (mix_tia_gain << 4) |
25395                                                       (lna2 << 2) | lna1), 0x3,
25396                                                      0);
25397                 }
25398
25399                 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
25400
25401                 if (txpwrindex == -1) {
25402                         nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
25403                         nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
25404                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
25405                                                  2, 0x110, 16,
25406                                                  nphy_rxcal_txgain);
25407                 } else {
25408                         wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
25409                                                  false);
25410                 }
25411
25412                 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
25413                                      NPHY_RXCAL_TONEFREQ_40MHz :
25414                                      NPHY_RXCAL_TONEFREQ_20MHz,
25415                                      NPHY_RXCAL_TONEAMP, 0, cal_type, false);
25416
25417                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
25418                 i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
25419                 q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
25420                 curr_pwr = i_pwr + q_pwr;
25421
25422                 switch (gainctrl_dirn) {
25423                 case NPHY_RXCAL_GAIN_INIT:
25424                         if (curr_pwr > thresh_pwr) {
25425                                 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
25426                                 prev_gaintbl_index = curr_gaintbl_index;
25427                                 curr_gaintbl_index--;
25428                         } else {
25429                                 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
25430                                 prev_gaintbl_index = curr_gaintbl_index;
25431                                 curr_gaintbl_index++;
25432                         }
25433                         break;
25434
25435                 case NPHY_RXCAL_GAIN_UP:
25436                         if (curr_pwr > thresh_pwr) {
25437                                 gainctrl_done = true;
25438                                 optim_pwr = prev_pwr;
25439                                 optim_gaintbl_index = prev_gaintbl_index;
25440                         } else {
25441                                 prev_gaintbl_index = curr_gaintbl_index;
25442                                 curr_gaintbl_index++;
25443                         }
25444                         break;
25445
25446                 case NPHY_RXCAL_GAIN_DOWN:
25447                         if (curr_pwr > thresh_pwr) {
25448                                 prev_gaintbl_index = curr_gaintbl_index;
25449                                 curr_gaintbl_index--;
25450                         } else {
25451                                 gainctrl_done = true;
25452                                 optim_pwr = curr_pwr;
25453                                 optim_gaintbl_index = curr_gaintbl_index;
25454                         }
25455                         break;
25456
25457                 default:
25458                         ASSERT(0);
25459                 }
25460
25461                 if ((curr_gaintbl_index < 0) ||
25462                     (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
25463                         gainctrl_done = true;
25464                         optim_pwr = curr_pwr;
25465                         optim_gaintbl_index = prev_gaintbl_index;
25466                 } else {
25467                         prev_pwr = curr_pwr;
25468                 }
25469
25470                 wlc_phy_stopplayback_nphy(pi);
25471         } while (!gainctrl_done);
25472
25473         hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
25474         lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
25475         lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
25476         lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
25477         lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
25478         txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
25479
25480         actual_log2_pwr = wlc_phy_nbits(optim_pwr);
25481         delta_pwr = desired_log2_pwr - actual_log2_pwr;
25482
25483         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25484                 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
25485
25486                 if (fine_gain_idx + (int)lpf_biq0 > 10) {
25487                         lpf_biq1 = 10 - lpf_biq0;
25488                 } else {
25489                         lpf_biq1 = (u16) max(fine_gain_idx, 0);
25490                 }
25491                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
25492                                                      NPHY_REV7_RfctrlOverride_cmd_rxgain,
25493                                                      ((lpf_biq1 << 12) |
25494                                                       (lpf_biq0 << 8) |
25495                                                       (mix_tia_gain << 4) |
25496                                                       (lna2 << 2) | lna1), 0x3,
25497                                                      0);
25498         } else {
25499                 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
25500                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
25501                                              ((hpvga << 12) | (lpf_biq1 << 10) |
25502                                               (lpf_biq0 << 8) | (mix_tia_gain <<
25503                                                                  4) | (lna2 <<
25504                                                                        2) |
25505                                               lna1), 0x3, 0);
25506
25507         }
25508
25509         if (rxgain != NULL) {
25510                 *rxgain++ = lna1;
25511                 *rxgain++ = lna2;
25512                 *rxgain++ = mix_tia_gain;
25513                 *rxgain++ = lpf_biq0;
25514                 *rxgain++ = lpf_biq1;
25515                 *rxgain = hpvga;
25516         }
25517
25518         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
25519 }
25520
25521 static void
25522 wlc_phy_rxcal_gainctrl_nphy(phy_info_t *pi, u8 rx_core, u16 *rxgain,
25523                             u8 cal_type)
25524 {
25525         wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
25526 }
25527
25528 static u8
25529 wlc_phy_rc_sweep_nphy(phy_info_t *pi, u8 core_idx, u8 loopback_type)
25530 {
25531         u32 target_bws[2] = { 9500, 21000 };
25532         u32 ref_tones[2] = { 3000, 6000 };
25533         u32 target_bw, ref_tone;
25534
25535         u32 target_pwr_ratios[2] = { 28606, 18468 };
25536         u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
25537
25538         u16 start_rccal_ovr_val = 128;
25539         u16 txlpf_rccal_lpc_ovr_val = 128;
25540         u16 rxlpf_rccal_hpc_ovr_val = 159;
25541
25542         u16 orig_txlpf_rccal_lpc_ovr_val;
25543         u16 orig_rxlpf_rccal_hpc_ovr_val;
25544         u16 radio_addr_offset_rx;
25545         u16 radio_addr_offset_tx;
25546         u16 orig_dcBypass;
25547         u16 orig_RxStrnFilt40Num[6];
25548         u16 orig_RxStrnFilt40Den[4];
25549         u16 orig_rfctrloverride[2];
25550         u16 orig_rfctrlauxreg[2];
25551         u16 orig_rfctrlrssiothers;
25552         u16 tx_lpf_bw = 4;
25553
25554         u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
25555         u16 lpf_hpc = 7, hpvga_hpc = 7;
25556
25557         s8 rccal_stepsize;
25558         u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
25559         u32 ref_iq_vals = 0, target_iq_vals = 0;
25560         u16 num_samps, log_num_samps = 10;
25561         phy_iq_est_t est[PHY_CORE_MAX];
25562
25563         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25564                 return 0;
25565         }
25566
25567         num_samps = (1 << log_num_samps);
25568
25569         if (CHSPEC_IS40(pi->radio_chanspec)) {
25570                 target_bw = target_bws[1];
25571                 target_pwr_ratio = target_pwr_ratios[1];
25572                 ref_tone = ref_tones[1];
25573                 rx_lpf_bw = rx_lpf_bws[1];
25574         } else {
25575                 target_bw = target_bws[0];
25576                 target_pwr_ratio = target_pwr_ratios[0];
25577                 ref_tone = ref_tones[0];
25578                 rx_lpf_bw = rx_lpf_bws[0];
25579         }
25580
25581         if (core_idx == 0) {
25582                 radio_addr_offset_rx = RADIO_2056_RX0;
25583                 radio_addr_offset_tx =
25584                     (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
25585         } else {
25586                 radio_addr_offset_rx = RADIO_2056_RX1;
25587                 radio_addr_offset_tx =
25588                     (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
25589         }
25590
25591         orig_txlpf_rccal_lpc_ovr_val =
25592             read_radio_reg(pi,
25593                            (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx));
25594         orig_rxlpf_rccal_hpc_ovr_val =
25595             read_radio_reg(pi,
25596                            (RADIO_2056_RX_RXLPF_RCCAL_HPC |
25597                             radio_addr_offset_rx));
25598
25599         orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
25600
25601         orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
25602         orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
25603         orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
25604         orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
25605         orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
25606         orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
25607         orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
25608         orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
25609         orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
25610         orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
25611
25612         orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
25613         orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
25614         orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
25615         orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
25616         orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
25617
25618         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
25619                         txlpf_rccal_lpc_ovr_val);
25620
25621         write_radio_reg(pi,
25622                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
25623                         rxlpf_rccal_hpc_ovr_val);
25624
25625         mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
25626
25627         write_phy_reg(pi, 0x267, 0x02d4);
25628         write_phy_reg(pi, 0x268, 0x0000);
25629         write_phy_reg(pi, 0x269, 0x0000);
25630         write_phy_reg(pi, 0x26a, 0x0000);
25631         write_phy_reg(pi, 0x26b, 0x0000);
25632         write_phy_reg(pi, 0x26c, 0x02d4);
25633         write_phy_reg(pi, 0x26d, 0x0000);
25634         write_phy_reg(pi, 0x26e, 0x0000);
25635         write_phy_reg(pi, 0x26f, 0x0000);
25636         write_phy_reg(pi, 0x270, 0x0000);
25637
25638         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
25639         or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
25640         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
25641         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
25642
25643         mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
25644                     (0x7 << 10), (tx_lpf_bw << 10));
25645         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
25646                     (0x7 << 0), (hpvga_hpc << 0));
25647         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
25648                     (0x7 << 4), (lpf_hpc << 4));
25649         mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
25650                     (0x7 << 8), (rx_lpf_bw << 8));
25651
25652         rccal_stepsize = 16;
25653         rccal_val = start_rccal_ovr_val + rccal_stepsize;
25654
25655         while (rccal_stepsize >= 0) {
25656                 write_radio_reg(pi,
25657                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
25658                                  radio_addr_offset_rx), rccal_val);
25659
25660                 if (rccal_stepsize == 16) {
25661
25662                         wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
25663                                              0, 1, false);
25664                         udelay(2);
25665
25666                         wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
25667
25668                         if (core_idx == 0) {
25669                                 ref_iq_vals =
25670                                     max_t(u32, (est[0].i_pwr +
25671                                          est[0].q_pwr) >> (log_num_samps + 1),
25672                                         1);
25673                         } else {
25674                                 ref_iq_vals =
25675                                     max_t(u32, (est[1].i_pwr +
25676                                          est[1].q_pwr) >> (log_num_samps + 1),
25677                                         1);
25678                         }
25679
25680                         wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
25681                                              0, 1, false);
25682                         udelay(2);
25683                 }
25684
25685                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
25686
25687                 if (core_idx == 0) {
25688                         target_iq_vals =
25689                             (est[0].i_pwr + est[0].q_pwr) >> (log_num_samps +
25690                                                               1);
25691                 } else {
25692                         target_iq_vals =
25693                             (est[1].i_pwr + est[1].q_pwr) >> (log_num_samps +
25694                                                               1);
25695                 }
25696                 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
25697
25698                 if (rccal_stepsize == 0) {
25699                         rccal_stepsize--;
25700                 } else if (rccal_stepsize == 1) {
25701                         last_rccal_val = rccal_val;
25702                         rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
25703                         last_pwr_ratio = pwr_ratio;
25704                         rccal_stepsize--;
25705                 } else {
25706                         rccal_stepsize = (rccal_stepsize >> 1);
25707                         rccal_val += ((pwr_ratio > target_pwr_ratio) ?
25708                                       rccal_stepsize : (-rccal_stepsize));
25709                 }
25710
25711                 if (rccal_stepsize == -1) {
25712                         best_rccal_val =
25713                             (ABS((int)last_pwr_ratio - (int)target_pwr_ratio) <
25714                              ABS((int)pwr_ratio -
25715                                  (int)target_pwr_ratio)) ? last_rccal_val :
25716                             rccal_val;
25717
25718                         if (CHSPEC_IS40(pi->radio_chanspec)) {
25719                                 if ((best_rccal_val > 140)
25720                                     || (best_rccal_val < 135)) {
25721                                         best_rccal_val = 138;
25722                                 }
25723                         } else {
25724                                 if ((best_rccal_val > 142)
25725                                     || (best_rccal_val < 137)) {
25726                                         best_rccal_val = 140;
25727                                 }
25728                         }
25729
25730                         write_radio_reg(pi,
25731                                         (RADIO_2056_RX_RXLPF_RCCAL_LPC |
25732                                          radio_addr_offset_rx), best_rccal_val);
25733                 }
25734         }
25735
25736         wlc_phy_stopplayback_nphy(pi);
25737
25738         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
25739                         orig_txlpf_rccal_lpc_ovr_val);
25740         write_radio_reg(pi,
25741                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
25742                         orig_rxlpf_rccal_hpc_ovr_val);
25743
25744         mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
25745
25746         write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
25747         write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
25748         write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
25749         write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
25750         write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
25751         write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
25752         write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
25753         write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
25754         write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
25755         write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
25756
25757         write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
25758         write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
25759         write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
25760         write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
25761         write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
25762
25763         pi->nphy_anarxlpf_adjusted = false;
25764
25765         return best_rccal_val - 0x80;
25766 }
25767
25768 #define WAIT_FOR_SCOPE  4000
25769 static int
25770 wlc_phy_cal_rxiq_nphy_rev3(phy_info_t *pi, nphy_txgains_t target_gain,
25771                            u8 cal_type, bool debug)
25772 {
25773         u16 orig_BBConfig;
25774         u8 core_no, rx_core;
25775         u8 best_rccal[2];
25776         u16 gain_save[2];
25777         u16 cal_gain[2];
25778         nphy_iqcal_params_t cal_params[2];
25779         u8 rxcore_state;
25780         s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
25781         s8 txlpf_idac;
25782         bool phyhang_avoid_state = false;
25783         bool skip_rxiqcal = false;
25784
25785         orig_BBConfig = read_phy_reg(pi, 0x01);
25786         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25787
25788         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25789
25790         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25791                 phyhang_avoid_state = pi->phyhang_avoid;
25792                 pi->phyhang_avoid = false;
25793         }
25794
25795         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25796
25797         for (core_no = 0; core_no <= 1; core_no++) {
25798                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25799                                               &cal_params[core_no]);
25800                 cal_gain[core_no] = cal_params[core_no].cal_gain;
25801         }
25802
25803         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25804
25805         rxcore_state = wlc_phy_rxcore_getstate_nphy((wlc_phy_t *) pi);
25806
25807         for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
25808
25809                 skip_rxiqcal =
25810                     ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
25811
25812                 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
25813
25814                 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
25815
25816                 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
25817
25818                         wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
25819
25820                         wlc_phy_tx_tone_nphy(pi,
25821                                              (CHSPEC_IS40(pi->radio_chanspec)) ?
25822                                              NPHY_RXCAL_TONEFREQ_40MHz :
25823                                              NPHY_RXCAL_TONEFREQ_20MHz,
25824                                              NPHY_RXCAL_TONEAMP, 0, cal_type,
25825                                              false);
25826
25827                         if (debug)
25828                                 mdelay(WAIT_FOR_SCOPE);
25829
25830                         wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
25831                         wlc_phy_stopplayback_nphy(pi);
25832                 }
25833
25834                 if (((cal_type == 1) || (cal_type == 2))
25835                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
25836
25837                         if (rx_core == PHY_CORE_1) {
25838
25839                                 if (rxcore_state == 1) {
25840                                         wlc_phy_rxcore_setstate_nphy((wlc_phy_t
25841                                                                       *) pi, 3);
25842                                 }
25843
25844                                 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
25845                                                             1);
25846
25847                                 best_rccal[rx_core] =
25848                                     wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
25849                                 pi->nphy_rccal_value = best_rccal[rx_core];
25850
25851                                 if (rxcore_state == 1) {
25852                                         wlc_phy_rxcore_setstate_nphy((wlc_phy_t
25853                                                                       *) pi,
25854                                                                      rxcore_state);
25855                                 }
25856                         }
25857                 }
25858
25859                 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
25860
25861                 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
25862                 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
25863         }
25864
25865         if ((cal_type == 1) || (cal_type == 2)) {
25866
25867                 best_rccal[0] = best_rccal[1];
25868                 write_radio_reg(pi,
25869                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
25870                                  RADIO_2056_RX0), (best_rccal[0] | 0x80));
25871
25872                 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
25873                         rxlpf_rccal_hpc =
25874                             (((int)best_rccal[rx_core] - 12) >> 1) + 10;
25875                         txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
25876
25877                         if (PHY_IPA(pi)) {
25878                                 txlpf_rccal_lpc += IS40MHZ(pi) ? 24 : 12;
25879                                 txlpf_idac = IS40MHZ(pi) ? 0x0e : 0x13;
25880                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
25881                                                  TXLPF_IDAC_4, txlpf_idac);
25882                         }
25883
25884                         rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31), 0);
25885                         txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31), 0);
25886
25887                         write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
25888                                              ((rx_core ==
25889                                                PHY_CORE_0) ? RADIO_2056_RX0 :
25890                                               RADIO_2056_RX1)),
25891                                         (rxlpf_rccal_hpc | 0x80));
25892
25893                         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
25894                                              ((rx_core ==
25895                                                PHY_CORE_0) ? RADIO_2056_TX0 :
25896                                               RADIO_2056_TX1)),
25897                                         (txlpf_rccal_lpc | 0x80));
25898                 }
25899         }
25900
25901         write_phy_reg(pi, 0x01, orig_BBConfig);
25902
25903         wlc_phy_resetcca_nphy(pi);
25904
25905         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25906                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
25907                                                      NPHY_REV7_RfctrlOverride_cmd_rxgain,
25908                                                      0, 0x3, 1);
25909         } else {
25910                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
25911         }
25912         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
25913
25914         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
25915                                  gain_save);
25916
25917         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25918                 pi->phyhang_avoid = phyhang_avoid_state;
25919         }
25920
25921         wlc_phy_stay_in_carriersearch_nphy(pi, false);
25922
25923         return BCME_OK;
25924 }
25925
25926 static int
25927 wlc_phy_cal_rxiq_nphy_rev2(phy_info_t *pi, nphy_txgains_t target_gain,
25928                            bool debug)
25929 {
25930         phy_iq_est_t est[PHY_CORE_MAX];
25931         u8 core_num, rx_core, tx_core;
25932         u16 lna_vals[] = { 0x3, 0x3, 0x1 };
25933         u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
25934         u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
25935         s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
25936         s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
25937         u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
25938         u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
25939         u16 num_samps;
25940         u32 i_pwr, q_pwr, tot_pwr[3];
25941         u8 gain_pass, use_hpf_num;
25942         u16 mask, val1, val2;
25943         u16 core_no;
25944         u16 gain_save[2];
25945         u16 cal_gain[2];
25946         nphy_iqcal_params_t cal_params[2];
25947         u8 phy_bw;
25948         int bcmerror = BCME_OK;
25949         bool first_playtone = true;
25950
25951         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25952
25953         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
25954
25955                 wlc_phy_reapply_txcal_coeffs_nphy(pi);
25956         }
25957
25958         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25959
25960         for (core_no = 0; core_no <= 1; core_no++) {
25961                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25962                                               &cal_params[core_no]);
25963                 cal_gain[core_no] = cal_params[core_no].cal_gain;
25964         }
25965
25966         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25967
25968         num_samps = 1024;
25969         desired_log2_pwr = 13;
25970
25971         for (core_num = 0; core_num < 2; core_num++) {
25972
25973                 rx_core = core_num;
25974                 tx_core = 1 - core_num;
25975
25976                 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
25977                 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
25978                                                 0xa6 : 0xa7);
25979                 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
25980                 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
25981                                                  0x91 : 0x92);
25982                 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
25983                                                  0x91 : 0x92);
25984
25985                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
25986                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
25987
25988                 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
25989                            ((0x1 << 1) | (0x1 << 2)));
25990                 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
25991
25992                 if (((pi->nphy_rxcalparams) & 0xff000000)) {
25993
25994                         write_phy_reg(pi,
25995                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
25996                                       (CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 :
25997                                        0x110));
25998                 } else {
25999
26000                         write_phy_reg(pi,
26001                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
26002                                       (CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 :
26003                                        0x120));
26004                 }
26005
26006                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
26007                               (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
26008                                0x114));
26009
26010                 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
26011                 if (rx_core == PHY_CORE_0) {
26012                         val1 = RADIO_2055_COUPLE_RX_MASK;
26013                         val2 = RADIO_2055_COUPLE_TX_MASK;
26014                 } else {
26015                         val1 = RADIO_2055_COUPLE_TX_MASK;
26016                         val2 = RADIO_2055_COUPLE_RX_MASK;
26017                 }
26018
26019                 if ((pi->nphy_rxcalparams & 0x10000)) {
26020                         mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
26021                                       val1);
26022                         mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
26023                                       val2);
26024                 }
26025
26026                 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
26027
26028                         if (debug)
26029                                 mdelay(WAIT_FOR_SCOPE);
26030
26031                         if (gain_pass < 3) {
26032                                 curr_lna = lna_vals[gain_pass];
26033                                 curr_hpf1 = hpf1_vals[gain_pass];
26034                                 curr_hpf2 = hpf2_vals[gain_pass];
26035                         } else {
26036
26037                                 if (tot_pwr[1] > 10000) {
26038                                         curr_lna = lna_vals[2];
26039                                         curr_hpf1 = hpf1_vals[2];
26040                                         curr_hpf2 = hpf2_vals[2];
26041                                         use_hpf_num = 1;
26042                                         curr_hpf = curr_hpf1;
26043                                         actual_log2_pwr =
26044                                             wlc_phy_nbits(tot_pwr[2]);
26045                                 } else {
26046                                         if (tot_pwr[0] > 10000) {
26047                                                 curr_lna = lna_vals[1];
26048                                                 curr_hpf1 = hpf1_vals[1];
26049                                                 curr_hpf2 = hpf2_vals[1];
26050                                                 use_hpf_num = 1;
26051                                                 curr_hpf = curr_hpf1;
26052                                                 actual_log2_pwr =
26053                                                     wlc_phy_nbits(tot_pwr[1]);
26054                                         } else {
26055                                                 curr_lna = lna_vals[0];
26056                                                 curr_hpf1 = hpf1_vals[0];
26057                                                 curr_hpf2 = hpf2_vals[0];
26058                                                 use_hpf_num = 2;
26059                                                 curr_hpf = curr_hpf2;
26060                                                 actual_log2_pwr =
26061                                                     wlc_phy_nbits(tot_pwr[0]);
26062                                         }
26063                                 }
26064
26065                                 hpf_change = desired_log2_pwr - actual_log2_pwr;
26066                                 curr_hpf += hpf_change;
26067                                 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
26068                                 if (use_hpf_num == 1) {
26069                                         curr_hpf1 = curr_hpf;
26070                                 } else {
26071                                         curr_hpf2 = curr_hpf;
26072                                 }
26073                         }
26074
26075                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
26076                                                      ((curr_hpf2 << 8) |
26077                                                       (curr_hpf1 << 4) |
26078                                                       (curr_lna << 2)), 0x3, 0);
26079                         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
26080
26081                         wlc_phy_stopplayback_nphy(pi);
26082
26083                         if (first_playtone) {
26084                                 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
26085                                                                 (u16) (pi->
26086                                                                           nphy_rxcalparams
26087                                                                           &
26088                                                                           0xffff),
26089                                                                 0, 0, true);
26090                                 first_playtone = false;
26091                         } else {
26092                                 phy_bw =
26093                                     (CHSPEC_IS40(pi->radio_chanspec)) ? 40 : 20;
26094                                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
26095                                                         0, 0, 0, true);
26096                         }
26097
26098                         if (bcmerror == BCME_OK) {
26099                                 if (gain_pass < 3) {
26100
26101                                         wlc_phy_rx_iq_est_nphy(pi, est,
26102                                                                num_samps, 32,
26103                                                                0);
26104                                         i_pwr =
26105                                             (est[rx_core].i_pwr +
26106                                              num_samps / 2) / num_samps;
26107                                         q_pwr =
26108                                             (est[rx_core].q_pwr +
26109                                              num_samps / 2) / num_samps;
26110                                         tot_pwr[gain_pass] = i_pwr + q_pwr;
26111                                 } else {
26112
26113                                         wlc_phy_calc_rx_iq_comp_nphy(pi,
26114                                                                      (1 <<
26115                                                                       rx_core));
26116                                 }
26117
26118                                 wlc_phy_stopplayback_nphy(pi);
26119                         }
26120
26121                         if (bcmerror != BCME_OK)
26122                                 break;
26123                 }
26124
26125                 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
26126                 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
26127
26128                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
26129                               0x92, orig_RfctrlIntcTx);
26130                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
26131                               0x92, orig_RfctrlIntcRx);
26132                 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
26133                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
26134                               0xa7, orig_AfectrlCore);
26135                 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
26136
26137                 if (bcmerror != BCME_OK)
26138                         break;
26139         }
26140
26141         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
26142         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
26143
26144         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26145                                  gain_save);
26146
26147         wlc_phy_stay_in_carriersearch_nphy(pi, false);
26148
26149         return bcmerror;
26150 }
26151
26152 int
26153 wlc_phy_cal_rxiq_nphy(phy_info_t *pi, nphy_txgains_t target_gain,
26154                       u8 cal_type, bool debug)
26155 {
26156         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26157
26158                 cal_type = 0;
26159         }
26160         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26161                 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
26162                                                   debug);
26163         } else {
26164                 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
26165         }
26166 }
26167
26168 static void wlc_phy_extpa_set_tx_digi_filts_nphy(phy_info_t *pi)
26169 {
26170         int j, type = 2;
26171         u16 addr_offset = 0x2c5;
26172
26173         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26174                 write_phy_reg(pi, addr_offset + j,
26175                               NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
26176         }
26177 }
26178
26179 static void wlc_phy_ipa_set_tx_digi_filts_nphy(phy_info_t *pi)
26180 {
26181         int j, type;
26182         u16 addr_offset[] = { 0x186, 0x195,
26183                 0x2c5
26184         };
26185
26186         for (type = 0; type < 3; type++) {
26187                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26188                         write_phy_reg(pi, addr_offset[type] + j,
26189                                       NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
26190                 }
26191         }
26192
26193         if (IS40MHZ(pi)) {
26194                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26195                         write_phy_reg(pi, 0x186 + j,
26196                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
26197                 }
26198         } else {
26199                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26200                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26201                                 write_phy_reg(pi, 0x186 + j,
26202                                               NPHY_IPA_REV4_txdigi_filtcoeffs[5]
26203                                               [j]);
26204                         }
26205                 }
26206
26207                 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
26208                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26209                                 write_phy_reg(pi, 0x2c5 + j,
26210                                               NPHY_IPA_REV4_txdigi_filtcoeffs[6]
26211                                               [j]);
26212                         }
26213                 }
26214         }
26215 }
26216
26217 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(phy_info_t *pi)
26218 {
26219         int j;
26220
26221         if (IS40MHZ(pi)) {
26222                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26223                         write_phy_reg(pi, 0x195 + j,
26224                                       NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
26225                 }
26226         } else {
26227                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26228                         write_phy_reg(pi, 0x186 + j,
26229                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
26230                 }
26231         }
26232 }
26233
26234 static u16 wlc_phy_ipa_get_bbmult_nphy(phy_info_t *pi)
26235 {
26236         u16 m0m1;
26237
26238         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
26239
26240         return m0m1;
26241 }
26242
26243 static void wlc_phy_ipa_set_bbmult_nphy(phy_info_t *pi, u8 m0, u8 m1)
26244 {
26245         u16 m0m1 = (u16) ((m0 << 8) | m1);
26246
26247         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
26248         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
26249 }
26250
26251 static u32 *wlc_phy_get_ipa_gaintbl_nphy(phy_info_t *pi)
26252 {
26253         u32 *tx_pwrctrl_tbl = NULL;
26254
26255         if (CHSPEC_IS2G(pi->radio_chanspec)) {
26256
26257                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26258
26259                         if ((pi->pubpi.radiorev == 4)
26260                             || (pi->pubpi.radiorev == 6)) {
26261
26262                                 tx_pwrctrl_tbl =
26263                                     nphy_tpc_txgain_ipa_2g_2057rev4n6;
26264                         } else if (pi->pubpi.radiorev == 3) {
26265
26266                                 tx_pwrctrl_tbl =
26267                                     nphy_tpc_txgain_ipa_2g_2057rev3;
26268                         } else if (pi->pubpi.radiorev == 5) {
26269
26270                                 tx_pwrctrl_tbl =
26271                                     nphy_tpc_txgain_ipa_2g_2057rev5;
26272                         } else if ((pi->pubpi.radiorev == 7)
26273                                    || (pi->pubpi.radiorev == 8)) {
26274
26275                                 tx_pwrctrl_tbl =
26276                                     nphy_tpc_txgain_ipa_2g_2057rev7;
26277                         } else {
26278                                 ASSERT(0);
26279                         }
26280
26281                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
26282
26283                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
26284                         if (pi->sh->chip == BCM47162_CHIP_ID) {
26285
26286                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
26287                         }
26288
26289                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
26290
26291                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
26292                 } else {
26293
26294                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
26295                 }
26296
26297         } else {
26298
26299                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26300                         if ((pi->pubpi.radiorev == 3) ||
26301                             (pi->pubpi.radiorev == 4) ||
26302                             (pi->pubpi.radiorev == 6)) {
26303
26304                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
26305                         } else if ((pi->pubpi.radiorev == 7)
26306                                    || (pi->pubpi.radiorev == 8)) {
26307
26308                                 tx_pwrctrl_tbl =
26309                                     nphy_tpc_txgain_ipa_5g_2057rev7;
26310                         } else {
26311                                 ASSERT(0);
26312                         }
26313
26314                 } else {
26315                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
26316                 }
26317         }
26318
26319         return tx_pwrctrl_tbl;
26320 }
26321
26322 static void
26323 wlc_phy_papd_cal_setup_nphy(phy_info_t *pi, nphy_papd_restore_state *state,
26324                             u8 core)
26325 {
26326         s32 tone_freq;
26327         u8 off_core;
26328         u16 mixgain = 0;
26329
26330         off_core = core ^ 0x1;
26331         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26332
26333                 if (NREV_IS(pi->pubpi.phy_rev, 7)
26334                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
26335                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26336                                                           wlc_phy_read_lpf_bw_ctl_nphy
26337                                                           (pi, 0), 0, 0,
26338                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
26339                 }
26340
26341                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26342                         if (pi->pubpi.radiorev == 5) {
26343                                 mixgain = (core == 0) ? 0x20 : 0x00;
26344
26345                         } else if ((pi->pubpi.radiorev == 7)
26346                                    || (pi->pubpi.radiorev == 8)) {
26347
26348                                 mixgain = 0x00;
26349
26350                         } else if ((pi->pubpi.radiorev <= 4)
26351                                    || (pi->pubpi.radiorev == 6)) {
26352
26353                                 mixgain = 0x00;
26354                         } else {
26355                                 ASSERT(0);
26356                         }
26357
26358                 } else {
26359                         if ((pi->pubpi.radiorev == 4) ||
26360                             (pi->pubpi.radiorev == 6)) {
26361
26362                                 mixgain = 0x50;
26363                         } else if ((pi->pubpi.radiorev == 3)
26364                                    || (pi->pubpi.radiorev == 7)
26365                                    || (pi->pubpi.radiorev == 8)) {
26366
26367                                 mixgain = 0x0;
26368                         } else {
26369                                 ASSERT(0);
26370                         }
26371                 }
26372
26373                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
26374                                                   mixgain, (1 << core), 0,
26375                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26376
26377                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26378                                                      NPHY_REV7_RfctrlOverride_cmd_tx_pu,
26379                                                      1, (1 << core), 0);
26380                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26381                                                      NPHY_REV7_RfctrlOverride_cmd_tx_pu,
26382                                                      0, (1 << off_core), 0);
26383
26384                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26385                                                   0, 0x3, 0,
26386                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26387                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
26388                                                   (1 << core), 0,
26389                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26390                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
26391                                                   (1 << core), 0,
26392                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26393                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
26394                                                   (1 << core), 0,
26395                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26396                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
26397                                                   (1 << core), 0,
26398                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26399                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
26400                                                   (1 << core), 0,
26401                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26402                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
26403                                                   (1 << core), 0,
26404                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26405                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
26406                                                   (1 << core), 0,
26407                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26408
26409                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
26410                                                   0, (1 << core), 0,
26411                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26412                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
26413                                                   (1 << core), 0,
26414                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26415
26416                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
26417                                                     0xa6 : 0xa7);
26418                 state->afeoverride[core] =
26419                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
26420                 state->afectrl[off_core] =
26421                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
26422                 state->afeoverride[off_core] =
26423                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
26424
26425                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
26426                             (0x1 << 2), 0);
26427                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
26428                                  0xa5), (0x1 << 2), (0x1 << 2));
26429
26430                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
26431                             (0x1 << 2), (0x1 << 2));
26432                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
26433                                  0x8f), (0x1 << 2), (0x1 << 2));
26434
26435                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26436                         state->pwrup[core] =
26437                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26438                                             TXRXCOUPLE_2G_PWRUP);
26439                         state->atten[core] =
26440                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26441                                             TXRXCOUPLE_2G_ATTEN);
26442                         state->pwrup[off_core] =
26443                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26444                                             TXRXCOUPLE_2G_PWRUP);
26445                         state->atten[off_core] =
26446                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26447                                             TXRXCOUPLE_2G_ATTEN);
26448
26449                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26450                                          TXRXCOUPLE_2G_PWRUP, 0xc);
26451
26452                         if ((pi->pubpi.radiorev == 3) ||
26453                             (pi->pubpi.radiorev == 4) ||
26454                             (pi->pubpi.radiorev == 6)) {
26455
26456                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26457                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
26458
26459                         } else if (pi->pubpi.radiorev == 5) {
26460
26461                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26462                                                  TXRXCOUPLE_2G_ATTEN,
26463                                                  (core == 0) ? 0xf7 : 0xf2);
26464
26465                         } else if ((pi->pubpi.radiorev == 7)
26466                                    || (pi->pubpi.radiorev == 8)) {
26467
26468                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26469                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
26470
26471                         } else {
26472                                 ASSERT(0);
26473                         }
26474
26475                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26476                                          TXRXCOUPLE_2G_PWRUP, 0x0);
26477                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26478                                          TXRXCOUPLE_2G_ATTEN, 0xff);
26479
26480                 } else {
26481                         state->pwrup[core] =
26482                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26483                                             TXRXCOUPLE_5G_PWRUP);
26484                         state->atten[core] =
26485                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26486                                             TXRXCOUPLE_5G_ATTEN);
26487                         state->pwrup[off_core] =
26488                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26489                                             TXRXCOUPLE_5G_PWRUP);
26490                         state->atten[off_core] =
26491                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26492                                             TXRXCOUPLE_5G_ATTEN);
26493
26494                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26495                                          TXRXCOUPLE_5G_PWRUP, 0xc);
26496
26497                         if ((pi->pubpi.radiorev == 7)
26498                             || (pi->pubpi.radiorev == 8)) {
26499
26500                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26501                                                  TXRXCOUPLE_5G_ATTEN, 0xf4);
26502
26503                         } else {
26504                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26505                                                  TXRXCOUPLE_5G_ATTEN, 0xf0);
26506                         }
26507
26508                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26509                                          TXRXCOUPLE_5G_PWRUP, 0x0);
26510                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26511                                          TXRXCOUPLE_5G_ATTEN, 0xff);
26512                 }
26513
26514                 tone_freq = 4000;
26515
26516                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
26517
26518                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26519                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
26520
26521                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26522                             0x2a4, (0x1 << 13), (1) << 13);
26523
26524                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
26525                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
26526
26527                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
26528                             0x2a4, (0x1 << 13), (0) << 13);
26529
26530         } else {
26531
26532                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
26533
26534                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
26535
26536                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
26537
26538                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
26539                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
26540
26541                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
26542                                                     0xa6 : 0xa7);
26543                 state->afeoverride[core] =
26544                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
26545
26546                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
26547                             (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
26548                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
26549                                  0xa5),
26550                             (0x1 << 0) |
26551                             (0x1 << 1) |
26552                             (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
26553
26554                 state->vga_master[core] =
26555                     READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
26556                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
26557                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26558                         state->fbmix[core] =
26559                             READ_RADIO_REG2(pi, RADIO_2056, RX, core,
26560                                             TXFBMIX_G);
26561                         state->intpa_master[core] =
26562                             READ_RADIO_REG2(pi, RADIO_2056, TX, core,
26563                                             INTPAG_MASTER);
26564
26565                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
26566                                          0x03);
26567                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26568                                          INTPAG_MASTER, 0x04);
26569                 } else {
26570                         state->fbmix[core] =
26571                             READ_RADIO_REG2(pi, RADIO_2056, RX, core,
26572                                             TXFBMIX_A);
26573                         state->intpa_master[core] =
26574                             READ_RADIO_REG2(pi, RADIO_2056, TX, core,
26575                                             INTPAA_MASTER);
26576
26577                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
26578                                          0x03);
26579                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26580                                          INTPAA_MASTER, 0x04);
26581
26582                 }
26583
26584                 tone_freq = 4000;
26585
26586                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
26587
26588                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26589                             0x29b, (0x1 << 0), (1) << 0);
26590
26591                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
26592                             0x29b, (0x1 << 0), (0) << 0);
26593
26594                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
26595         }
26596 }
26597
26598 static void
26599 wlc_phy_papd_cal_cleanup_nphy(phy_info_t *pi, nphy_papd_restore_state *state)
26600 {
26601         u8 core;
26602
26603         wlc_phy_stopplayback_nphy(pi);
26604
26605         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26606
26607                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26608
26609                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
26610                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26611                                                  TXRXCOUPLE_2G_PWRUP, 0);
26612                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26613                                                  TXRXCOUPLE_2G_ATTEN,
26614                                                  state->atten[core]);
26615                         } else {
26616                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26617                                                  TXRXCOUPLE_5G_PWRUP, 0);
26618                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26619                                                  TXRXCOUPLE_5G_ATTEN,
26620                                                  state->atten[core]);
26621                         }
26622                 }
26623
26624                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6)) {
26625                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
26626                                                           1, 0x3, 0,
26627                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
26628                 } else {
26629                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
26630                                                           0, 0x3, 1,
26631                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
26632                 }
26633                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
26634                                                   0, 0x3, 1,
26635                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26636                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
26637                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26638                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
26639                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26640                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
26641                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26642                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
26643                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26644                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
26645                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26646                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
26647                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26648                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
26649                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26650                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
26651                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26652                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
26653                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26654                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
26655                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26656                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
26657                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26658                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
26659                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26660                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
26661                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26662                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
26663                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26664                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
26665                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26666
26667                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26668
26669                         write_phy_reg(pi, (core == PHY_CORE_0) ?
26670                                       0xa6 : 0xa7, state->afectrl[core]);
26671                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
26672                                       0xa5, state->afeoverride[core]);
26673                 }
26674
26675                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
26676                                             (state->mm & 0xff));
26677
26678                 if (NREV_IS(pi->pubpi.phy_rev, 7)
26679                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
26680                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7), 0, 0,
26681                                                           1,
26682                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
26683                 }
26684         } else {
26685
26686                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
26687                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
26688                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
26689
26690                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
26691                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
26692
26693                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26694
26695                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
26696                                          state->vga_master[core]);
26697                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
26698                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
26699                                                  TXFBMIX_G, state->fbmix[core]);
26700                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26701                                                  INTPAG_MASTER,
26702                                                  state->intpa_master[core]);
26703                         } else {
26704                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
26705                                                  TXFBMIX_A, state->fbmix[core]);
26706                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26707                                                  INTPAA_MASTER,
26708                                                  state->intpa_master[core]);
26709                         }
26710
26711                         write_phy_reg(pi, (core == PHY_CORE_0) ?
26712                                       0xa6 : 0xa7, state->afectrl[core]);
26713                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
26714                                       0xa5, state->afeoverride[core]);
26715                 }
26716
26717                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
26718                                             (state->mm & 0xff));
26719
26720                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
26721         }
26722 }
26723
26724 static void
26725 wlc_phy_a1_nphy(phy_info_t *pi, u8 core, u32 winsz, u32 start,
26726                 u32 end)
26727 {
26728         u32 *buf, *src, *dst, sz;
26729
26730         sz = end - start + 1;
26731         ASSERT(end > start);
26732         ASSERT(end < NPHY_PAPD_EPS_TBL_SIZE);
26733
26734         buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
26735         if (NULL == buf) {
26736                 return;
26737         }
26738
26739         src = buf;
26740         dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
26741
26742         wlc_phy_table_read_nphy(pi,
26743                                 (core ==
26744                                  PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
26745                                  NPHY_TBL_ID_EPSILONTBL1),
26746                                 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
26747
26748         do {
26749                 u32 phy_a1, phy_a2;
26750                 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
26751
26752                 phy_a1 = end - min(end, (winsz >> 1));
26753                 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1, end + (winsz >> 1));
26754                 phy_a3 = phy_a2 - phy_a1 + 1;
26755                 phy_a6 = 0;
26756                 phy_a7 = 0;
26757
26758                 do {
26759                         wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
26760                                                     &phy_a5);
26761                         phy_a6 += phy_a4;
26762                         phy_a7 += phy_a5;
26763                 } while (phy_a2-- != phy_a1);
26764
26765                 phy_a6 /= phy_a3;
26766                 phy_a7 /= phy_a3;
26767                 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
26768         } while (end-- != start);
26769
26770         wlc_phy_table_write_nphy(pi,
26771                                  (core ==
26772                                   PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
26773                                  NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
26774
26775         kfree(buf);
26776 }
26777
26778 static void
26779 wlc_phy_a2_nphy(phy_info_t *pi, nphy_ipa_txcalgains_t *txgains,
26780                 phy_cal_mode_t cal_mode, u8 core)
26781 {
26782         u16 phy_a1, phy_a2, phy_a3;
26783         u16 phy_a4, phy_a5;
26784         bool phy_a6;
26785         u8 phy_a7, m[2];
26786         u32 phy_a8 = 0;
26787         nphy_txgains_t phy_a9;
26788
26789         if (NREV_LT(pi->pubpi.phy_rev, 3))
26790                 return;
26791
26792         phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
26793
26794         ASSERT((cal_mode == CAL_FULL) || (cal_mode == CAL_GCTRL)
26795                || (cal_mode == CAL_SOFT));
26796         phy_a6 = ((cal_mode == CAL_GCTRL)
26797                   || (cal_mode == CAL_SOFT)) ? true : false;
26798
26799         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26800
26801                 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
26802
26803                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26804                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
26805                                   (phy_a9.txgm[core] << 12) |
26806                                   (phy_a9.pga[core] << 8) |
26807                                   (txgains->gains.pad[core] << 3) |
26808                                   (phy_a9.ipa[core]));
26809                 } else {
26810                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
26811                                   (phy_a9.txgm[core] << 12) |
26812                                   (txgains->gains.pga[core] << 8) |
26813                                   (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
26814                 }
26815
26816                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26817                                                      NPHY_REV7_RfctrlOverride_cmd_txgain,
26818                                                      phy_a5, (1 << core), 0);
26819
26820                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26821                         if ((pi->pubpi.radiorev <= 4)
26822                             || (pi->pubpi.radiorev == 6)) {
26823
26824                                 m[core] = IS40MHZ(pi) ? 60 : 79;
26825                         } else {
26826
26827                                 m[core] = IS40MHZ(pi) ? 45 : 64;
26828                         }
26829
26830                 } else {
26831                         m[core] = IS40MHZ(pi) ? 75 : 107;
26832                 }
26833
26834                 m[phy_a7] = 0;
26835                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
26836
26837                 phy_a2 = 63;
26838
26839                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26840                         if (pi->sh->chip == BCM6362_CHIP_ID) {
26841                                 phy_a1 = 35;
26842                                 phy_a3 = 35;
26843                         } else if ((pi->pubpi.radiorev == 4)
26844                                    || (pi->pubpi.radiorev == 6)) {
26845                                 phy_a1 = 30;
26846                                 phy_a3 = 30;
26847                         } else {
26848                                 phy_a1 = 25;
26849                                 phy_a3 = 25;
26850                         }
26851                 } else {
26852                         if ((pi->pubpi.radiorev == 5)
26853                             || (pi->pubpi.radiorev == 7)
26854                             || (pi->pubpi.radiorev == 8)) {
26855                                 phy_a1 = 25;
26856                                 phy_a3 = 25;
26857                         } else {
26858                                 phy_a1 = 35;
26859                                 phy_a3 = 35;
26860                         }
26861                 }
26862
26863                 if (cal_mode == CAL_GCTRL) {
26864                         if ((pi->pubpi.radiorev == 5)
26865                             && (CHSPEC_IS2G(pi->radio_chanspec))) {
26866                                 phy_a1 = 55;
26867                         } else if (((pi->pubpi.radiorev == 7) &&
26868                                     (CHSPEC_IS2G(pi->radio_chanspec))) ||
26869                                    ((pi->pubpi.radiorev == 8) &&
26870                                     (CHSPEC_IS2G(pi->radio_chanspec)))) {
26871                                 phy_a1 = 60;
26872                         } else {
26873                                 phy_a1 = 63;
26874                         }
26875
26876                 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
26877
26878                         phy_a1 = 35;
26879                         phy_a3 = 35;
26880                 }
26881
26882                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26883                             0x29b, (0x1 << 0), (1) << 0);
26884
26885                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
26886                             0x29b, (0x1 << 0), (0) << 0);
26887
26888                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26889                             0x2a4, (0x1 << 13), (1) << 13);
26890
26891                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
26892                             0x2a4, (0x1 << 13), (0) << 13);
26893
26894                 write_phy_reg(pi, 0x2a1, 0x80);
26895                 write_phy_reg(pi, 0x2a2, 0x100);
26896
26897                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26898                             0x2a4, (0x7 << 4), (11) << 4);
26899
26900                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26901                             0x2a4, (0x7 << 8), (11) << 8);
26902
26903                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26904                             0x2a4, (0x7 << 0), (0x3) << 0);
26905
26906                 write_phy_reg(pi, 0x2e5, 0x20);
26907
26908                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
26909
26910                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
26911
26912                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
26913
26914                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26915                                                   1, ((core == 0) ? 1 : 2), 0,
26916                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26917                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26918                                                   0, ((core == 0) ? 2 : 1), 0,
26919                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26920
26921                 write_phy_reg(pi, 0x2be, 1);
26922                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
26923
26924                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26925                                                   0, 0x3, 0,
26926                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26927
26928                 wlc_phy_table_write_nphy(pi,
26929                                          (core ==
26930                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
26931                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
26932                                          32, &phy_a8);
26933
26934                 if (cal_mode != CAL_GCTRL) {
26935                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26936                                 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
26937                         }
26938                 }
26939
26940                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26941                                                      NPHY_REV7_RfctrlOverride_cmd_txgain,
26942                                                      phy_a5, (1 << core), 1);
26943
26944         } else {
26945
26946                 if (txgains) {
26947                         if (txgains->useindex) {
26948                                 phy_a4 = 15 - ((txgains->index) >> 3);
26949                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26950                                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
26951                                                 phy_a5 = 0x00f7 | (phy_a4 << 8);
26952
26953                                                 if (pi->sh->chip ==
26954                                                     BCM47162_CHIP_ID) {
26955                                                         phy_a5 =
26956                                                             0x10f7 | (phy_a4 <<
26957                                                                       8);
26958                                                 }
26959                                         } else
26960                                             if (NREV_IS(pi->pubpi.phy_rev, 5))
26961                                                 phy_a5 = 0x10f7 | (phy_a4 << 8);
26962                                         else
26963                                                 phy_a5 = 0x50f7 | (phy_a4 << 8);
26964                                 } else {
26965                                         phy_a5 = 0x70f7 | (phy_a4 << 8);
26966                                 }
26967                                 wlc_phy_rfctrl_override_nphy(pi,
26968                                                              (0x1 << 13),
26969                                                              phy_a5,
26970                                                              (1 << core), 0);
26971                         } else {
26972                                 wlc_phy_rfctrl_override_nphy(pi,
26973                                                              (0x1 << 13),
26974                                                              0x5bf7,
26975                                                              (1 << core), 0);
26976                         }
26977                 }
26978
26979                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26980                         m[core] = IS40MHZ(pi) ? 45 : 64;
26981                 } else {
26982                         m[core] = IS40MHZ(pi) ? 75 : 107;
26983                 }
26984
26985                 m[phy_a7] = 0;
26986                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
26987
26988                 phy_a2 = 63;
26989
26990                 if (cal_mode == CAL_FULL) {
26991                         phy_a1 = 25;
26992                         phy_a3 = 25;
26993                 } else if (cal_mode == CAL_SOFT) {
26994                         phy_a1 = 25;
26995                         phy_a3 = 25;
26996                 } else if (cal_mode == CAL_GCTRL) {
26997                         phy_a1 = 63;
26998                         phy_a3 = 25;
26999                 } else {
27000
27001                         phy_a1 = 25;
27002                         phy_a3 = 25;
27003                 }
27004
27005                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27006                             0x29b, (0x1 << 0), (1) << 0);
27007
27008                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
27009                             0x29b, (0x1 << 0), (0) << 0);
27010
27011                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
27012                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27013                                     0x2a4, (0x1 << 13), (1) << 13);
27014
27015                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
27016                                     0x2a4, (0x1 << 13), (0) << 13);
27017
27018                         write_phy_reg(pi, 0x2a1, 0x20);
27019                         write_phy_reg(pi, 0x2a2, 0x60);
27020
27021                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27022                                     0x2a4, (0xf << 4), (9) << 4);
27023
27024                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27025                                     0x2a4, (0xf << 8), (9) << 8);
27026
27027                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27028                                     0x2a4, (0xf << 0), (0x2) << 0);
27029
27030                         write_phy_reg(pi, 0x2e5, 0x20);
27031                 } else {
27032                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27033                                     0x2a4, (0x1 << 11), (1) << 11);
27034
27035                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
27036                                     0x2a4, (0x1 << 11), (0) << 11);
27037
27038                         write_phy_reg(pi, 0x2a1, 0x80);
27039                         write_phy_reg(pi, 0x2a2, 0x600);
27040
27041                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27042                                     0x2a4, (0x7 << 4), (0) << 4);
27043
27044                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27045                                     0x2a4, (0x7 << 8), (0) << 8);
27046
27047                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27048                                     0x2a4, (0x7 << 0), (0x3) << 0);
27049
27050                         mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
27051
27052                 }
27053
27054                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
27055
27056                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
27057
27058                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
27059
27060                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
27061
27062                 write_phy_reg(pi, 0x2be, 1);
27063                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
27064
27065                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
27066
27067                 wlc_phy_table_write_nphy(pi,
27068                                          (core ==
27069                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
27070                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
27071                                          32, &phy_a8);
27072
27073                 if (cal_mode != CAL_GCTRL) {
27074                         wlc_phy_a1_nphy(pi, core, 5, 0, 40);
27075                 }
27076         }
27077 }
27078
27079 static u8 wlc_phy_a3_nphy(phy_info_t *pi, u8 start_gain, u8 core)
27080 {
27081         int phy_a1;
27082         int phy_a2;
27083         bool phy_a3;
27084         nphy_ipa_txcalgains_t phy_a4;
27085         bool phy_a5 = false;
27086         bool phy_a6 = true;
27087         s32 phy_a7, phy_a8;
27088         u32 phy_a9;
27089         int phy_a10;
27090         bool phy_a11 = false;
27091         int phy_a12;
27092         u8 phy_a13 = 0;
27093         u8 phy_a14;
27094         u8 *phy_a15 = NULL;
27095
27096         phy_a4.useindex = true;
27097         phy_a12 = start_gain;
27098
27099         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27100
27101                 phy_a2 = 20;
27102                 phy_a1 = 1;
27103
27104                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
27105                         if (pi->pubpi.radiorev == 5) {
27106
27107                                 phy_a15 = pad_gain_codes_used_2057rev5;
27108                                 phy_a13 = sizeof(pad_gain_codes_used_2057rev5) /
27109                                     sizeof(pad_gain_codes_used_2057rev5[0]) - 1;
27110
27111                         } else if ((pi->pubpi.radiorev == 7)
27112                                    || (pi->pubpi.radiorev == 8)) {
27113
27114                                 phy_a15 = pad_gain_codes_used_2057rev7;
27115                                 phy_a13 = sizeof(pad_gain_codes_used_2057rev7) /
27116                                     sizeof(pad_gain_codes_used_2057rev7[0]) - 1;
27117
27118                         } else {
27119
27120                                 phy_a15 = pad_all_gain_codes_2057;
27121                                 phy_a13 = sizeof(pad_all_gain_codes_2057) /
27122                                     sizeof(pad_all_gain_codes_2057[0]) - 1;
27123                         }
27124
27125                 } else {
27126
27127                         phy_a15 = pga_all_gain_codes_2057;
27128                         phy_a13 = sizeof(pga_all_gain_codes_2057) /
27129                             sizeof(pga_all_gain_codes_2057[0]) - 1;
27130                 }
27131
27132                 phy_a14 = 0;
27133
27134                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
27135                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27136                                 phy_a4.gains.pad[core] =
27137                                     (u16) phy_a15[phy_a12];
27138                         } else {
27139                                 phy_a4.gains.pga[core] =
27140                                     (u16) phy_a15[phy_a12];
27141                         }
27142
27143                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
27144
27145                         wlc_phy_table_read_nphy(pi,
27146                                                 (core ==
27147                                                  PHY_CORE_0 ?
27148                                                  NPHY_TBL_ID_EPSILONTBL0 :
27149                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
27150                                                 63, 32, &phy_a9);
27151
27152                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
27153
27154                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
27155                                   (phy_a8 == 4095) || (phy_a8 == -4096));
27156
27157                         if (!phy_a6 && (phy_a3 != phy_a5)) {
27158                                 if (!phy_a3) {
27159                                         phy_a12 -= (u8) phy_a1;
27160                                 }
27161                                 phy_a11 = true;
27162                                 break;
27163                         }
27164
27165                         if (phy_a3)
27166                                 phy_a12 += (u8) phy_a1;
27167                         else
27168                                 phy_a12 -= (u8) phy_a1;
27169
27170                         if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
27171                                 if (phy_a12 < phy_a14) {
27172                                         phy_a12 = phy_a14;
27173                                 } else {
27174                                         phy_a12 = phy_a13;
27175                                 }
27176                                 phy_a11 = true;
27177                                 break;
27178                         }
27179
27180                         phy_a6 = false;
27181                         phy_a5 = phy_a3;
27182                 }
27183
27184         } else {
27185                 phy_a2 = 10;
27186                 phy_a1 = 8;
27187                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
27188                         phy_a4.index = (u8) phy_a12;
27189                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
27190
27191                         wlc_phy_table_read_nphy(pi,
27192                                                 (core ==
27193                                                  PHY_CORE_0 ?
27194                                                  NPHY_TBL_ID_EPSILONTBL0 :
27195                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
27196                                                 63, 32, &phy_a9);
27197
27198                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
27199
27200                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
27201                                   (phy_a8 == 4095) || (phy_a8 == -4096));
27202
27203                         if (!phy_a6 && (phy_a3 != phy_a5)) {
27204                                 if (!phy_a3) {
27205                                         phy_a12 -= (u8) phy_a1;
27206                                 }
27207                                 phy_a11 = true;
27208                                 break;
27209                         }
27210
27211                         if (phy_a3)
27212                                 phy_a12 += (u8) phy_a1;
27213                         else
27214                                 phy_a12 -= (u8) phy_a1;
27215
27216                         if ((phy_a12 < 0) || (phy_a12 > 127)) {
27217                                 if (phy_a12 < 0) {
27218                                         phy_a12 = 0;
27219                                 } else {
27220                                         phy_a12 = 127;
27221                                 }
27222                                 phy_a11 = true;
27223                                 break;
27224                         }
27225
27226                         phy_a6 = false;
27227                         phy_a5 = phy_a3;
27228                 }
27229
27230         }
27231
27232         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27233                 return (u8) phy_a15[phy_a12];
27234         } else {
27235                 return (u8) phy_a12;
27236         }
27237
27238 }
27239
27240 static void wlc_phy_a4(phy_info_t *pi, bool full_cal)
27241 {
27242         nphy_ipa_txcalgains_t phy_b1[2];
27243         nphy_papd_restore_state phy_b2;
27244         bool phy_b3;
27245         u8 phy_b4;
27246         u8 phy_b5;
27247         s16 phy_b6, phy_b7, phy_b8;
27248         u16 phy_b9;
27249         s16 phy_b10, phy_b11, phy_b12;
27250
27251         phy_b11 = 0;
27252         phy_b12 = 0;
27253         phy_b7 = 0;
27254         phy_b8 = 0;
27255         phy_b6 = 0;
27256
27257         if (pi->nphy_papd_skip == 1)
27258                 return;
27259
27260         phy_b3 =
27261             (0 == (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC));
27262         if (!phy_b3) {
27263                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
27264         }
27265
27266         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27267
27268         pi->nphy_force_papd_cal = false;
27269
27270         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
27271                 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
27272                     wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
27273
27274         pi->nphy_papd_last_cal = pi->sh->now;
27275         pi->nphy_papd_recal_counter++;
27276
27277         if (NORADIO_ENAB(pi->pubpi))
27278                 return;
27279
27280         phy_b4 = pi->nphy_txpwrctrl;
27281         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
27282
27283         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
27284                                  nphy_papd_scaltbl);
27285         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
27286                                  nphy_papd_scaltbl);
27287
27288         phy_b9 = read_phy_reg(pi, 0x01);
27289         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27290
27291         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
27292                 s32 i, val = 0;
27293                 for (i = 0; i < 64; i++) {
27294                         wlc_phy_table_write_nphy(pi,
27295                                                  ((phy_b5 ==
27296                                                    PHY_CORE_0) ?
27297                                                   NPHY_TBL_ID_EPSILONTBL0 :
27298                                                   NPHY_TBL_ID_EPSILONTBL1), 1,
27299                                                  i, 32, &val);
27300                 }
27301         }
27302
27303         wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
27304
27305         phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
27306         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
27307                 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
27308
27309                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27310                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27311
27312                                 if ((pi->pubpi.radiorev == 3)
27313                                     || (pi->pubpi.radiorev == 4)
27314                                     || (pi->pubpi.radiorev == 6)) {
27315
27316                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27317                                             23;
27318
27319                                 } else if (pi->pubpi.radiorev == 5) {
27320
27321                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27322                                             0;
27323                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27324                                             wlc_phy_a3_nphy(pi,
27325                                                             pi->
27326                                                             nphy_papd_cal_gain_index
27327                                                             [phy_b5], phy_b5);
27328
27329                                 } else if ((pi->pubpi.radiorev == 7)
27330                                            || (pi->pubpi.radiorev == 8)) {
27331
27332                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27333                                             0;
27334                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27335                                             wlc_phy_a3_nphy(pi,
27336                                                             pi->
27337                                                             nphy_papd_cal_gain_index
27338                                                             [phy_b5], phy_b5);
27339
27340                                 } else {
27341                                         ASSERT(0);
27342                                 }
27343
27344                                 phy_b1[phy_b5].gains.pad[phy_b5] =
27345                                     pi->nphy_papd_cal_gain_index[phy_b5];
27346
27347                         } else {
27348                                 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
27349                                 pi->nphy_papd_cal_gain_index[phy_b5] =
27350                                     wlc_phy_a3_nphy(pi,
27351                                                     pi->
27352                                                     nphy_papd_cal_gain_index
27353                                                     [phy_b5], phy_b5);
27354                                 phy_b1[phy_b5].gains.pga[phy_b5] =
27355                                     pi->nphy_papd_cal_gain_index[phy_b5];
27356                         }
27357                 } else {
27358                         phy_b1[phy_b5].useindex = true;
27359                         phy_b1[phy_b5].index = 16;
27360                         phy_b1[phy_b5].index =
27361                             wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index, phy_b5);
27362
27363                         pi->nphy_papd_cal_gain_index[phy_b5] =
27364                             15 - ((phy_b1[phy_b5].index) >> 3);
27365                 }
27366
27367                 switch (pi->nphy_papd_cal_type) {
27368                 case 0:
27369                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
27370                         break;
27371                 case 1:
27372                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
27373                         break;
27374                 }
27375
27376                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27377                         wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
27378                 }
27379         }
27380
27381         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27382                 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
27383         }
27384
27385         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
27386                 int eps_offset = 0;
27387
27388                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27389                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27390                                 if (pi->pubpi.radiorev == 3) {
27391                                         eps_offset = -2;
27392                                 } else if (pi->pubpi.radiorev == 5) {
27393                                         eps_offset = 3;
27394                                 } else {
27395                                         eps_offset = -1;
27396                                 }
27397                         } else {
27398                                 eps_offset = 2;
27399                         }
27400
27401                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27402                                 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
27403                                 phy_b10 = 0;
27404                                 if ((pi->pubpi.radiorev == 3) ||
27405                                     (pi->pubpi.radiorev == 4) ||
27406                                     (pi->pubpi.radiorev == 6)) {
27407                                         phy_b12 =
27408                                             -
27409                                             (nphy_papd_padgain_dlt_2g_2057rev3n4
27410                                              [phy_b8]
27411                                              + 1) / 2;
27412                                         phy_b10 = -1;
27413                                 } else if (pi->pubpi.radiorev == 5) {
27414                                         phy_b12 =
27415                                             -(nphy_papd_padgain_dlt_2g_2057rev5
27416                                               [phy_b8]
27417                                               + 1) / 2;
27418                                 } else if ((pi->pubpi.radiorev == 7) ||
27419                                            (pi->pubpi.radiorev == 8)) {
27420                                         phy_b12 =
27421                                             -(nphy_papd_padgain_dlt_2g_2057rev7
27422                                               [phy_b8]
27423                                               + 1) / 2;
27424                                 } else {
27425                                         ASSERT(0);
27426                                 }
27427                         } else {
27428                                 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
27429                                 if ((pi->pubpi.radiorev == 3) ||
27430                                     (pi->pubpi.radiorev == 4) ||
27431                                     (pi->pubpi.radiorev == 6)) {
27432                                         phy_b11 =
27433                                             -(nphy_papd_pgagain_dlt_5g_2057
27434                                               [phy_b7]
27435                                               + 1) / 2;
27436                                 } else if ((pi->pubpi.radiorev == 7)
27437                                            || (pi->pubpi.radiorev == 8)) {
27438                                         phy_b11 =
27439                                             -(nphy_papd_pgagain_dlt_5g_2057rev7
27440                                               [phy_b7]
27441                                               + 1) / 2;
27442                                 } else {
27443                                         ASSERT(0);
27444                                 }
27445
27446                                 phy_b10 = -9;
27447                         }
27448
27449                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27450                                 phy_b6 =
27451                                     -60 + 27 + eps_offset + phy_b12 + phy_b10;
27452                         } else {
27453                                 phy_b6 =
27454                                     -60 + 27 + eps_offset + phy_b11 + phy_b10;
27455                         }
27456
27457                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
27458                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
27459
27460                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
27461                 } else {
27462                         if (NREV_LT(pi->pubpi.phy_rev, 5)) {
27463                                 eps_offset = 4;
27464                         } else {
27465                                 eps_offset = 2;
27466                         }
27467
27468                         phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
27469
27470                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27471                                 phy_b11 =
27472                                     -(nphy_papd_pga_gain_delta_ipa_2g[phy_b7] +
27473                                       1) / 2;
27474                                 phy_b10 = 0;
27475                         } else {
27476                                 phy_b11 =
27477                                     -(nphy_papd_pga_gain_delta_ipa_5g[phy_b7] +
27478                                       1) / 2;
27479                                 phy_b10 = -9;
27480                         }
27481
27482                         phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
27483
27484                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
27485                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
27486
27487                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
27488                 }
27489         }
27490
27491         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
27492                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
27493
27494         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
27495                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
27496
27497         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
27498                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
27499                             0x2a4, (0x1 << 13), (0) << 13);
27500
27501                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
27502                             0x2a4, (0x1 << 13), (0) << 13);
27503
27504         } else {
27505                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
27506                             0x2a4, (0x1 << 11), (0) << 11);
27507
27508                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
27509                             0x2a4, (0x1 << 11), (0) << 11);
27510
27511         }
27512         pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
27513
27514         write_phy_reg(pi, 0x01, phy_b9);
27515
27516         wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
27517
27518         wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
27519         if (phy_b4 == PHY_TPC_HW_OFF) {
27520                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
27521                                          (s8) (pi->nphy_txpwrindex[0].
27522                                                  index_internal), false);
27523                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
27524                                          (s8) (pi->nphy_txpwrindex[1].
27525                                                  index_internal), false);
27526         }
27527
27528         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27529
27530         if (!phy_b3) {
27531                 wlapi_enable_mac(pi->sh->physhim);
27532         }
27533 }
27534
27535 void wlc_phy_txpwr_fixpower_nphy(phy_info_t *pi)
27536 {
27537         uint core;
27538         u32 txgain;
27539         u16 rad_gain, dac_gain, bbmult, m1m2;
27540         u8 txpi[2], chan_freq_range;
27541         s32 rfpwr_offset;
27542
27543         ASSERT(pi->nphy_txpwrctrl == PHY_TPC_HW_OFF);
27544
27545         if (pi->phyhang_avoid)
27546                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27547
27548         if (pi->sh->sromrev < 4) {
27549                 txpi[0] = txpi[1] = 72;
27550         } else {
27551
27552                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27553                 switch (chan_freq_range) {
27554                 case WL_CHAN_FREQ_RANGE_2G:
27555                         txpi[0] = pi->nphy_txpid2g[0];
27556                         txpi[1] = pi->nphy_txpid2g[1];
27557                         break;
27558                 case WL_CHAN_FREQ_RANGE_5GL:
27559                         txpi[0] = pi->nphy_txpid5gl[0];
27560                         txpi[1] = pi->nphy_txpid5gl[1];
27561                         break;
27562                 case WL_CHAN_FREQ_RANGE_5GM:
27563                         txpi[0] = pi->nphy_txpid5g[0];
27564                         txpi[1] = pi->nphy_txpid5g[1];
27565                         break;
27566                 case WL_CHAN_FREQ_RANGE_5GH:
27567                         txpi[0] = pi->nphy_txpid5gh[0];
27568                         txpi[1] = pi->nphy_txpid5gh[1];
27569                         break;
27570                 default:
27571                         txpi[0] = txpi[1] = 91;
27572                         break;
27573                 }
27574         }
27575
27576         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27577                 txpi[0] = txpi[1] = 30;
27578         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27579                 txpi[0] = txpi[1] = 40;
27580         }
27581
27582         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27583
27584                 if ((txpi[0] < 40) || (txpi[0] > 100) ||
27585                     (txpi[1] < 40) || (txpi[1] > 100))
27586                         txpi[0] = txpi[1] = 91;
27587         }
27588
27589         pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27590         pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27591         pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27592         pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27593
27594         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27595                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27596                         if (PHY_IPA(pi)) {
27597                                 u32 *tx_gaintbl =
27598                                     wlc_phy_get_ipa_gaintbl_nphy(pi);
27599                                 txgain = tx_gaintbl[txpi[core]];
27600                         } else {
27601                                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27602                                         if NREV_IS
27603                                                 (pi->pubpi.phy_rev, 3) {
27604                                                 txgain =
27605                                                     nphy_tpc_5GHz_txgain_rev3
27606                                                     [txpi[core]];
27607                                         } else if NREV_IS
27608                                                 (pi->pubpi.phy_rev, 4) {
27609                                                 txgain =
27610                                                     (pi->srom_fem5g.extpagain ==
27611                                                      3) ?
27612                                                     nphy_tpc_5GHz_txgain_HiPwrEPA
27613                                                     [txpi[core]] :
27614                                                     nphy_tpc_5GHz_txgain_rev4
27615                                                     [txpi[core]];
27616                                         } else {
27617                                                 txgain =
27618                                                     nphy_tpc_5GHz_txgain_rev5
27619                                                     [txpi[core]];
27620                                         }
27621                                 } else {
27622                                         if (NREV_GE(pi->pubpi.phy_rev, 5) &&
27623                                             (pi->srom_fem2g.extpagain == 3)) {
27624                                                 txgain =
27625                                                     nphy_tpc_txgain_HiPwrEPA
27626                                                     [txpi[core]];
27627                                         } else {
27628                                                 txgain =
27629                                                     nphy_tpc_txgain_rev3[txpi
27630                                                                          [core]];
27631                                         }
27632                                 }
27633                         }
27634                 } else {
27635                         txgain = nphy_tpc_txgain[txpi[core]];
27636                 }
27637
27638                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27639                         rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27640                 } else {
27641                         rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27642                 }
27643
27644                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27645                         dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27646                 } else {
27647                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27648                 }
27649                 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27650
27651                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27652                         mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27653                                          0xa5), (0x1 << 8), (0x1 << 8));
27654                 } else {
27655                         mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27656                 }
27657                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27658
27659                 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27660                                          &rad_gain);
27661
27662                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27663                 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27664                 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27665                 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27666
27667                 if (PHY_IPA(pi)) {
27668                         wlc_phy_table_read_nphy(pi,
27669                                                 (core ==
27670                                                  PHY_CORE_0 ?
27671                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
27672                                                  NPHY_TBL_ID_CORE2TXPWRCTL), 1,
27673                                                 576 + txpi[core], 32,
27674                                                 &rfpwr_offset);
27675
27676                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27677                                     0x29b, (0x1ff << 4),
27678                                     ((s16) rfpwr_offset) << 4);
27679
27680                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27681                                     0x29b, (0x1 << 2), (1) << 2);
27682
27683                 }
27684         }
27685
27686         and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
27687
27688         if (pi->phyhang_avoid)
27689                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27690 }
27691
27692 static void
27693 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
27694                                 u8 tmp_max_pwr, u8 rate_start,
27695                                 u8 rate_end)
27696 {
27697         u8 rate;
27698         u8 word_num, nibble_num;
27699         u8 tmp_nibble;
27700
27701         for (rate = rate_start; rate <= rate_end; rate++) {
27702                 word_num = (rate - rate_start) >> 2;
27703                 nibble_num = (rate - rate_start) & 0x3;
27704                 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
27705
27706                 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
27707         }
27708 }
27709
27710 static void
27711 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
27712                             u8 rate_start, u8 rate_end)
27713 {
27714         u8 rate;
27715
27716         for (rate = rate_start; rate <= rate_end; rate++) {
27717                 srom_max[rate] -= 2 * pwr_offset;
27718         }
27719 }
27720
27721 void
27722 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
27723                                 u8 rate_mcs_end, u8 rate_ofdm_start)
27724 {
27725         u8 rate1, rate2;
27726
27727         rate2 = rate_ofdm_start;
27728         for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
27729                 power[rate1] = power[rate2];
27730                 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
27731         }
27732         power[rate_mcs_end] = power[rate_mcs_end - 1];
27733 }
27734
27735 void
27736 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
27737                                 u8 rate_ofdm_end, u8 rate_mcs_start)
27738 {
27739         u8 rate1, rate2;
27740
27741         for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
27742              rate1 <= rate_ofdm_end; rate1++, rate2++) {
27743                 power[rate1] = power[rate2];
27744                 if (rate1 == rate_ofdm_start)
27745                         power[++rate1] = power[rate2];
27746         }
27747 }
27748
27749 void wlc_phy_txpwr_apply_nphy(phy_info_t *pi)
27750 {
27751         uint rate1, rate2, band_num;
27752         u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
27753         u8 tmp_max_pwr = 0;
27754         u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
27755         u8 *tx_srom_max_rate = NULL;
27756
27757         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP); band_num++) {
27758                 switch (band_num) {
27759                 case 0:
27760
27761                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
27762                                           pi->nphy_pwrctrl_info[1].max_pwr_2g);
27763
27764                         pwr_offsets1[0] = pi->cck2gpo;
27765                         wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
27766                                                         pwr_offsets1,
27767                                                         tmp_max_pwr,
27768                                                         TXP_FIRST_CCK,
27769                                                         TXP_LAST_CCK);
27770
27771                         pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
27772                         pwr_offsets1[1] =
27773                             (u16) (pi->ofdm2gpo >> 16) & 0xffff;
27774
27775                         pwr_offsets2 = pi->mcs2gpo;
27776
27777                         tmp_cddpo = pi->cdd2gpo;
27778                         tmp_stbcpo = pi->stbc2gpo;
27779                         tmp_bw40po = pi->bw402gpo;
27780
27781                         tx_srom_max_rate = pi->tx_srom_max_rate_2g;
27782                         break;
27783                 case 1:
27784
27785                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
27786                                           pi->nphy_pwrctrl_info[1].max_pwr_5gm);
27787
27788                         pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
27789                         pwr_offsets1[1] =
27790                             (u16) (pi->ofdm5gpo >> 16) & 0xffff;
27791
27792                         pwr_offsets2 = pi->mcs5gpo;
27793
27794                         tmp_cddpo = pi->cdd5gpo;
27795                         tmp_stbcpo = pi->stbc5gpo;
27796                         tmp_bw40po = pi->bw405gpo;
27797
27798                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
27799                         break;
27800                 case 2:
27801
27802                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
27803                                           pi->nphy_pwrctrl_info[1].max_pwr_5gl);
27804
27805                         pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
27806                         pwr_offsets1[1] =
27807                             (u16) (pi->ofdm5glpo >> 16) & 0xffff;
27808
27809                         pwr_offsets2 = pi->mcs5glpo;
27810
27811                         tmp_cddpo = pi->cdd5glpo;
27812                         tmp_stbcpo = pi->stbc5glpo;
27813                         tmp_bw40po = pi->bw405glpo;
27814
27815                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
27816                         break;
27817                 case 3:
27818
27819                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
27820                                           pi->nphy_pwrctrl_info[1].max_pwr_5gh);
27821
27822                         pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
27823                         pwr_offsets1[1] =
27824                             (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
27825
27826                         pwr_offsets2 = pi->mcs5ghpo;
27827
27828                         tmp_cddpo = pi->cdd5ghpo;
27829                         tmp_stbcpo = pi->stbc5ghpo;
27830                         tmp_bw40po = pi->bw405ghpo;
27831
27832                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
27833                         break;
27834                 }
27835
27836                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
27837                                                 tmp_max_pwr, TXP_FIRST_OFDM,
27838                                                 TXP_LAST_OFDM);
27839
27840                 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
27841                                                 TXP_FIRST_MCS_20_SISO,
27842                                                 TXP_LAST_MCS_20_SISO,
27843                                                 TXP_FIRST_OFDM);
27844
27845                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
27846                                                 tmp_max_pwr,
27847                                                 TXP_FIRST_MCS_20_CDD,
27848                                                 TXP_LAST_MCS_20_CDD);
27849
27850                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27851
27852                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
27853                                                     TXP_FIRST_MCS_20_CDD,
27854                                                     TXP_LAST_MCS_20_CDD);
27855                 }
27856
27857                 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
27858                                                 TXP_FIRST_OFDM_20_CDD,
27859                                                 TXP_LAST_OFDM_20_CDD,
27860                                                 TXP_FIRST_MCS_20_CDD);
27861
27862                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
27863                                                 tmp_max_pwr,
27864                                                 TXP_FIRST_MCS_20_STBC,
27865                                                 TXP_LAST_MCS_20_STBC);
27866
27867                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27868
27869                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
27870                                                     tmp_stbcpo,
27871                                                     TXP_FIRST_MCS_20_STBC,
27872                                                     TXP_LAST_MCS_20_STBC);
27873                 }
27874
27875                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27876                                                 &pwr_offsets2[2], tmp_max_pwr,
27877                                                 TXP_FIRST_MCS_20_SDM,
27878                                                 TXP_LAST_MCS_20_SDM);
27879
27880                 if (NPHY_IS_SROM_REINTERPRET) {
27881
27882                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27883                                                         &pwr_offsets2[4],
27884                                                         tmp_max_pwr,
27885                                                         TXP_FIRST_MCS_40_SISO,
27886                                                         TXP_LAST_MCS_40_SISO);
27887
27888                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
27889                                                         TXP_FIRST_OFDM_40_SISO,
27890                                                         TXP_LAST_OFDM_40_SISO,
27891                                                         TXP_FIRST_MCS_40_SISO);
27892
27893                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27894                                                         &pwr_offsets2[4],
27895                                                         tmp_max_pwr,
27896                                                         TXP_FIRST_MCS_40_CDD,
27897                                                         TXP_LAST_MCS_40_CDD);
27898
27899                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
27900                                                     TXP_FIRST_MCS_40_CDD,
27901                                                     TXP_LAST_MCS_40_CDD);
27902
27903                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
27904                                                         TXP_FIRST_OFDM_40_CDD,
27905                                                         TXP_LAST_OFDM_40_CDD,
27906                                                         TXP_FIRST_MCS_40_CDD);
27907
27908                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27909                                                         &pwr_offsets2[4],
27910                                                         tmp_max_pwr,
27911                                                         TXP_FIRST_MCS_40_STBC,
27912                                                         TXP_LAST_MCS_40_STBC);
27913
27914                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
27915                                                     tmp_stbcpo,
27916                                                     TXP_FIRST_MCS_40_STBC,
27917                                                     TXP_LAST_MCS_40_STBC);
27918
27919                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27920                                                         &pwr_offsets2[6],
27921                                                         tmp_max_pwr,
27922                                                         TXP_FIRST_MCS_40_SDM,
27923                                                         TXP_LAST_MCS_40_SDM);
27924                 } else {
27925
27926                         for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
27927                              TXP_FIRST_OFDM; rate1 <= TXP_LAST_MCS_40_SDM;
27928                              rate1++, rate2++)
27929                                 tx_srom_max_rate[rate1] =
27930                                     tx_srom_max_rate[rate2];
27931                 }
27932
27933                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27934                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
27935                                                     tmp_bw40po,
27936                                                     TXP_FIRST_OFDM_40_SISO,
27937                                                     TXP_LAST_MCS_40_SDM);
27938                 }
27939
27940                 tx_srom_max_rate[TXP_MCS_32] =
27941                     tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
27942         }
27943
27944         return;
27945 }
27946
27947 static void wlc_phy_txpwr_srom_read_ppr_nphy(phy_info_t *pi)
27948 {
27949         u16 bw40po, cddpo, stbcpo, bwduppo;
27950         uint band_num;
27951
27952         if (pi->sh->sromrev >= 9) {
27953
27954                 return;
27955         }
27956
27957         bw40po = (u16) PHY_GETINTVAR(pi, "bw40po");
27958         pi->bw402gpo = bw40po & 0xf;
27959         pi->bw405gpo = (bw40po & 0xf0) >> 4;
27960         pi->bw405glpo = (bw40po & 0xf00) >> 8;
27961         pi->bw405ghpo = (bw40po & 0xf000) >> 12;
27962
27963         cddpo = (u16) PHY_GETINTVAR(pi, "cddpo");
27964         pi->cdd2gpo = cddpo & 0xf;
27965         pi->cdd5gpo = (cddpo & 0xf0) >> 4;
27966         pi->cdd5glpo = (cddpo & 0xf00) >> 8;
27967         pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
27968
27969         stbcpo = (u16) PHY_GETINTVAR(pi, "stbcpo");
27970         pi->stbc2gpo = stbcpo & 0xf;
27971         pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
27972         pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
27973         pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
27974
27975         bwduppo = (u16) PHY_GETINTVAR(pi, "bwduppo");
27976         pi->bwdup2gpo = bwduppo & 0xf;
27977         pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
27978         pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
27979         pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
27980
27981         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP); band_num++) {
27982                 switch (band_num) {
27983                 case 0:
27984
27985                         pi->nphy_txpid2g[PHY_CORE_0] =
27986                             (u8) PHY_GETINTVAR(pi, "txpid2ga0");
27987                         pi->nphy_txpid2g[PHY_CORE_1] =
27988                             (u8) PHY_GETINTVAR(pi, "txpid2ga1");
27989                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
27990                             (s8) PHY_GETINTVAR(pi, "maxp2ga0");
27991                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
27992                             (s8) PHY_GETINTVAR(pi, "maxp2ga1");
27993                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
27994                             (s16) PHY_GETINTVAR(pi, "pa2gw0a0");
27995                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
27996                             (s16) PHY_GETINTVAR(pi, "pa2gw0a1");
27997                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
27998                             (s16) PHY_GETINTVAR(pi, "pa2gw1a0");
27999                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
28000                             (s16) PHY_GETINTVAR(pi, "pa2gw1a1");
28001                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
28002                             (s16) PHY_GETINTVAR(pi, "pa2gw2a0");
28003                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
28004                             (s16) PHY_GETINTVAR(pi, "pa2gw2a1");
28005                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
28006                             (s8) PHY_GETINTVAR(pi, "itt2ga0");
28007                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
28008                             (s8) PHY_GETINTVAR(pi, "itt2ga1");
28009
28010                         pi->cck2gpo = (u16) PHY_GETINTVAR(pi, "cck2gpo");
28011
28012                         pi->ofdm2gpo = (u32) PHY_GETINTVAR(pi, "ofdm2gpo");
28013
28014                         pi->mcs2gpo[0] = (u16) PHY_GETINTVAR(pi, "mcs2gpo0");
28015                         pi->mcs2gpo[1] = (u16) PHY_GETINTVAR(pi, "mcs2gpo1");
28016                         pi->mcs2gpo[2] = (u16) PHY_GETINTVAR(pi, "mcs2gpo2");
28017                         pi->mcs2gpo[3] = (u16) PHY_GETINTVAR(pi, "mcs2gpo3");
28018                         pi->mcs2gpo[4] = (u16) PHY_GETINTVAR(pi, "mcs2gpo4");
28019                         pi->mcs2gpo[5] = (u16) PHY_GETINTVAR(pi, "mcs2gpo5");
28020                         pi->mcs2gpo[6] = (u16) PHY_GETINTVAR(pi, "mcs2gpo6");
28021                         pi->mcs2gpo[7] = (u16) PHY_GETINTVAR(pi, "mcs2gpo7");
28022                         break;
28023                 case 1:
28024
28025                         pi->nphy_txpid5g[PHY_CORE_0] =
28026                             (u8) PHY_GETINTVAR(pi, "txpid5ga0");
28027                         pi->nphy_txpid5g[PHY_CORE_1] =
28028                             (u8) PHY_GETINTVAR(pi, "txpid5ga1");
28029                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
28030                             (s8) PHY_GETINTVAR(pi, "maxp5ga0");
28031                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
28032                             (s8) PHY_GETINTVAR(pi, "maxp5ga1");
28033                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
28034                             (s16) PHY_GETINTVAR(pi, "pa5gw0a0");
28035                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
28036                             (s16) PHY_GETINTVAR(pi, "pa5gw0a1");
28037                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
28038                             (s16) PHY_GETINTVAR(pi, "pa5gw1a0");
28039                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
28040                             (s16) PHY_GETINTVAR(pi, "pa5gw1a1");
28041                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
28042                             (s16) PHY_GETINTVAR(pi, "pa5gw2a0");
28043                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
28044                             (s16) PHY_GETINTVAR(pi, "pa5gw2a1");
28045                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
28046                             (s8) PHY_GETINTVAR(pi, "itt5ga0");
28047                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
28048                             (s8) PHY_GETINTVAR(pi, "itt5ga1");
28049
28050                         pi->ofdm5gpo = (u32) PHY_GETINTVAR(pi, "ofdm5gpo");
28051
28052                         pi->mcs5gpo[0] = (u16) PHY_GETINTVAR(pi, "mcs5gpo0");
28053                         pi->mcs5gpo[1] = (u16) PHY_GETINTVAR(pi, "mcs5gpo1");
28054                         pi->mcs5gpo[2] = (u16) PHY_GETINTVAR(pi, "mcs5gpo2");
28055                         pi->mcs5gpo[3] = (u16) PHY_GETINTVAR(pi, "mcs5gpo3");
28056                         pi->mcs5gpo[4] = (u16) PHY_GETINTVAR(pi, "mcs5gpo4");
28057                         pi->mcs5gpo[5] = (u16) PHY_GETINTVAR(pi, "mcs5gpo5");
28058                         pi->mcs5gpo[6] = (u16) PHY_GETINTVAR(pi, "mcs5gpo6");
28059                         pi->mcs5gpo[7] = (u16) PHY_GETINTVAR(pi, "mcs5gpo7");
28060                         break;
28061                 case 2:
28062
28063                         pi->nphy_txpid5gl[0] =
28064                             (u8) PHY_GETINTVAR(pi, "txpid5gla0");
28065                         pi->nphy_txpid5gl[1] =
28066                             (u8) PHY_GETINTVAR(pi, "txpid5gla1");
28067                         pi->nphy_pwrctrl_info[0].max_pwr_5gl =
28068                             (s8) PHY_GETINTVAR(pi, "maxp5gla0");
28069                         pi->nphy_pwrctrl_info[1].max_pwr_5gl =
28070                             (s8) PHY_GETINTVAR(pi, "maxp5gla1");
28071                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
28072                             (s16) PHY_GETINTVAR(pi, "pa5glw0a0");
28073                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
28074                             (s16) PHY_GETINTVAR(pi, "pa5glw0a1");
28075                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
28076                             (s16) PHY_GETINTVAR(pi, "pa5glw1a0");
28077                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
28078                             (s16) PHY_GETINTVAR(pi, "pa5glw1a1");
28079                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
28080                             (s16) PHY_GETINTVAR(pi, "pa5glw2a0");
28081                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
28082                             (s16) PHY_GETINTVAR(pi, "pa5glw2a1");
28083                         pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
28084                         pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
28085
28086                         pi->ofdm5glpo = (u32) PHY_GETINTVAR(pi, "ofdm5glpo");
28087
28088                         pi->mcs5glpo[0] =
28089                             (u16) PHY_GETINTVAR(pi, "mcs5glpo0");
28090                         pi->mcs5glpo[1] =
28091                             (u16) PHY_GETINTVAR(pi, "mcs5glpo1");
28092                         pi->mcs5glpo[2] =
28093                             (u16) PHY_GETINTVAR(pi, "mcs5glpo2");
28094                         pi->mcs5glpo[3] =
28095                             (u16) PHY_GETINTVAR(pi, "mcs5glpo3");
28096                         pi->mcs5glpo[4] =
28097                             (u16) PHY_GETINTVAR(pi, "mcs5glpo4");
28098                         pi->mcs5glpo[5] =
28099                             (u16) PHY_GETINTVAR(pi, "mcs5glpo5");
28100                         pi->mcs5glpo[6] =
28101                             (u16) PHY_GETINTVAR(pi, "mcs5glpo6");
28102                         pi->mcs5glpo[7] =
28103                             (u16) PHY_GETINTVAR(pi, "mcs5glpo7");
28104                         break;
28105                 case 3:
28106
28107                         pi->nphy_txpid5gh[0] =
28108                             (u8) PHY_GETINTVAR(pi, "txpid5gha0");
28109                         pi->nphy_txpid5gh[1] =
28110                             (u8) PHY_GETINTVAR(pi, "txpid5gha1");
28111                         pi->nphy_pwrctrl_info[0].max_pwr_5gh =
28112                             (s8) PHY_GETINTVAR(pi, "maxp5gha0");
28113                         pi->nphy_pwrctrl_info[1].max_pwr_5gh =
28114                             (s8) PHY_GETINTVAR(pi, "maxp5gha1");
28115                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
28116                             (s16) PHY_GETINTVAR(pi, "pa5ghw0a0");
28117                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
28118                             (s16) PHY_GETINTVAR(pi, "pa5ghw0a1");
28119                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
28120                             (s16) PHY_GETINTVAR(pi, "pa5ghw1a0");
28121                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
28122                             (s16) PHY_GETINTVAR(pi, "pa5ghw1a1");
28123                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
28124                             (s16) PHY_GETINTVAR(pi, "pa5ghw2a0");
28125                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
28126                             (s16) PHY_GETINTVAR(pi, "pa5ghw2a1");
28127                         pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
28128                         pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
28129
28130                         pi->ofdm5ghpo = (u32) PHY_GETINTVAR(pi, "ofdm5ghpo");
28131
28132                         pi->mcs5ghpo[0] =
28133                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo0");
28134                         pi->mcs5ghpo[1] =
28135                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo1");
28136                         pi->mcs5ghpo[2] =
28137                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo2");
28138                         pi->mcs5ghpo[3] =
28139                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo3");
28140                         pi->mcs5ghpo[4] =
28141                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo4");
28142                         pi->mcs5ghpo[5] =
28143                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo5");
28144                         pi->mcs5ghpo[6] =
28145                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo6");
28146                         pi->mcs5ghpo[7] =
28147                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo7");
28148                         break;
28149                 }
28150         }
28151
28152         wlc_phy_txpwr_apply_nphy(pi);
28153 }
28154
28155 static bool wlc_phy_txpwr_srom_read_nphy(phy_info_t *pi)
28156 {
28157
28158         pi->antswitch = (u8) PHY_GETINTVAR(pi, "antswitch");
28159         pi->aa2g = (u8) PHY_GETINTVAR(pi, "aa2g");
28160         pi->aa5g = (u8) PHY_GETINTVAR(pi, "aa5g");
28161
28162         pi->srom_fem2g.tssipos = (u8) PHY_GETINTVAR(pi, "tssipos2g");
28163         pi->srom_fem2g.extpagain = (u8) PHY_GETINTVAR(pi, "extpagain2g");
28164         pi->srom_fem2g.pdetrange = (u8) PHY_GETINTVAR(pi, "pdetrange2g");
28165         pi->srom_fem2g.triso = (u8) PHY_GETINTVAR(pi, "triso2g");
28166         pi->srom_fem2g.antswctrllut = (u8) PHY_GETINTVAR(pi, "antswctl2g");
28167
28168         pi->srom_fem5g.tssipos = (u8) PHY_GETINTVAR(pi, "tssipos5g");
28169         pi->srom_fem5g.extpagain = (u8) PHY_GETINTVAR(pi, "extpagain5g");
28170         pi->srom_fem5g.pdetrange = (u8) PHY_GETINTVAR(pi, "pdetrange5g");
28171         pi->srom_fem5g.triso = (u8) PHY_GETINTVAR(pi, "triso5g");
28172         if (PHY_GETVAR(pi, "antswctl5g")) {
28173
28174                 pi->srom_fem5g.antswctrllut =
28175                     (u8) PHY_GETINTVAR(pi, "antswctl5g");
28176         } else {
28177
28178                 pi->srom_fem5g.antswctrllut =
28179                     (u8) PHY_GETINTVAR(pi, "antswctl2g");
28180         }
28181
28182         wlc_phy_txpower_ipa_upd(pi);
28183
28184         pi->phy_txcore_disable_temp = (s16) PHY_GETINTVAR(pi, "tempthresh");
28185         if (pi->phy_txcore_disable_temp == 0) {
28186                 pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
28187         }
28188
28189         pi->phy_tempsense_offset = (s8) PHY_GETINTVAR(pi, "tempoffset");
28190         if (pi->phy_tempsense_offset != 0) {
28191                 if (pi->phy_tempsense_offset >
28192                     (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET)) {
28193                         pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
28194                 } else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
28195                                                     NPHY_SROM_MINTEMPOFFSET)) {
28196                         pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
28197                 } else {
28198                         pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
28199                 }
28200         }
28201
28202         pi->phy_txcore_enable_temp =
28203             pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
28204
28205         pi->phycal_tempdelta = (u8) PHY_GETINTVAR(pi, "phycal_tempdelta");
28206         if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA) {
28207                 pi->phycal_tempdelta = 0;
28208         }
28209
28210         wlc_phy_txpwr_srom_read_ppr_nphy(pi);
28211
28212         return true;
28213 }
28214
28215 void wlc_phy_txpower_recalc_target_nphy(phy_info_t *pi)
28216 {
28217         u8 tx_pwr_ctrl_state;
28218         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28219         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28220
28221         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28222
28223         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28224                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28225                 (void)R_REG(pi->sh->osh, &pi->regs->maccontrol);
28226                 udelay(1);
28227         }
28228
28229         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28230
28231         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28232                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28233 }
28234
28235 static void wlc_phy_txpwrctrl_coeff_setup_nphy(phy_info_t *pi)
28236 {
28237         u32 idx;
28238         u16 iqloCalbuf[7];
28239         u32 iqcomp, locomp, curr_locomp;
28240         s8 locomp_i, locomp_q;
28241         s8 curr_locomp_i, curr_locomp_q;
28242         u32 tbl_id, tbl_len, tbl_offset;
28243         u32 regval[128];
28244
28245         if (pi->phyhang_avoid)
28246                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28247
28248         wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
28249
28250         tbl_len = 128;
28251         tbl_offset = 320;
28252         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
28253              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
28254                 iqcomp =
28255                     (tbl_id ==
28256                      26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
28257                     (iqloCalbuf[1] & 0x3ff)
28258                     : (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
28259                     (iqloCalbuf[3] & 0x3ff);
28260
28261                 for (idx = 0; idx < tbl_len; idx++) {
28262                         regval[idx] = iqcomp;
28263                 }
28264                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
28265                                          regval);
28266         }
28267
28268         tbl_offset = 448;
28269         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
28270              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
28271
28272                 locomp =
28273                     (u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
28274                 locomp_i = (s8) ((locomp >> 8) & 0xff);
28275                 locomp_q = (s8) ((locomp) & 0xff);
28276                 for (idx = 0; idx < tbl_len; idx++) {
28277                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28278                                 curr_locomp_i = locomp_i;
28279                                 curr_locomp_q = locomp_q;
28280                         } else {
28281                                 curr_locomp_i = (s8) ((locomp_i *
28282                                                          nphy_tpc_loscale[idx] +
28283                                                          128) >> 8);
28284                                 curr_locomp_q =
28285                                     (s8) ((locomp_q * nphy_tpc_loscale[idx] +
28286                                              128) >> 8);
28287                         }
28288                         curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
28289                         curr_locomp |= (u32) (curr_locomp_q & 0xff);
28290                         regval[idx] = curr_locomp;
28291                 }
28292                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
28293                                          regval);
28294         }
28295
28296         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
28297
28298                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
28299                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
28300         }
28301
28302         if (pi->phyhang_avoid)
28303                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28304 }
28305
28306 static void wlc_phy_ipa_internal_tssi_setup_nphy(phy_info_t *pi)
28307 {
28308         u8 core;
28309
28310         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28311                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28312                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
28313                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28314                                                  TX_SSI_MASTER, 0x5);
28315                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28316                                                  TX_SSI_MUX, 0xe);
28317
28318                                 if (pi->pubpi.radiorev != 5)
28319                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
28320                                                          core, TSSIA, 0);
28321
28322                                 if (!NREV_IS(pi->pubpi.phy_rev, 7)) {
28323
28324                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
28325                                                          core, TSSIG, 0x1);
28326                                 } else {
28327
28328                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
28329                                                          core, TSSIG, 0x31);
28330                                 }
28331                         } else {
28332                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28333                                                  TX_SSI_MASTER, 0x9);
28334                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28335                                                  TX_SSI_MUX, 0xc);
28336                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28337                                                  TSSIG, 0);
28338
28339                                 if (pi->pubpi.radiorev != 5) {
28340                                         if (!NREV_IS(pi->pubpi.phy_rev, 7)) {
28341
28342                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28343                                                                  TX, core,
28344                                                                  TSSIA, 0x1);
28345                                         } else {
28346
28347                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28348                                                                  TX, core,
28349                                                                  TSSIA, 0x31);
28350                                         }
28351                                 }
28352                         }
28353                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
28354                                          0);
28355                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
28356                                          0);
28357                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
28358                                          0x3);
28359                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
28360                                          0x0);
28361                 }
28362         } else {
28363                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
28364                                 (CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
28365                                 0x80);
28366                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
28367                 WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
28368
28369                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28370                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
28371                                          0x0);
28372                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
28373                                          0x0);
28374                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
28375                                          0x3);
28376                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
28377                                          0x0);
28378                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
28379                                          0x8);
28380                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
28381                                          0x0);
28382                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
28383                                          0x0);
28384
28385                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
28386                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28387                                                  TX_SSI_MASTER, 0x5);
28388
28389                                 if (pi->pubpi.radiorev != 5)
28390                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
28391                                                          core, TSSIA, 0x0);
28392                                 if (NREV_GE(pi->pubpi.phy_rev, 5)) {
28393
28394                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
28395                                                          core, TSSIG, 0x31);
28396                                 } else {
28397                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
28398                                                          core, TSSIG, 0x11);
28399                                 }
28400                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28401                                                  TX_SSI_MUX, 0xe);
28402                         } else {
28403                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28404                                                  TX_SSI_MASTER, 0x9);
28405                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28406                                                  TSSIA, 0x31);
28407                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28408                                                  TSSIG, 0x0);
28409                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28410                                                  TX_SSI_MUX, 0xc);
28411                         }
28412                 }
28413         }
28414 }
28415
28416 static void wlc_phy_txpwrctrl_idle_tssi_nphy(phy_info_t *pi)
28417 {
28418         s32 rssi_buf[4];
28419         s32 int_val;
28420
28421         if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
28422
28423                 return;
28424
28425         if (PHY_IPA(pi)) {
28426                 wlc_phy_ipa_internal_tssi_setup_nphy(pi);
28427         }
28428
28429         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28430                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
28431                                                   0, 0x3, 0,
28432                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
28433         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28434                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
28435         }
28436
28437         wlc_phy_stopplayback_nphy(pi);
28438
28439         wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
28440
28441         udelay(20);
28442         int_val =
28443             wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
28444                                    1);
28445         wlc_phy_stopplayback_nphy(pi);
28446         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
28447
28448         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28449                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
28450                                                   0, 0x3, 1,
28451                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
28452         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28453                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
28454         }
28455
28456         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28457
28458                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
28459                     (u8) ((int_val >> 24) & 0xff);
28460                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
28461                     (u8) ((int_val >> 24) & 0xff);
28462
28463                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
28464                     (u8) ((int_val >> 8) & 0xff);
28465                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
28466                     (u8) ((int_val >> 8) & 0xff);
28467         } else {
28468                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
28469                     (u8) ((int_val >> 24) & 0xff);
28470
28471                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
28472                     (u8) ((int_val >> 8) & 0xff);
28473
28474                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
28475                     (u8) ((int_val >> 16) & 0xff);
28476                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
28477                     (u8) ((int_val) & 0xff);
28478         }
28479
28480 }
28481
28482 static void wlc_phy_txpwrctrl_pwr_setup_nphy(phy_info_t *pi)
28483 {
28484         u32 idx;
28485         s16 a1[2], b0[2], b1[2];
28486         s8 target_pwr_qtrdbm[2];
28487         s32 num, den, pwr_est;
28488         u8 chan_freq_range;
28489         u8 idle_tssi[2];
28490         u32 tbl_id, tbl_len, tbl_offset;
28491         u32 regval[64];
28492         u8 core;
28493
28494         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28495                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28496                 (void)R_REG(pi->sh->osh, &pi->regs->maccontrol);
28497                 udelay(1);
28498         }
28499
28500         if (pi->phyhang_avoid)
28501                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28502
28503         or_phy_reg(pi, 0x122, (0x1 << 0));
28504
28505         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28506                 and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
28507         } else {
28508
28509                 or_phy_reg(pi, 0x1e7, (0x1 << 15));
28510         }
28511
28512         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28513                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28514
28515         if (pi->sh->sromrev < 4) {
28516                 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
28517                 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
28518                 target_pwr_qtrdbm[0] = 13 * 4;
28519                 target_pwr_qtrdbm[1] = 13 * 4;
28520                 a1[0] = -424;
28521                 a1[1] = -424;
28522                 b0[0] = 5612;
28523                 b0[1] = 5612;
28524                 b1[1] = -1393;
28525                 b1[0] = -1393;
28526         } else {
28527
28528                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
28529                 switch (chan_freq_range) {
28530                 case WL_CHAN_FREQ_RANGE_2G:
28531                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
28532                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
28533                         target_pwr_qtrdbm[0] =
28534                             pi->nphy_pwrctrl_info[0].max_pwr_2g;
28535                         target_pwr_qtrdbm[1] =
28536                             pi->nphy_pwrctrl_info[1].max_pwr_2g;
28537                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
28538                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
28539                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
28540                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
28541                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
28542                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
28543                         break;
28544                 case WL_CHAN_FREQ_RANGE_5GL:
28545                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
28546                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
28547                         target_pwr_qtrdbm[0] =
28548                             pi->nphy_pwrctrl_info[0].max_pwr_5gl;
28549                         target_pwr_qtrdbm[1] =
28550                             pi->nphy_pwrctrl_info[1].max_pwr_5gl;
28551                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
28552                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
28553                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
28554                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
28555                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
28556                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
28557                         break;
28558                 case WL_CHAN_FREQ_RANGE_5GM:
28559                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
28560                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
28561                         target_pwr_qtrdbm[0] =
28562                             pi->nphy_pwrctrl_info[0].max_pwr_5gm;
28563                         target_pwr_qtrdbm[1] =
28564                             pi->nphy_pwrctrl_info[1].max_pwr_5gm;
28565                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
28566                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
28567                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
28568                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
28569                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
28570                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
28571                         break;
28572                 case WL_CHAN_FREQ_RANGE_5GH:
28573                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
28574                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
28575                         target_pwr_qtrdbm[0] =
28576                             pi->nphy_pwrctrl_info[0].max_pwr_5gh;
28577                         target_pwr_qtrdbm[1] =
28578                             pi->nphy_pwrctrl_info[1].max_pwr_5gh;
28579                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
28580                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
28581                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
28582                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
28583                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
28584                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
28585                         break;
28586                 default:
28587                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
28588                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
28589                         target_pwr_qtrdbm[0] = 13 * 4;
28590                         target_pwr_qtrdbm[1] = 13 * 4;
28591                         a1[0] = -424;
28592                         a1[1] = -424;
28593                         b0[0] = 5612;
28594                         b0[1] = 5612;
28595                         b1[1] = -1393;
28596                         b1[0] = -1393;
28597                         break;
28598                 }
28599         }
28600
28601         target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
28602         target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
28603
28604         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28605                 if (pi->srom_fem2g.tssipos) {
28606                         or_phy_reg(pi, 0x1e9, (0x1 << 14));
28607                 }
28608
28609                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28610                         for (core = 0; core <= 1; core++) {
28611                                 if (PHY_IPA(pi)) {
28612
28613                                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
28614                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28615                                                                  TX, core,
28616                                                                  TX_SSI_MUX,
28617                                                                  0xe);
28618                                         } else {
28619                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28620                                                                  TX, core,
28621                                                                  TX_SSI_MUX,
28622                                                                  0xc);
28623                                         }
28624                                 } else {
28625                                 }
28626                         }
28627                 } else {
28628                         if (PHY_IPA(pi)) {
28629
28630                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
28631                                                 RADIO_2056_TX0,
28632                                                 (CHSPEC_IS5G
28633                                                  (pi->
28634                                                   radio_chanspec)) ? 0xc : 0xe);
28635                                 write_radio_reg(pi,
28636                                                 RADIO_2056_TX_TX_SSI_MUX |
28637                                                 RADIO_2056_TX1,
28638                                                 (CHSPEC_IS5G
28639                                                  (pi->
28640                                                   radio_chanspec)) ? 0xc : 0xe);
28641                         } else {
28642
28643                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
28644                                                 RADIO_2056_TX0, 0x11);
28645                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
28646                                                 RADIO_2056_TX1, 0x11);
28647                         }
28648                 }
28649         }
28650
28651         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28652                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28653                 (void)R_REG(pi->sh->osh, &pi->regs->maccontrol);
28654                 udelay(1);
28655         }
28656
28657         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28658                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
28659                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
28660         } else {
28661                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
28662                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
28663         }
28664
28665         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28666                 mod_phy_reg(pi, 0x222, (0xff << 0),
28667                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
28668         } else if (NREV_GT(pi->pubpi.phy_rev, 1)) {
28669                 mod_phy_reg(pi, 0x222, (0xff << 0),
28670                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
28671         }
28672
28673         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28674                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28675
28676         write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
28677
28678         write_phy_reg(pi, 0x1e9,
28679                       (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
28680
28681         write_phy_reg(pi, 0x1ea,
28682                       (target_pwr_qtrdbm[0] << 0) |
28683                       (target_pwr_qtrdbm[1] << 8));
28684
28685         tbl_len = 64;
28686         tbl_offset = 0;
28687         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
28688              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
28689
28690                 for (idx = 0; idx < tbl_len; idx++) {
28691                         num =
28692                             8 * (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
28693                         den = 32768 + a1[tbl_id - 26] * idx;
28694                         pwr_est = max(((4 * num + den / 2) / den), -8);
28695                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
28696                                 if (idx <=
28697                                     (uint) (31 - idle_tssi[tbl_id - 26] + 1))
28698                                         pwr_est =
28699                                             max(pwr_est,
28700                                                 target_pwr_qtrdbm[tbl_id - 26] +
28701                                                 1);
28702                         }
28703                         regval[idx] = (u32) pwr_est;
28704                 }
28705                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
28706                                          regval);
28707         }
28708
28709         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28710         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
28711                                  pi->adj_pwr_tbl_nphy);
28712         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
28713                                  pi->adj_pwr_tbl_nphy);
28714
28715         if (pi->phyhang_avoid)
28716                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28717 }
28718
28719 static bool wlc_phy_txpwr_ison_nphy(phy_info_t *pi)
28720 {
28721         return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28722                                              (0x1 << 14) | (0x1 << 13));
28723 }
28724
28725 static u8 wlc_phy_txpwr_idx_cur_get_nphy(phy_info_t *pi, u8 core)
28726 {
28727         u16 tmp;
28728         tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
28729
28730         tmp = (tmp & (0x7f << 8)) >> 8;
28731         return (u8) tmp;
28732 }
28733
28734 static void
28735 wlc_phy_txpwr_idx_cur_set_nphy(phy_info_t *pi, u8 idx0, u8 idx1)
28736 {
28737         mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
28738
28739         if (NREV_GT(pi->pubpi.phy_rev, 1))
28740                 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
28741 }
28742
28743 u16 wlc_phy_txpwr_idx_get_nphy(phy_info_t *pi)
28744 {
28745         u16 tmp;
28746         u16 pwr_idx[2];
28747
28748         if (wlc_phy_txpwr_ison_nphy(pi)) {
28749                 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28750                 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28751
28752                 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28753         } else {
28754                 tmp =
28755                     ((pi->nphy_txpwrindex[PHY_CORE_0].
28756                       index_internal & 0xff) << 8) | (pi->
28757                                                       nphy_txpwrindex
28758                                                       [PHY_CORE_1].
28759                                                       index_internal & 0xff);
28760         }
28761
28762         return tmp;
28763 }
28764
28765 void wlc_phy_txpwr_papd_cal_nphy(phy_info_t *pi)
28766 {
28767         if (PHY_IPA(pi)
28768             && (pi->nphy_force_papd_cal
28769                 || (wlc_phy_txpwr_ison_nphy(pi)
28770                     &&
28771                     (((u32)
28772                       ABS(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28773                           pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28774                      || ((u32)
28775                          ABS(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28776                              pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4))))) {
28777                 wlc_phy_a4(pi, true);
28778         }
28779 }
28780
28781 void wlc_phy_txpwrctrl_enable_nphy(phy_info_t *pi, u8 ctrl_type)
28782 {
28783         u16 mask = 0, val = 0, ishw = 0;
28784         u8 ctr;
28785         uint core;
28786         u32 tbl_offset;
28787         u32 tbl_len;
28788         u16 regval[84];
28789
28790         if (pi->phyhang_avoid)
28791                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28792
28793         switch (ctrl_type) {
28794         case PHY_TPC_HW_OFF:
28795         case PHY_TPC_HW_ON:
28796                 pi->nphy_txpwrctrl = ctrl_type;
28797                 break;
28798         default:
28799                 break;
28800         }
28801
28802         if (ctrl_type == PHY_TPC_HW_OFF) {
28803                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28804
28805                         if (wlc_phy_txpwr_ison_nphy(pi)) {
28806                                 for (core = 0; core < pi->pubpi.phy_corenum;
28807                                      core++)
28808                                         pi->nphy_txpwr_idx[core] =
28809                                             wlc_phy_txpwr_idx_cur_get_nphy(pi,
28810                                                                            (u8)
28811                                                                            core);
28812                         }
28813
28814                 }
28815
28816                 tbl_len = 84;
28817                 tbl_offset = 64;
28818                 for (ctr = 0; ctr < tbl_len; ctr++) {
28819                         regval[ctr] = 0;
28820                 }
28821                 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28822                                          regval);
28823                 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28824                                          regval);
28825
28826                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28827
28828                         and_phy_reg(pi, 0x1e7,
28829                                     (u16) (~((0x1 << 15) |
28830                                                 (0x1 << 14) | (0x1 << 13))));
28831                 } else {
28832                         and_phy_reg(pi, 0x1e7,
28833                                     (u16) (~((0x1 << 14) | (0x1 << 13))));
28834                 }
28835
28836                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28837                         or_phy_reg(pi, 0x8f, (0x1 << 8));
28838                         or_phy_reg(pi, 0xa5, (0x1 << 8));
28839                 } else {
28840                         or_phy_reg(pi, 0xa5, (0x1 << 14));
28841                 }
28842
28843                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28844                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28845                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28846                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28847
28848                 if (NREV_LT(pi->pubpi.phy_rev, 2) && IS40MHZ(pi))
28849                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28850                                        MHF1_IQSWAP_WAR, WLC_BAND_ALL);
28851
28852         } else {
28853
28854                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28855                                          8, pi->adj_pwr_tbl_nphy);
28856                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28857                                          8, pi->adj_pwr_tbl_nphy);
28858
28859                 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28860                 mask = (0x1 << 14) | (0x1 << 13);
28861                 val = (ishw << 14) | (ishw << 13);
28862
28863                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28864                         mask |= (0x1 << 15);
28865                         val |= (ishw << 15);
28866                 }
28867
28868                 mod_phy_reg(pi, 0x1e7, mask, val);
28869
28870                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28871                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28872                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28873                                 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28874                         } else {
28875                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28876                                 if (NREV_GT(pi->pubpi.phy_rev, 1))
28877                                         mod_phy_reg(pi, 0x222,
28878                                                     (0xff << 0), 0x64);
28879                         }
28880                 }
28881
28882                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28883                         if ((pi->nphy_txpwr_idx[0] != 128)
28884                             && (pi->nphy_txpwr_idx[1] != 128)) {
28885                                 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28886                                                                pi->
28887                                                                nphy_txpwr_idx
28888                                                                [0],
28889                                                                pi->
28890                                                                nphy_txpwr_idx
28891                                                                [1]);
28892                         }
28893                 }
28894
28895                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28896                         and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28897                         and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28898                 } else {
28899                         and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28900                 }
28901
28902                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28903                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28904                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28905                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28906
28907                 if (NREV_LT(pi->pubpi.phy_rev, 2) && IS40MHZ(pi))
28908                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28909                                        0x0, WLC_BAND_ALL);
28910
28911                 if (PHY_IPA(pi)) {
28912                         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28913                                     0x29b, (0x1 << 2), (0) << 2);
28914
28915                         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28916                                     0x29b, (0x1 << 2), (0) << 2);
28917
28918                 }
28919
28920         }
28921
28922         if (pi->phyhang_avoid)
28923                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28924 }
28925
28926 void
28927 wlc_phy_txpwr_index_nphy(phy_info_t *pi, u8 core_mask, s8 txpwrindex,
28928                          bool restore_cals)
28929 {
28930         u8 core, txpwrctl_tbl;
28931         u16 tx_ind0, iq_ind0, lo_ind0;
28932         u16 m1m2;
28933         u32 txgain;
28934         u16 rad_gain, dac_gain;
28935         u8 bbmult;
28936         u32 iqcomp;
28937         u16 iqcomp_a, iqcomp_b;
28938         u32 locomp;
28939         u16 tmpval;
28940         u8 tx_pwr_ctrl_state;
28941         s32 rfpwr_offset;
28942         u16 regval[2];
28943
28944         if (pi->phyhang_avoid)
28945                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28946
28947         tx_ind0 = 192;
28948         iq_ind0 = 320;
28949         lo_ind0 = 448;
28950
28951         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28952
28953                 if ((core_mask & (1 << core)) == 0) {
28954                         continue;
28955                 }
28956
28957                 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28958
28959                 if (txpwrindex < 0) {
28960                         if (pi->nphy_txpwrindex[core].index < 0) {
28961
28962                                 continue;
28963                         }
28964
28965                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28966                                 mod_phy_reg(pi, 0x8f,
28967                                             (0x1 << 8),
28968                                             pi->nphy_txpwrindex[core].
28969                                             AfectrlOverride);
28970                                 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28971                                             pi->nphy_txpwrindex[core].
28972                                             AfectrlOverride);
28973                         } else {
28974                                 mod_phy_reg(pi, 0xa5,
28975                                             (0x1 << 14),
28976                                             pi->nphy_txpwrindex[core].
28977                                             AfectrlOverride);
28978                         }
28979
28980                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28981                                       0xaa : 0xab,
28982                                       pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28983
28984                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28985                                                  &pi->nphy_txpwrindex[core].
28986                                                  rad_gain);
28987
28988                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28989                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28990                         m1m2 |= ((core == PHY_CORE_0) ?
28991                                  (pi->nphy_txpwrindex[core].bbmult << 8) :
28992                                  (pi->nphy_txpwrindex[core].bbmult << 0));
28993                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28994
28995                         if (restore_cals) {
28996
28997                                 wlc_phy_table_write_nphy(pi, 15, 2,
28998                                                          (80 + 2 * core), 16,
28999                                                          (void *)&pi->
29000                                                          nphy_txpwrindex[core].
29001                                                          iqcomp_a);
29002
29003                                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
29004                                                          16,
29005                                                          &pi->
29006                                                          nphy_txpwrindex[core].
29007                                                          locomp);
29008                                 wlc_phy_table_write_nphy(pi, 15, 1, (93 + core),
29009                                                          16,
29010                                                          (void *)&pi->
29011                                                          nphy_txpwrindex[core].
29012                                                          locomp);
29013                         }
29014
29015                         wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
29016
29017                         pi->nphy_txpwrindex[core].index_internal =
29018                             pi->nphy_txpwrindex[core].index_internal_save;
29019                 } else {
29020
29021                         if (pi->nphy_txpwrindex[core].index < 0) {
29022
29023                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
29024                                         mod_phy_reg(pi, 0x8f,
29025                                                     (0x1 << 8),
29026                                                     pi->nphy_txpwrindex[core].
29027                                                     AfectrlOverride);
29028                                         mod_phy_reg(pi, 0xa5, (0x1 << 8),
29029                                                     pi->nphy_txpwrindex[core].
29030                                                     AfectrlOverride);
29031                                 } else {
29032                                         pi->nphy_txpwrindex[core].
29033                                             AfectrlOverride =
29034                                             read_phy_reg(pi, 0xa5);
29035                                 }
29036
29037                                 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
29038                                     read_phy_reg(pi,
29039                                                  (core ==
29040                                                   PHY_CORE_0) ? 0xaa : 0xab);
29041
29042                                 wlc_phy_table_read_nphy(pi, 7, 1,
29043                                                         (0x110 + core), 16,
29044                                                         &pi->
29045                                                         nphy_txpwrindex[core].
29046                                                         rad_gain);
29047
29048                                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
29049                                                         &tmpval);
29050                                 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
29051                                 tmpval &= 0xff;
29052                                 pi->nphy_txpwrindex[core].bbmult =
29053                                     (u8) tmpval;
29054
29055                                 wlc_phy_table_read_nphy(pi, 15, 2,
29056                                                         (80 + 2 * core), 16,
29057                                                         (void *)&pi->
29058                                                         nphy_txpwrindex[core].
29059                                                         iqcomp_a);
29060
29061                                 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
29062                                                         16,
29063                                                         (void *)&pi->
29064                                                         nphy_txpwrindex[core].
29065                                                         locomp);
29066
29067                                 pi->nphy_txpwrindex[core].index_internal_save =
29068                                     pi->nphy_txpwrindex[core].index_internal;
29069                         }
29070
29071                         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
29072                         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
29073
29074                         if (NREV_IS(pi->pubpi.phy_rev, 1))
29075                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
29076
29077                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
29078                                                 (tx_ind0 + txpwrindex), 32,
29079                                                 &txgain);
29080
29081                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
29082                                 rad_gain =
29083                                     (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
29084                         } else {
29085                                 rad_gain =
29086                                     (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
29087                         }
29088                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
29089                         bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
29090
29091                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
29092                                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
29093                                                  0xa5), (0x1 << 8), (0x1 << 8));
29094                         } else {
29095                                 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
29096                         }
29097                         write_phy_reg(pi, (core == PHY_CORE_0) ?
29098                                       0xaa : 0xab, dac_gain);
29099
29100                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
29101                                                  &rad_gain);
29102
29103                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
29104                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
29105                         m1m2 |=
29106                             ((core ==
29107                               PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
29108
29109                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
29110
29111                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
29112                                                 (iq_ind0 + txpwrindex), 32,
29113                                                 &iqcomp);
29114                         iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
29115                         iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
29116
29117                         if (restore_cals) {
29118                                 regval[0] = (u16) iqcomp_a;
29119                                 regval[1] = (u16) iqcomp_b;
29120                                 wlc_phy_table_write_nphy(pi, 15, 2,
29121                                                          (80 + 2 * core), 16,
29122                                                          regval);
29123                         }
29124
29125                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
29126                                                 (lo_ind0 + txpwrindex), 32,
29127                                                 &locomp);
29128                         if (restore_cals) {
29129                                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
29130                                                          16, &locomp);
29131                         }
29132
29133                         if (NREV_IS(pi->pubpi.phy_rev, 1))
29134                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
29135
29136                         if (PHY_IPA(pi)) {
29137                                 wlc_phy_table_read_nphy(pi,
29138                                                         (core ==
29139                                                          PHY_CORE_0 ?
29140                                                          NPHY_TBL_ID_CORE1TXPWRCTL
29141                                                          :
29142                                                          NPHY_TBL_ID_CORE2TXPWRCTL),
29143                                                         1, 576 + txpwrindex, 32,
29144                                                         &rfpwr_offset);
29145
29146                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
29147                                             0x29b, (0x1ff << 4),
29148                                             ((s16) rfpwr_offset) << 4);
29149
29150                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
29151                                             0x29b, (0x1 << 2), (1) << 2);
29152
29153                         }
29154
29155                         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
29156                 }
29157
29158                 pi->nphy_txpwrindex[core].index = txpwrindex;
29159         }
29160
29161         if (pi->phyhang_avoid)
29162                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
29163 }
29164
29165 void
29166 wlc_phy_txpower_sromlimit_get_nphy(phy_info_t *pi, uint chan, u8 *max_pwr,
29167                                    u8 txp_rate_idx)
29168 {
29169         u8 chan_freq_range;
29170
29171         chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
29172         switch (chan_freq_range) {
29173         case WL_CHAN_FREQ_RANGE_2G:
29174                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
29175                 break;
29176         case WL_CHAN_FREQ_RANGE_5GM:
29177                 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
29178                 break;
29179         case WL_CHAN_FREQ_RANGE_5GL:
29180                 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
29181                 break;
29182         case WL_CHAN_FREQ_RANGE_5GH:
29183                 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
29184                 break;
29185         default:
29186                 ASSERT(0);
29187                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
29188                 break;
29189         }
29190
29191         return;
29192 }
29193
29194 void wlc_phy_stay_in_carriersearch_nphy(phy_info_t *pi, bool enable)
29195 {
29196         u16 clip_off[] = { 0xffff, 0xffff };
29197
29198         ASSERT(0 == (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC));
29199
29200         if (enable) {
29201                 if (pi->nphy_deaf_count == 0) {
29202                         pi->classifier_state =
29203                             wlc_phy_classifier_nphy(pi, 0, 0);
29204                         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
29205                         wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
29206                         wlc_phy_clip_det_nphy(pi, 1, clip_off);
29207                 }
29208
29209                 pi->nphy_deaf_count++;
29210
29211                 wlc_phy_resetcca_nphy(pi);
29212
29213         } else {
29214                 ASSERT(pi->nphy_deaf_count > 0);
29215
29216                 pi->nphy_deaf_count--;
29217
29218                 if (pi->nphy_deaf_count == 0) {
29219                         wlc_phy_classifier_nphy(pi, (0x7 << 0),
29220                                                 pi->classifier_state);
29221                         wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
29222                 }
29223         }
29224 }
29225
29226 void wlc_nphy_deaf_mode(phy_info_t *pi, bool mode)
29227 {
29228         wlapi_suspend_mac_and_wait(pi->sh->physhim);
29229
29230         if (mode) {
29231                 if (pi->nphy_deaf_count == 0)
29232                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
29233         } else {
29234                 if (pi->nphy_deaf_count > 0)
29235                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
29236         }
29237         wlapi_enable_mac(pi->sh->physhim);
29238 }