Merge 2.6.38-rc5 into staging-next
[firefly-linux-kernel-4.4.55.git] / drivers / staging / brcm80211 / brcmsmac / phy / wlc_phy_n.c
1 /*
2  * Copyright (c) 2010 Broadcom Corporation
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
11  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
13  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
14  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16
17 #include <linux/kernel.h>
18 #include <linux/string.h>
19 #include <bcmdefs.h>
20 #include <wlc_cfg.h>
21 #include <linux/delay.h>
22 #include <linux/pci.h>
23 #include <osl.h>
24 #include <siutils.h>
25 #include <sbchipc.h>
26 #include <hndpmu.h>
27 #include <bcmendian.h>
28
29 #include <bcmdevs.h>
30 #include <sbhndpio.h>
31 #include <sbhnddma.h>
32
33 #include <wlc_phy_radio.h>
34 #include <wlc_phy_int.h>
35 #include <wlc_phyreg_n.h>
36 #include <wlc_phytbl_n.h>
37
38 #define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name) \
39         read_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
40         ((core == PHY_CORE_0) ? radio_type##_##jspace##0 : radio_type##_##jspace##1))
41 #define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value) \
42         write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
43         ((core == PHY_CORE_0) ? radio_type##_##jspace##0 : radio_type##_##jspace##1), value);
44 #define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
45         write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value);
46
47 #define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name) \
48         read_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##jspace##0##_##reg_name : \
49         radio_type##_##jspace##1##_##reg_name));
50 #define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value) \
51         write_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##jspace##0##_##reg_name : \
52         radio_type##_##jspace##1##_##reg_name), value);
53 #define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name) \
54         read_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##reg_name##_##jspace##0 : \
55         radio_type##_##reg_name##_##jspace##1));
56 #define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value) \
57         write_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##reg_name##_##jspace##0 : \
58         radio_type##_##reg_name##_##jspace##1), value);
59
60 #define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
61 #define NPHY_ACI_CHANNEL_DELTA 5
62 #define NPHY_ACI_CHANNEL_SKIP 4
63 #define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
64 #define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
65 #define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
66 #define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
67 #define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
68 #define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
69
70 #define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
71
72 #define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
73
74 #define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
75
76 #define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
77
78 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
79
80 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
81
82 #define NPHY_NOISE_NOASSOC_ENTER_TH  400
83
84 #define NPHY_NOISE_ASSOC_ENTER_TH  400
85
86 #define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH  400
87
88 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
89 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
90
91 #define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
92
93 #define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
94
95 #define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
96
97 #define NPHY_RSSICAL_MAXREAD 31
98
99 #define NPHY_RSSICAL_NPOLL 8
100 #define NPHY_RSSICAL_MAXD  (1<<20)
101 #define NPHY_MIN_RXIQ_PWR 2
102
103 #define NPHY_RSSICAL_W1_TARGET 25
104 #define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
105 #define NPHY_RSSICAL_NB_TARGET 0
106
107 #define NPHY_RSSICAL_W1_TARGET_REV3 29
108 #define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
109
110 #define NPHY_CALSANITY_RSSI_NB_MAX_POS  9
111 #define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
112 #define NPHY_CALSANITY_RSSI_W1_MAX_POS  12
113 #define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - NPHY_RSSICAL_MAXREAD)
114 #define NPHY_CALSANITY_RSSI_W2_MAX_POS  NPHY_CALSANITY_RSSI_W1_MAX_POS
115 #define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - NPHY_RSSICAL_MAXREAD)
116 #define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
117 #define NPHY_RSSI_NB_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
118                                ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
119 #define NPHY_RSSI_W1_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
120                                ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
121 #define NPHY_RSSI_W2_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
122                                ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
123
124 #define NPHY_IQCAL_NUMGAINS 9
125 #define NPHY_N_GCTL 0x66
126
127 #define NPHY_PAPD_EPS_TBL_SIZE 64
128 #define NPHY_PAPD_SCL_TBL_SIZE 64
129 #define NPHY_NUM_DIG_FILT_COEFFS 15
130
131 #define NPHY_PAPD_COMP_OFF 0
132 #define NPHY_PAPD_COMP_ON  1
133
134 #define NPHY_SROM_TEMPSHIFT             32
135 #define NPHY_SROM_MAXTEMPOFFSET         16
136 #define NPHY_SROM_MINTEMPOFFSET         -16
137
138 #define NPHY_CAL_MAXTEMPDELTA           64
139
140 #define NPHY_NOISEVAR_TBLLEN40 256
141 #define NPHY_NOISEVAR_TBLLEN20 128
142
143 #define NPHY_ANARXLPFBW_REDUCTIONFACT 7
144
145 #define NPHY_ADJUSTED_MINCRSPOWER 0x1e
146
147 typedef struct _nphy_iqcal_params {
148         u16 txlpf;
149         u16 txgm;
150         u16 pga;
151         u16 pad;
152         u16 ipa;
153         u16 cal_gain;
154         u16 ncorr[5];
155 } nphy_iqcal_params_t;
156
157 typedef struct _nphy_txiqcal_ladder {
158         u8 percent;
159         u8 g_env;
160 } nphy_txiqcal_ladder_t;
161
162 typedef struct {
163         nphy_txgains_t gains;
164         bool useindex;
165         u8 index;
166 } nphy_ipa_txcalgains_t;
167
168 typedef struct nphy_papd_restore_state_t {
169         u16 fbmix[2];
170         u16 vga_master[2];
171         u16 intpa_master[2];
172         u16 afectrl[2];
173         u16 afeoverride[2];
174         u16 pwrup[2];
175         u16 atten[2];
176         u16 mm;
177 } nphy_papd_restore_state;
178
179 typedef struct _nphy_ipa_txrxgain {
180         u16 hpvga;
181         u16 lpf_biq1;
182         u16 lpf_biq0;
183         u16 lna2;
184         u16 lna1;
185         s8 txpwrindex;
186 } nphy_ipa_txrxgain_t;
187
188 #define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
189
190 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_5GHz[] = { {0, 0, 0, 0, 0, 100},
191 {0, 0, 0, 0, 0, 50},
192 {0, 0, 0, 0, 0, -1},
193 {0, 0, 0, 3, 0, -1},
194 {0, 0, 3, 3, 0, -1},
195 {0, 2, 3, 3, 0, -1}
196 };
197
198 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_2GHz[] = { {0, 0, 0, 0, 0, 128},
199 {0, 0, 0, 0, 0, 70},
200 {0, 0, 0, 0, 0, 20},
201 {0, 0, 0, 3, 0, 20},
202 {0, 0, 3, 3, 0, 20},
203 {0, 2, 3, 3, 0, 20}
204 };
205
206 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = { {0, 0, 0, 0, 0, 100},
207 {0, 0, 0, 0, 0, 50},
208 {0, 0, 0, 0, 0, -1},
209 {0, 0, 0, 3, 0, -1},
210 {0, 0, 3, 3, 0, -1},
211 {0, 0, 5, 3, 0, -1}
212 };
213
214 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = { {0, 0, 0, 0, 0, 10},
215 {0, 0, 0, 1, 0, 10},
216 {0, 0, 1, 2, 0, 10},
217 {0, 0, 1, 3, 0, 10},
218 {0, 0, 4, 3, 0, 10},
219 {0, 0, 6, 3, 0, 10}
220 };
221
222 #define NPHY_RXCAL_TONEAMP 181
223 #define NPHY_RXCAL_TONEFREQ_40MHz 4000
224 #define NPHY_RXCAL_TONEFREQ_20MHz 2000
225
226 enum {
227         NPHY_RXCAL_GAIN_INIT = 0,
228         NPHY_RXCAL_GAIN_UP,
229         NPHY_RXCAL_GAIN_DOWN
230 };
231
232 #define wlc_phy_get_papd_nphy(pi) \
233         (read_phy_reg((pi), 0x1e7) & \
234                         ((0x1 << 15) | \
235                         (0x1 << 14) | \
236                         (0x1 << 13)))
237
238 #define TXFILT_SHAPING_OFDM20   0
239 #define TXFILT_SHAPING_OFDM40   1
240 #define TXFILT_SHAPING_CCK      2
241 #define TXFILT_DEFAULT_OFDM20   3
242 #define TXFILT_DEFAULT_OFDM40   4
243
244 u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
245         {-377, 137, -407, 208, -1527, 956, 93, 186, 93,
246          230, -44, 230, 201, -191, 201},
247         {-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
248          26, 34, -32, 34},
249         {-360, 164, -376, 164, -1533, 576, 308, -314, 308,
250          121, -73, 121, 91, 124, 91},
251         {-295, 200, -363, 142, -1391, 826, 151, 301, 151,
252          151, 301, 151, 602, -752, 602},
253         {-92, 58, -96, 49, -104, 44, 17, 35, 17,
254          12, 25, 12, 13, 27, 13},
255         {-375, 136, -399, 209, -1479, 949, 130, 260, 130,
256          230, -44, 230, 201, -191, 201},
257         {0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
258          0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
259 };
260
261 typedef struct _chan_info_nphy_2055 {
262         u16 chan;
263         u16 freq;
264         uint unknown;
265         u8 RF_pll_ref;
266         u8 RF_rf_pll_mod1;
267         u8 RF_rf_pll_mod0;
268         u8 RF_vco_cap_tail;
269         u8 RF_vco_cal1;
270         u8 RF_vco_cal2;
271         u8 RF_pll_lf_c1;
272         u8 RF_pll_lf_r1;
273         u8 RF_pll_lf_c2;
274         u8 RF_lgbuf_cen_buf;
275         u8 RF_lgen_tune1;
276         u8 RF_lgen_tune2;
277         u8 RF_core1_lgbuf_a_tune;
278         u8 RF_core1_lgbuf_g_tune;
279         u8 RF_core1_rxrf_reg1;
280         u8 RF_core1_tx_pga_pad_tn;
281         u8 RF_core1_tx_mx_bgtrim;
282         u8 RF_core2_lgbuf_a_tune;
283         u8 RF_core2_lgbuf_g_tune;
284         u8 RF_core2_rxrf_reg1;
285         u8 RF_core2_tx_pga_pad_tn;
286         u8 RF_core2_tx_mx_bgtrim;
287         u16 PHY_BW1a;
288         u16 PHY_BW2;
289         u16 PHY_BW3;
290         u16 PHY_BW4;
291         u16 PHY_BW5;
292         u16 PHY_BW6;
293 } chan_info_nphy_2055_t;
294
295 typedef struct _chan_info_nphy_radio205x {
296         u16 chan;
297         u16 freq;
298         u8 RF_SYN_pll_vcocal1;
299         u8 RF_SYN_pll_vcocal2;
300         u8 RF_SYN_pll_refdiv;
301         u8 RF_SYN_pll_mmd2;
302         u8 RF_SYN_pll_mmd1;
303         u8 RF_SYN_pll_loopfilter1;
304         u8 RF_SYN_pll_loopfilter2;
305         u8 RF_SYN_pll_loopfilter3;
306         u8 RF_SYN_pll_loopfilter4;
307         u8 RF_SYN_pll_loopfilter5;
308         u8 RF_SYN_reserved_addr27;
309         u8 RF_SYN_reserved_addr28;
310         u8 RF_SYN_reserved_addr29;
311         u8 RF_SYN_logen_VCOBUF1;
312         u8 RF_SYN_logen_MIXER2;
313         u8 RF_SYN_logen_BUF3;
314         u8 RF_SYN_logen_BUF4;
315         u8 RF_RX0_lnaa_tune;
316         u8 RF_RX0_lnag_tune;
317         u8 RF_TX0_intpaa_boost_tune;
318         u8 RF_TX0_intpag_boost_tune;
319         u8 RF_TX0_pada_boost_tune;
320         u8 RF_TX0_padg_boost_tune;
321         u8 RF_TX0_pgaa_boost_tune;
322         u8 RF_TX0_pgag_boost_tune;
323         u8 RF_TX0_mixa_boost_tune;
324         u8 RF_TX0_mixg_boost_tune;
325         u8 RF_RX1_lnaa_tune;
326         u8 RF_RX1_lnag_tune;
327         u8 RF_TX1_intpaa_boost_tune;
328         u8 RF_TX1_intpag_boost_tune;
329         u8 RF_TX1_pada_boost_tune;
330         u8 RF_TX1_padg_boost_tune;
331         u8 RF_TX1_pgaa_boost_tune;
332         u8 RF_TX1_pgag_boost_tune;
333         u8 RF_TX1_mixa_boost_tune;
334         u8 RF_TX1_mixg_boost_tune;
335         u16 PHY_BW1a;
336         u16 PHY_BW2;
337         u16 PHY_BW3;
338         u16 PHY_BW4;
339         u16 PHY_BW5;
340         u16 PHY_BW6;
341 } chan_info_nphy_radio205x_t;
342
343 typedef struct _chan_info_nphy_radio2057 {
344         u16 chan;
345         u16 freq;
346         u8 RF_vcocal_countval0;
347         u8 RF_vcocal_countval1;
348         u8 RF_rfpll_refmaster_sparextalsize;
349         u8 RF_rfpll_loopfilter_r1;
350         u8 RF_rfpll_loopfilter_c2;
351         u8 RF_rfpll_loopfilter_c1;
352         u8 RF_cp_kpd_idac;
353         u8 RF_rfpll_mmd0;
354         u8 RF_rfpll_mmd1;
355         u8 RF_vcobuf_tune;
356         u8 RF_logen_mx2g_tune;
357         u8 RF_logen_mx5g_tune;
358         u8 RF_logen_indbuf2g_tune;
359         u8 RF_logen_indbuf5g_tune;
360         u8 RF_txmix2g_tune_boost_pu_core0;
361         u8 RF_pad2g_tune_pus_core0;
362         u8 RF_pga_boost_tune_core0;
363         u8 RF_txmix5g_boost_tune_core0;
364         u8 RF_pad5g_tune_misc_pus_core0;
365         u8 RF_lna2g_tune_core0;
366         u8 RF_lna5g_tune_core0;
367         u8 RF_txmix2g_tune_boost_pu_core1;
368         u8 RF_pad2g_tune_pus_core1;
369         u8 RF_pga_boost_tune_core1;
370         u8 RF_txmix5g_boost_tune_core1;
371         u8 RF_pad5g_tune_misc_pus_core1;
372         u8 RF_lna2g_tune_core1;
373         u8 RF_lna5g_tune_core1;
374         u16 PHY_BW1a;
375         u16 PHY_BW2;
376         u16 PHY_BW3;
377         u16 PHY_BW4;
378         u16 PHY_BW5;
379         u16 PHY_BW6;
380 } chan_info_nphy_radio2057_t;
381
382 typedef struct _chan_info_nphy_radio2057_rev5 {
383         u16 chan;
384         u16 freq;
385         u8 RF_vcocal_countval0;
386         u8 RF_vcocal_countval1;
387         u8 RF_rfpll_refmaster_sparextalsize;
388         u8 RF_rfpll_loopfilter_r1;
389         u8 RF_rfpll_loopfilter_c2;
390         u8 RF_rfpll_loopfilter_c1;
391         u8 RF_cp_kpd_idac;
392         u8 RF_rfpll_mmd0;
393         u8 RF_rfpll_mmd1;
394         u8 RF_vcobuf_tune;
395         u8 RF_logen_mx2g_tune;
396         u8 RF_logen_indbuf2g_tune;
397         u8 RF_txmix2g_tune_boost_pu_core0;
398         u8 RF_pad2g_tune_pus_core0;
399         u8 RF_lna2g_tune_core0;
400         u8 RF_txmix2g_tune_boost_pu_core1;
401         u8 RF_pad2g_tune_pus_core1;
402         u8 RF_lna2g_tune_core1;
403         u16 PHY_BW1a;
404         u16 PHY_BW2;
405         u16 PHY_BW3;
406         u16 PHY_BW4;
407         u16 PHY_BW5;
408         u16 PHY_BW6;
409 } chan_info_nphy_radio2057_rev5_t;
410
411 typedef struct nphy_sfo_cfg {
412         u16 PHY_BW1a;
413         u16 PHY_BW2;
414         u16 PHY_BW3;
415         u16 PHY_BW4;
416         u16 PHY_BW5;
417         u16 PHY_BW6;
418 } nphy_sfo_cfg_t;
419
420 static chan_info_nphy_2055_t chan_info_nphy_2055[] = {
421         {
422          184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
423          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
424          0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
425         {
426          186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
427          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
428          0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
429         {
430          188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
431          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
432          0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
433         {
434          190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
435          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
436          0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
437         {
438          192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
439          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
440          0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
441         {
442          194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
443          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
444          0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
445         {
446          196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
447          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
448          0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
449         {
450          198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
451          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
452          0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
453         {
454          200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
455          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
456          0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
457         {
458          202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
459          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
460          0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
461         {
462          204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
463          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
464          0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
465         {
466          206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
467          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
468          0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
469         {
470          208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
471          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
472          0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
473         {
474          210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
475          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
476          0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
477         {
478          212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
479          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
480          0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
481         {
482          214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
483          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
484          0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
485         {
486          216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
487          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
488          0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
489         {
490          218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
491          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
492          0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
493         {
494          220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
495          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
496          0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
497         {
498          222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
499          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
500          0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
501         {
502          224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
503          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
504          0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
505         {
506          226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
507          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
508          0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
509         {
510          228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
511          0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
512          0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
513         {
514          32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
515          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
516          0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
517         {
518          34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
519          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
520          0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
521         {
522          36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
523          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
524          0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
525         {
526          38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
527          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
528          0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
529         {
530          40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
531          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
532          0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
533         {
534          42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
535          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
536          0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
537         {
538          44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
539          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
540          0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
541         {
542          46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
543          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
544          0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
545         {
546          48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
547          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
548          0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
549         {
550          50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
551          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
552          0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
553         {
554          52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
555          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
556          0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
557         {
558          54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
559          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
560          0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
561         {
562          56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
563          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
564          0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
565         {
566          58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
567          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
568          0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
569         {
570          60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
571          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
572          0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
573         {
574          62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
575          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
576          0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
577         {
578          64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
579          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
580          0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
581         {
582          66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
583          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
584          0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
585         {
586          68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
587          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
588          0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
589         {
590          70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
591          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
592          0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
593         {
594          72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
595          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
596          0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
597         {
598          74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
599          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
600          0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
601         {
602          76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
603          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
604          0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
605         {
606          78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
607          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
608          0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
609         {
610          80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
611          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
612          0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
613         {
614          82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
615          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
616          0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
617         {
618          84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
619          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
620          0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
621         {
622          86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
623          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
624          0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
625         {
626          88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
627          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
628          0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
629         {
630          90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
631          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
632          0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
633         {
634          92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
635          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
636          0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
637         {
638          94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
639          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
640          0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
641         {
642          96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
643          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
644          0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
645         {
646          98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
647          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
648          0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
649         {
650          100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
651          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
652          0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
653         {
654          102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
655          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
656          0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
657         {
658          104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
659          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
660          0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
661         {
662          106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
663          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
664          0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
665         {
666          108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
667          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
668          0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
669         {
670          110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
671          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
672          0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
673         {
674          112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
675          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
676          0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
677         {
678          114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
679          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
680          0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
681         {
682          116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
683          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
684          0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
685         {
686          118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
687          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
688          0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
689         {
690          120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
691          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
692          0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
693         {
694          122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
695          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
696          0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
697         {
698          124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
699          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
700          0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
701         {
702          126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
703          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
704          0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
705         {
706          128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
707          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
708          0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
709         {
710          130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
711          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
712          0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
713         {
714          132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
715          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
716          0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
717         {
718          134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
719          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
720          0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
721         {
722          136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
723          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
724          0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
725         {
726          138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
727          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
728          0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
729         {
730          140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
731          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
732          0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
733         {
734          142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
735          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
736          0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
737         {
738          144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
739          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
740          0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
741         {
742          145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
743          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
744          0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
745         {
746          146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
747          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
748          0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
749         {
750          147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
751          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
752          0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
753         {
754          148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
755          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
756          0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
757         {
758          149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
759          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
760          0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
761         {
762          150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
763          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
764          0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
765         {
766          151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
767          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
768          0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
769         {
770          152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
771          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
772          0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
773         {
774          153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
775          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
776          0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
777         {
778          154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
779          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
780          0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
781         {
782          155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
783          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
784          0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
785         {
786          156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
787          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
788          0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
789         {
790          157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
791          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
792          0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
793         {
794          158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
795          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
796          0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
797         {
798          159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
799          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
800          0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
801         {
802          160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
803          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
804          0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
805         {
806          161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
807          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
808          0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
809         {
810          162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
811          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
812          0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
813         {
814          163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
815          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
816          0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
817         {
818          164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
819          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
820          0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
821         {
822          165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
823          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
824          0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
825         {
826          166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
827          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
828          0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
829         {
830          168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
831          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
832          0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
833         {
834          170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
835          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
836          0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
837         {
838          172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
839          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
840          0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
841         {
842          174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
843          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
844          0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
845         {
846          176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
847          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
848          0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
849         {
850          178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
851          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
852          0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
853         {
854          180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
855          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
856          0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
857         {
858          182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
859          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
860          0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
861         {
862          1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
863          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
864          0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
865         {
866          2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
867          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
868          0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
869         {
870          3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
871          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
872          0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
873         {
874          4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
875          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
876          0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
877         {
878          5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
879          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
880          0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
881         {
882          6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
883          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
884          0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
885         {
886          7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
887          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
888          0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
889         {
890          8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
891          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
892          0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
893         {
894          9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
895          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
896          0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
897         {
898          10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
899          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
900          0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
901         {
902          11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
903          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
904          0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
905         {
906          12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
907          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
908          0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
909         {
910          13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
911          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
912          0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
913         {
914          14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
915          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
916          0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
917 };
918
919 static chan_info_nphy_radio205x_t chan_info_nphyrev3_2056[] = {
920         {
921          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
922          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
923          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
924          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
925         {
926          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
927          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
928          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
929          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
930         {
931          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
932          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
933          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
934          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
935         {
936          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
937          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
938          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
939          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
940         {
941          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
942          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
943          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
944          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
945         {
946          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
947          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
948          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
949          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
950         {
951          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
952          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
953          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
954          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
955         {
956          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
957          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
958          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
959          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
960         {
961          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
962          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
963          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
964          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
965         {
966          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
967          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
968          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
969          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
970         {
971          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
972          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
973          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
974          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
975         {
976          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
977          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
978          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
979          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
980         {
981          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
982          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
983          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
984          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
985         {
986          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
987          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
988          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
989          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
990         {
991          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
992          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
993          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
994          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
995         {
996          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
997          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
998          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
999          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1000         {
1001          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1002          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1003          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1004          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1005         {
1006          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1007          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1008          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1009          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1010         {
1011          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1012          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1013          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1014          0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1015         {
1016          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1017          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1018          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1019          0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1020         {
1021          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1022          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1023          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1024          0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1025         {
1026          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1027          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1028          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1029          0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1030         {
1031          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1032          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1033          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1034          0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1035         {
1036          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1037          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1038          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1039          0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1040         {
1041          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1042          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1043          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1044          0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1045         {
1046          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1047          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1048          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1049          0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1050         {
1051          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1052          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1053          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1054          0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1055         {
1056          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1057          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1058          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1059          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1060         {
1061          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1062          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1063          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1064          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1065         {
1066          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1067          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1068          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1069          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1070         {
1071          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1072          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1073          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1074          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1075         {
1076          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1077          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1078          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1079          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1080         {
1081          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1082          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1083          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1084          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1085         {
1086          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1087          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1088          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1089          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1090         {
1091          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1092          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1093          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1094          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1095         {
1096          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1097          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1098          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1099          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1100         {
1101          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1102          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1103          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1104          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1105         {
1106          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1107          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1108          0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1109          0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1110         {
1111          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1112          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1113          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1114          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1115         {
1116          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1117          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1118          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1119          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1120         {
1121          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1122          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1123          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1124          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1125         {
1126          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1127          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1128          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1129          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1130         {
1131          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1132          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1133          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1134          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1135         {
1136          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1137          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1138          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1139          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1140         {
1141          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1142          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1143          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1144          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1145         {
1146          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1147          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1148          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1149          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1150         {
1151          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1152          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1153          0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1154          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1155         {
1156          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1157          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1158          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1159          0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1160         {
1161          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1162          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1163          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1164          0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1165         {
1166          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1167          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1168          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1169          0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1170         {
1171          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1172          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1173          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1174          0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1175         {
1176          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1177          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1178          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1179          0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1180         {
1181          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1182          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1183          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1184          0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1185         {
1186          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1187          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1188          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1189          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1190         {
1191          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1192          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1193          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1194          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1195         {
1196          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1197          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1198          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1199          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1200         {
1201          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1202          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1203          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1204          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1205         {
1206          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1207          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1208          0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1209          0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1210         {
1211          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1212          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1213          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1214          0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1215         {
1216          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1217          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1218          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1219          0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1220         {
1221          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1222          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1223          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1224          0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1225         {
1226          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1227          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1228          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1229          0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1230         {
1231          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1232          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1233          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1234          0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1235         {
1236          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1237          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1238          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1239          0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1240         {
1241          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1242          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1243          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1244          0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1245         {
1246          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1247          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1248          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1249          0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1250         {
1251          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1252          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1253          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1254          0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1255         {
1256          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1257          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1258          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1259          0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1260         {
1261          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1262          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1263          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1264          0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1265         {
1266          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1267          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1268          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1269          0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1270         {
1271          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1272          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1273          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1274          0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1275         {
1276          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1277          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1278          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1279          0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1280         {
1281          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1282          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1283          0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1284          0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1285         {
1286          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1287          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1288          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1289          0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1290         {
1291          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1292          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1293          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1294          0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1295         {
1296          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1297          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1298          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1299          0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1300         {
1301          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1302          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1303          0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1304          0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1305         {
1306          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1307          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1308          0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1309          0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1310         {
1311          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1312          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1313          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1314          0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1315         {
1316          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1317          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1318          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1319          0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1320         {
1321          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1322          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1323          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1324          0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1325         {
1326          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1327          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1328          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1329          0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1330         {
1331          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1332          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1333          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1334          0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1335         {
1336          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1337          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1338          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1339          0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1340         {
1341          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1342          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1343          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1344          0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1345         {
1346          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1347          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1348          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1349          0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1350         {
1351          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1352          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1353          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1354          0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1355         {
1356          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1357          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1358          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1359          0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1360         {
1361          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1362          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1363          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1364          0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1365         {
1366          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1367          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1368          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1369          0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1370         {
1371          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1372          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1373          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1374          0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1375         {
1376          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1377          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1378          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1379          0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1380         {
1381          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1382          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1383          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1384          0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1385         {
1386          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1387          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1388          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1389          0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1390         {
1391          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1392          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1393          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1394          0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1395         {
1396          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1397          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1398          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1399          0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1400         {
1401          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1402          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1403          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1404          0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1405         {
1406          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1407          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1408          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1409          0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1410         {
1411          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1412          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1413          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1414          0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1415         {
1416          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1417          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1418          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1419          0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1420         {
1421          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1422          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1423          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1424          0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1425         {
1426          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1427          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1428          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1429          0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1430         {
1431          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1432          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1433          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1434          0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1435         {
1436          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1437          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1438          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1439          0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1440         {
1441          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1442          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1443          0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1444          0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1445         {
1446          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1447          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1448          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1449          0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1450         {
1451          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1452          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1453          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1454          0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1455         {
1456          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1457          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1458          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1459          0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1460         {
1461          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1462          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1463          0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1464          0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1465         {
1466          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1467          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1468          0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1469          0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1470         {
1471          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1472          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1473          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1474          0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1475         {
1476          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1477          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1478          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1479          0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1480         {
1481          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1482          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1483          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1484          0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1485         {
1486          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1487          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1488          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1489          0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1490         {
1491          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1492          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1493          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1494          0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1495         {
1496          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1497          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1498          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1499          0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1500         {
1501          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1502          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1503          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1504          0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1505         {
1506          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1507          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1508          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1509          0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1510         {
1511          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1512          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1513          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1514          0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1515         {
1516          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1517          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1518          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1519          0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1520         {
1521          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1522          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1523          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1524          0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1525         {
1526          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1527          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1528          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1529          0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1530         {
1531          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1532          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1533          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1534          0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1535         {
1536          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1537          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1538          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1539          0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1540 };
1541
1542 static chan_info_nphy_radio205x_t chan_info_nphyrev4_2056_A1[] = {
1543         {
1544          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1545          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1546          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1547          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1548         {
1549          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1550          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1551          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1552          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1553         {
1554          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1555          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1556          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1557          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1558         {
1559          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1560          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1561          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1562          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1563         {
1564          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1565          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1566          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1567          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1568         {
1569          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1570          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1571          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1572          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1573         {
1574          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1575          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1576          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1577          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1578         {
1579          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1580          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1581          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1582          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1583         {
1584          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1585          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1586          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1587          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1588         {
1589          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1590          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1591          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1592          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1593         {
1594          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1595          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1596          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1597          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1598         {
1599          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1600          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1601          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1602          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1603         {
1604          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1605          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1606          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1607          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1608         {
1609          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1610          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1611          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1612          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1613         {
1614          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1615          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1616          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1617          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1618         {
1619          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1620          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1621          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1622          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1623         {
1624          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1625          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1626          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1627          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1628         {
1629          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1630          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1631          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1632          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1633         {
1634          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1635          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1636          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1637          0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1638         {
1639          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1640          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1641          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1642          0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1643         {
1644          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1645          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1646          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1647          0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1648         {
1649          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1650          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1651          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1652          0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1653         {
1654          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1655          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1656          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1657          0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1658         {
1659          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1660          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1661          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1662          0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1663         {
1664          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1665          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1666          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1667          0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1668         {
1669          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1670          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1671          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1672          0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1673         {
1674          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1675          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1676          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1677          0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1678         {
1679          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1680          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1681          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1682          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1683         {
1684          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1685          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1686          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1687          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1688         {
1689          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1690          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1691          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1692          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1693         {
1694          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1695          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1696          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1697          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1698         {
1699          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1700          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1701          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1702          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1703         {
1704          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1705          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1706          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1707          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1708         {
1709          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1710          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1711          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1712          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1713         {
1714          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1715          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1716          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1717          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1718         {
1719          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1720          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1721          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1722          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1723         {
1724          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1725          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1726          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1727          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1728         {
1729          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1730          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1731          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1732          0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1733         {
1734          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1735          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1736          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1737          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1738         {
1739          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1740          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1741          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1742          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1743         {
1744          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1745          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1746          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1747          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1748         {
1749          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1750          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1751          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1752          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1753         {
1754          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1755          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1756          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1757          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1758         {
1759          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1760          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1761          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1762          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1763         {
1764          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1765          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1766          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1767          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1768         {
1769          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1770          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1771          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1772          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1773         {
1774          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1775          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1776          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1777          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1778         {
1779          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1780          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1781          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1782          0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1783         {
1784          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1785          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1786          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1787          0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1788         {
1789          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1790          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1791          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1792          0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1793         {
1794          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1795          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1796          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1797          0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1798         {
1799          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1800          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1801          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1802          0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1803         {
1804          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1805          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1806          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1807          0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1808         {
1809          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1810          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1811          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1812          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1813         {
1814          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1815          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1816          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1817          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1818         {
1819          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1820          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1821          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1822          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1823         {
1824          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1825          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1826          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1827          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1828         {
1829          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1830          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1831          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1832          0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1833         {
1834          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1835          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1836          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1837          0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1838         {
1839          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1840          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1841          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1842          0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1843         {
1844          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1845          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1846          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1847          0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1848         {
1849          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1850          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1851          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1852          0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1853         {
1854          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1855          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1856          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1857          0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1858         {
1859          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1860          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1861          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1862          0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1863         {
1864          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1865          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1866          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1867          0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1868         {
1869          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1870          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1871          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1872          0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1873         {
1874          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1875          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1876          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1877          0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1878         {
1879          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1880          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1881          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1882          0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1883         {
1884          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1885          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1886          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1887          0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1888         {
1889          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1890          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1891          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1892          0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1893         {
1894          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1895          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1896          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1897          0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1898         {
1899          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1900          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1901          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1902          0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1903         {
1904          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1905          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1906          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1907          0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1908         {
1909          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1910          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1911          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1912          0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1913         {
1914          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1915          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1916          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1917          0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1918         {
1919          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1920          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1921          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1922          0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1923         {
1924          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1925          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1926          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1927          0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1928         {
1929          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1930          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1931          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1932          0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1933         {
1934          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1935          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1936          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1937          0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1938         {
1939          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1940          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1941          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1942          0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1943         {
1944          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1945          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1946          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1947          0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1948         {
1949          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1950          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1951          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1952          0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1953         {
1954          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1955          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1956          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1957          0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1958         {
1959          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1960          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1961          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1962          0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1963         {
1964          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1965          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1966          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1967          0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1968         {
1969          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1970          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1971          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1972          0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1973         {
1974          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1975          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1976          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1977          0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1978         {
1979          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1980          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1981          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1982          0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1983         {
1984          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1985          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1986          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1987          0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1988         {
1989          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1990          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1991          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1992          0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1993         {
1994          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1995          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1996          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1997          0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1998         {
1999          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2000          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2001          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2002          0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2003         {
2004          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2005          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2006          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2007          0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2008         {
2009          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2010          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2011          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2012          0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2013         {
2014          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2015          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2016          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2017          0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2018         {
2019          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2020          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2021          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2022          0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2023         {
2024          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2025          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2026          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2027          0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2028         {
2029          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2030          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2031          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2032          0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2033         {
2034          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2035          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2036          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2037          0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2038         {
2039          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2040          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2041          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2042          0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2043         {
2044          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2045          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2046          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2047          0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2048         {
2049          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2050          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2051          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2052          0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2053         {
2054          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2055          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2056          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2057          0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2058         {
2059          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2060          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2061          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2062          0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2063         {
2064          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2065          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2066          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2067          0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2068         {
2069          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2070          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2071          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2072          0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2073         {
2074          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2075          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2076          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2077          0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2078         {
2079          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2080          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2081          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2082          0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2083         {
2084          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2085          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2086          0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2087          0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2088         {
2089          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2090          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2091          0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2092          0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2093         {
2094          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2095          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2096          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2097          0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2098         {
2099          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2100          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2101          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2102          0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2103         {
2104          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2105          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2106          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2107          0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2108         {
2109          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2110          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2111          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2112          0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2113         {
2114          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2115          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2116          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2117          0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2118         {
2119          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2120          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2121          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2122          0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2123         {
2124          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2125          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2126          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2127          0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2128         {
2129          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2130          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2131          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2132          0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2133         {
2134          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2135          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2136          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2137          0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2138         {
2139          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2140          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2141          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2142          0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2143         {
2144          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2145          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2146          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2147          0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2148         {
2149          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2150          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2151          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2152          0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2153         {
2154          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2155          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2156          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2157          0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2158         {
2159          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2160          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2161          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2162          0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2163 };
2164
2165 static chan_info_nphy_radio205x_t chan_info_nphyrev5_2056v5[] = {
2166         {
2167          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2168          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2169          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2170          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2171         {
2172          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2173          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2174          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2175          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2176         {
2177          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2178          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2179          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2180          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2181         {
2182          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2183          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2184          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2185          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2186         {
2187          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2188          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2189          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2190          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2191         {
2192          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2193          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2194          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2195          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2196         {
2197          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2198          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2199          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2200          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2201         {
2202          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2203          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2204          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2205          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2206         {
2207          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2208          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2209          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2210          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2211         {
2212          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2213          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2214          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2215          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2216         {
2217          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2218          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2219          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2220          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2221         {
2222          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2223          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2224          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2225          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2226         {
2227          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2228          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2229          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2230          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2231         {
2232          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2233          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2234          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2235          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2236         {
2237          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2238          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2239          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2240          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2241         {
2242          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2243          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2244          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2245          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2246         {
2247          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2248          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2249          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2250          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2251         {
2252          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2253          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2254          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2255          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2256         {
2257          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2258          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2259          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2260          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2261         {
2262          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2263          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2264          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2265          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2266         {
2267          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2268          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2269          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2270          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2271         {
2272          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2273          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2274          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2275          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2276         {
2277          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2278          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2279          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2280          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2281         {
2282          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2283          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2284          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2285          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2286         {
2287          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2288          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2289          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2290          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2291         {
2292          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2293          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2294          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2295          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2296         {
2297          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2298          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2299          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2300          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2301         {
2302          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2303          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2304          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2305          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2306         {
2307          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2308          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2309          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2310          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2311         {
2312          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2313          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2314          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2315          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2316         {
2317          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2318          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2319          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2320          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2321         {
2322          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2323          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2324          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2325          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2326         {
2327          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2328          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2329          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2330          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2331         {
2332          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2333          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2334          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2335          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2336         {
2337          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2338          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2339          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2340          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2341         {
2342          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2343          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2344          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2345          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2346         {
2347          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2348          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2349          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2350          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2351         {
2352          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2353          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2354          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2355          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2356         {
2357          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2358          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2359          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2360          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2361         {
2362          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2363          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2364          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2365          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2366         {
2367          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2368          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2369          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2370          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2371         {
2372          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2373          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2374          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2375          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2376         {
2377          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2378          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2379          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2380          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2381         {
2382          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2383          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2384          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2385          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2386         {
2387          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2388          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2389          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2390          0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2391         {
2392          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2393          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2394          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2395          0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2396         {
2397          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2398          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2399          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2400          0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2401         {
2402          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2403          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2404          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2405          0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2406         {
2407          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2408          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2409          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2410          0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2411         {
2412          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2413          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2414          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2415          0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2416         {
2417          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2418          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2419          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2420          0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2421         {
2422          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2423          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2424          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2425          0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2426         {
2427          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2428          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2429          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2430          0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2431         {
2432          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2433          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2434          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2435          0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2436         {
2437          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2438          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2439          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2440          0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2441         {
2442          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2443          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2444          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2445          0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2446         {
2447          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2448          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2449          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2450          0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2451         {
2452          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2453          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2454          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2455          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2456         {
2457          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2458          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2459          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2460          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2461         {
2462          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2463          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2464          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2465          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2466         {
2467          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2468          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2469          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2470          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2471         {
2472          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2473          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2474          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2475          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2476         {
2477          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2478          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2479          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2480          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2481         {
2482          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2483          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2484          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2485          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2486         {
2487          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2488          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2489          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2490          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2491         {
2492          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2493          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2494          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2495          0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2496         {
2497          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2498          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2499          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2500          0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2501         {
2502          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2503          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2504          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2505          0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2506         {
2507          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2508          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2509          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2510          0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2511         {
2512          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2513          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2514          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2515          0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2516         {
2517          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2518          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2519          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2520          0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2521         {
2522          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2523          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2524          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2525          0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2526         {
2527          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2528          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2529          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2530          0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2531         {
2532          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2533          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2534          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2535          0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2536         {
2537          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2538          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2539          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2540          0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2541         {
2542          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2543          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2544          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2545          0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2546         {
2547          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2548          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2549          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2550          0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2551         {
2552          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2553          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2554          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2555          0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2556         {
2557          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2558          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2559          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2560          0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2561         {
2562          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2563          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2564          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2565          0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2566         {
2567          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2568          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2569          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2570          0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2571         {
2572          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2573          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2574          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2575          0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2576         {
2577          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2578          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2579          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2580          0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2581         {
2582          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2583          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2584          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2585          0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2586         {
2587          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2588          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2589          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2590          0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2591         {
2592          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2593          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2594          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2595          0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2596         {
2597          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2598          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2599          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2600          0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2601         {
2602          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2603          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2604          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2605          0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2606         {
2607          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2608          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2609          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2610          0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2611         {
2612          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2613          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2614          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2615          0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2616         {
2617          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2618          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2619          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2620          0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2621         {
2622          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2623          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2624          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2625          0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2626         {
2627          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2628          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2629          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2630          0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2631         {
2632          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2633          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2634          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2635          0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2636         {
2637          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2638          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2639          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2640          0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2641         {
2642          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2643          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2644          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2645          0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2646         {
2647          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2648          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2649          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2650          0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2651         {
2652          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2653          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2654          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2655          0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2656         {
2657          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2658          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2659          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2660          0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2661         {
2662          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2663          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2664          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2665          0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2666         {
2667          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2668          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2669          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2670          0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2671         {
2672          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2673          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2674          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2675          0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2676         {
2677          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2678          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2679          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2680          0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2681         {
2682          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2683          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2684          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2685          0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2686         {
2687          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2688          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2689          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2690          0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2691         {
2692          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2693          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2694          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2695          0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2696         {
2697          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2698          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2699          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2700          0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2701         {
2702          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2703          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2704          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2705          0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2706         {
2707          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2708          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2709          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2710          0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2711         {
2712          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2713          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2714          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2715          0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2716         {
2717          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2718          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2719          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2720          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2721         {
2722          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2723          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2724          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2725          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2726         {
2727          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2728          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2729          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2730          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2731         {
2732          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2733          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2734          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2735          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2736         {
2737          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2738          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2739          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2740          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2741         {
2742          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2743          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2744          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2745          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2746         {
2747          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2748          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2749          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2750          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2751         {
2752          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2753          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2754          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2755          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2756         {
2757          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2758          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2759          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2760          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2761         {
2762          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2763          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2764          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2765          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2766         {
2767          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2768          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2769          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2770          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2771         {
2772          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2773          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2774          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2775          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2776         {
2777          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2778          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2779          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2780          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2781         {
2782          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2783          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2784          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2785          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2786 };
2787
2788 static chan_info_nphy_radio205x_t chan_info_nphyrev6_2056v6[] = {
2789         {
2790          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2791          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2792          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2793          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2794         {
2795          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2796          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2797          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2798          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2799         {
2800          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2801          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2802          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2803          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2804         {
2805          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2806          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2807          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2808          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2809         {
2810          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2811          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2812          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2813          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2814         {
2815          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2816          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2817          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2818          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2819         {
2820          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2821          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2822          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2823          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2824         {
2825          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2826          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2827          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2828          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2829         {
2830          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2831          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2832          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2833          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2834         {
2835          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2836          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2837          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2838          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2839         {
2840          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2841          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2842          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2843          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2844         {
2845          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2846          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2847          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2848          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2849         {
2850          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2851          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2852          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2853          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2854         {
2855          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2856          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2857          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2858          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2859         {
2860          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2861          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2862          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2863          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2864         {
2865          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2866          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2867          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2868          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2869         {
2870          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2871          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2872          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2873          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2874         {
2875          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2876          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2877          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2878          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2879         {
2880          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2881          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2882          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2883          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2884         {
2885          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2886          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2887          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2888          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2889         {
2890          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2891          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2892          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2893          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2894         {
2895          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2896          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2897          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2898          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2899         {
2900          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2901          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2902          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2903          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2904         {
2905          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2906          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2907          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2908          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2909         {
2910          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2911          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2912          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2913          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2914         {
2915          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2916          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2917          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2918          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2919         {
2920          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2921          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2922          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2923          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2924         {
2925          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2926          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2927          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2928          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2929         {
2930          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2931          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2932          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2933          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2934         {
2935          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2936          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2937          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2938          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2939         {
2940          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2941          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2942          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2943          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2944         {
2945          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2946          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2947          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2948          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2949         {
2950          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2951          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2952          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2953          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2954         {
2955          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2956          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2957          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2958          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2959         {
2960          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2961          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2962          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2963          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2964         {
2965          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2966          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2967          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2968          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2969         {
2970          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2971          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2972          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2973          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2974         {
2975          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2976          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2977          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2978          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2979         {
2980          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2981          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2982          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2983          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2984         {
2985          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2986          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
2987          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2988          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2989         {
2990          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2991          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
2992          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
2993          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2994         {
2995          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2996          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
2997          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
2998          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2999         {
3000          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3001          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3002          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3003          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3004         {
3005          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3006          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3007          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3008          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3009         {
3010          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3011          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3012          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3013          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3014         {
3015          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3016          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3017          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3018          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3019         {
3020          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3021          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3022          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3023          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3024         {
3025          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3026          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3027          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3028          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3029         {
3030          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3031          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3032          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3033          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3034         {
3035          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3036          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3037          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3038          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3039         {
3040          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3041          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3042          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3043          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3044         {
3045          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3046          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3047          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3048          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3049         {
3050          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3051          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3052          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3053          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3054         {
3055          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3056          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3057          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3058          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3059         {
3060          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3061          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3062          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3063          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3064         {
3065          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3066          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3067          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3068          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3069         {
3070          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3071          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3072          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3073          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3074         {
3075          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3076          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3077          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3078          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3079         {
3080          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3081          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3082          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3083          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3084         {
3085          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3086          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3087          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3088          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3089         {
3090          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3091          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3092          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3093          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3094         {
3095          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3096          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3097          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3098          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3099         {
3100          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3101          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3102          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3103          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3104         {
3105          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3106          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3107          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3108          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3109         {
3110          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3111          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3112          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3113          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3114         {
3115          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3116          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3117          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3118          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3119         {
3120          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3121          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3122          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3123          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3124         {
3125          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3126          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3127          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3128          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3129         {
3130          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3131          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3132          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3133          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3134         {
3135          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3136          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3137          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3138          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3139         {
3140          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3141          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3142          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3143          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3144         {
3145          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3146          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3147          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3148          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3149         {
3150          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3151          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3152          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3153          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3154         {
3155          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3156          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3157          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3158          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3159         {
3160          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3161          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3162          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3163          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3164         {
3165          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3166          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3167          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3168          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3169         {
3170          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3171          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3172          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3173          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3174         {
3175          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3176          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3177          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3178          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3179         {
3180          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3181          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3182          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3183          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3184         {
3185          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3186          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3187          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3188          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3189         {
3190          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3191          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3192          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3193          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3194         {
3195          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3196          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3197          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3198          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3199         {
3200          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3201          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3202          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3203          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3204         {
3205          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3206          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3207          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3208          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3209         {
3210          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3211          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3212          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3213          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3214         {
3215          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3216          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3217          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3218          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3219         {
3220          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3221          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3222          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3223          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3224         {
3225          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3226          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3227          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3228          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3229         {
3230          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3231          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3232          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3233          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3234         {
3235          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3236          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3237          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3238          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3239         {
3240          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3241          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3242          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3243          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3244         {
3245          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3246          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3247          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3248          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3249         {
3250          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3251          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3252          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3253          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3254         {
3255          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3256          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3257          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3258          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3259         {
3260          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3261          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3262          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3263          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3264         {
3265          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3266          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3267          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3268          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3269         {
3270          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3271          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3272          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3273          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3274         {
3275          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3276          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3277          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3278          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3279         {
3280          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3281          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3282          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3283          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3284         {
3285          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3286          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3287          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3288          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3289         {
3290          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3291          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3292          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3293          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3294         {
3295          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3296          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3297          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3298          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3299         {
3300          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3301          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3302          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3303          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3304         {
3305          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3306          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3307          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3308          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3309         {
3310          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3311          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3312          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3313          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3314         {
3315          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3316          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3317          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3318          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3319         {
3320          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3321          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3322          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3323          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3324         {
3325          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3326          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3327          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3328          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3329         {
3330          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3331          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3332          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3333          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3334         {
3335          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3336          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3337          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3338          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3339         {
3340          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3341          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3342          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3343          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3344         {
3345          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3346          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3347          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3348          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3349         {
3350          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3351          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3352          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3353          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3354         {
3355          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3356          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3357          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3358          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3359         {
3360          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3361          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3362          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3363          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3364         {
3365          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3366          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3367          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3368          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3369         {
3370          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3371          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3372          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3373          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3374         {
3375          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3376          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3377          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3378          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3379         {
3380          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3381          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3382          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3383          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3384         {
3385          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3386          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3387          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3388          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3389         {
3390          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3391          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3392          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3393          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3394         {
3395          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3396          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3397          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3398          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3399         {
3400          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3401          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3402          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3403          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3404         {
3405          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3406          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3407          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3408          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3409 };
3410
3411 static chan_info_nphy_radio205x_t chan_info_nphyrev5n6_2056v7[] = {
3412         {
3413          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3414          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3415          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3416          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3417         {
3418          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3419          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3420          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3421          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3422         {
3423          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3424          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3425          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3426          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3427         {
3428          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3429          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3430          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3431          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3432         {
3433          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3434          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3435          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3436          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3437         {
3438          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3439          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3440          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3441          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3442         {
3443          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3444          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3445          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3446          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3447         {
3448          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3449          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3450          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3451          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3452         {
3453          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3454          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3455          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3456          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3457         {
3458          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3459          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3460          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3461          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3462         {
3463          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3464          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3465          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3466          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3467         {
3468          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3469          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3470          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3471          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3472         {
3473          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3474          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3475          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3476          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3477         {
3478          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3479          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3480          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3481          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3482         {
3483          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3484          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3485          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3486          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3487         {
3488          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3489          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3490          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3491          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3492         {
3493          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3494          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3495          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3496          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3497         {
3498          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3499          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3500          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3501          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3502         {
3503          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3504          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3505          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3506          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3507         {
3508          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3509          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3510          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3511          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3512         {
3513          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3514          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3515          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3516          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3517         {
3518          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3519          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3520          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3521          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3522         {
3523          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3524          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3525          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3526          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3527         {
3528          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3529          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3530          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3531          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3532         {
3533          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3534          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3535          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3536          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3537         {
3538          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3539          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3540          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3541          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3542         {
3543          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3544          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3545          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3546          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3547         {
3548          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3549          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3550          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3551          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3552         {
3553          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3554          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3555          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3556          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3557         {
3558          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3559          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3560          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3561          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3562         {
3563          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3564          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3565          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3566          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3567         {
3568          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3569          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3570          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3571          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3572         {
3573          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3574          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3575          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3576          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3577         {
3578          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3579          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3580          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3581          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3582         {
3583          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3584          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3585          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3586          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3587         {
3588          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3589          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3590          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3591          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3592         {
3593          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3594          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3595          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3596          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3597         {
3598          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3599          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3600          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3601          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3602         {
3603          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3604          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3605          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3606          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3607         {
3608          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3609          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3610          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3611          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3612         {
3613          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3614          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3615          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3616          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3617         {
3618          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3619          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3620          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3621          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3622         {
3623          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3624          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3625          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3626          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3627         {
3628          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3629          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3630          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3631          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3632         {
3633          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3634          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3635          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3636          0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3637         {
3638          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3639          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3640          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3641          0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3642         {
3643          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3644          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3645          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3646          0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3647         {
3648          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3649          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3650          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3651          0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3652         {
3653          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3654          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3655          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3656          0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3657         {
3658          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3659          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3660          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3661          0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3662         {
3663          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3664          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3665          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3666          0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3667         {
3668          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3669          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3670          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3671          0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3672         {
3673          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3674          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3675          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3676          0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3677         {
3678          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3679          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3680          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3681          0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3682         {
3683          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3684          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3685          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3686          0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3687         {
3688          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3689          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3690          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3691          0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3692         {
3693          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3694          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3695          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3696          0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3697         {
3698          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3699          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3700          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3701          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3702         {
3703          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3704          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3705          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3706          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3707         {
3708          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3709          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3710          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3711          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3712         {
3713          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3714          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3715          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3716          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3717         {
3718          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3719          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3720          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3721          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3722         {
3723          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3724          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3725          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3726          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3727         {
3728          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3729          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3730          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3731          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3732         {
3733          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3734          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3735          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3736          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3737         {
3738          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3739          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3740          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3741          0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3742         {
3743          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3744          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3745          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3746          0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3747         {
3748          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3749          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3750          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3751          0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3752         {
3753          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3754          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3755          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3756          0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3757         {
3758          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3759          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3760          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3761          0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3762         {
3763          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3764          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3765          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3766          0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3767         {
3768          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3769          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3770          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3771          0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3772         {
3773          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3774          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3775          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3776          0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3777         {
3778          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3779          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3780          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3781          0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3782         {
3783          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3784          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3785          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3786          0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3787         {
3788          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3789          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3790          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3791          0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3792         {
3793          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3794          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3795          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3796          0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3797         {
3798          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3799          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3800          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3801          0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3802         {
3803          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3804          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3805          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3806          0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3807         {
3808          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3809          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3810          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3811          0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3812         {
3813          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3814          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3815          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3816          0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3817         {
3818          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3819          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3820          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3821          0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3822         {
3823          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3824          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3825          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3826          0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3827         {
3828          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3829          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3830          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3831          0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3832         {
3833          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3834          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3835          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3836          0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3837         {
3838          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3839          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3840          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3841          0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3842         {
3843          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3844          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3845          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3846          0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3847         {
3848          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3849          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3850          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3851          0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3852         {
3853          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3854          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3855          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3856          0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3857         {
3858          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3859          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3860          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3861          0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3862         {
3863          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3864          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3865          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3866          0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3867         {
3868          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3869          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3870          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3871          0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3872         {
3873          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3874          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3875          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3876          0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3877         {
3878          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3879          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3880          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3881          0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3882         {
3883          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3884          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3885          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3886          0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3887         {
3888          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3889          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3890          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3891          0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3892         {
3893          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3894          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3895          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3896          0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3897         {
3898          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3899          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3900          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3901          0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3902         {
3903          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3904          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3905          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3906          0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3907         {
3908          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3909          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3910          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3911          0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3912         {
3913          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3914          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3915          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3916          0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3917         {
3918          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3919          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3920          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3921          0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3922         {
3923          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3924          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3925          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3926          0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3927         {
3928          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3929          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3930          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3931          0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3932         {
3933          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3934          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3935          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3936          0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3937         {
3938          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3939          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3940          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3941          0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3942         {
3943          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3944          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3945          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3946          0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3947         {
3948          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3949          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3950          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3951          0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3952         {
3953          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3954          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3955          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3956          0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3957         {
3958          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3959          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3960          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3961          0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3962         {
3963          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3964          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3965          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3966          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3967         {
3968          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3969          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3970          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3971          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3972         {
3973          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3974          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3975          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3976          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3977         {
3978          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3979          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3980          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3981          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3982         {
3983          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3984          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
3985          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
3986          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3987         {
3988          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3989          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
3990          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
3991          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3992         {
3993          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3994          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
3995          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
3996          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3997         {
3998          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3999          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
4000          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4001          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4002         {
4003          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4004          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4005          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4006          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4007         {
4008          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4009          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4010          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4011          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4012         {
4013          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4014          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4015          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4016          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4017         {
4018          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4019          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4020          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4021          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4022         {
4023          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4024          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4025          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4026          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4027         {
4028          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4029          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4030          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4031          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4032 };
4033
4034 static chan_info_nphy_radio205x_t chan_info_nphyrev6_2056v8[] = {
4035         {
4036          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4037          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4038          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4039          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4040         {
4041          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4042          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4043          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4044          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4045         {
4046          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4047          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4048          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4049          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4050         {
4051          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4052          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4053          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4054          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4055         {
4056          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4057          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4058          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4059          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4060         {
4061          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4062          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4063          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4064          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4065         {
4066          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4067          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4068          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4069          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4070         {
4071          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4072          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4073          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4074          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4075         {
4076          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4077          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4078          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4079          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4080         {
4081          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4082          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4083          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4084          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4085         {
4086          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4087          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4088          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4089          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4090         {
4091          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4092          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4093          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4094          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4095         {
4096          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4097          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4098          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4099          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4100         {
4101          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4102          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4103          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4104          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4105         {
4106          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4107          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4108          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4109          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4110         {
4111          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4112          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4113          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4114          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4115         {
4116          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4117          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4118          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4119          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4120         {
4121          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4122          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4123          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4124          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4125         {
4126          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4127          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4128          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4129          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4130         {
4131          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4132          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4133          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4134          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4135         {
4136          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4137          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4138          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4139          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4140         {
4141          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4142          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4143          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4144          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4145         {
4146          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4147          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4148          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4149          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4150         {
4151          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4152          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4153          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4154          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4155         {
4156          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4157          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4158          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4159          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4160         {
4161          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4162          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4163          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4164          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4165         {
4166          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4167          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4168          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4169          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4170         {
4171          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4172          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4173          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4174          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4175         {
4176          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4177          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4178          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4179          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4180         {
4181          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4182          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4183          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4184          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4185         {
4186          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4187          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4188          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4189          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4190         {
4191          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4192          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4193          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4194          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4195         {
4196          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4197          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4198          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4199          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4200         {
4201          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4202          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4203          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4204          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4205         {
4206          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4207          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4208          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4209          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4210         {
4211          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4212          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4213          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4214          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4215         {
4216          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4217          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4218          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4219          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4220         {
4221          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4222          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4223          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4224          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4225         {
4226          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4227          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4228          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4229          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4230         {
4231          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4232          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4233          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4234          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4235         {
4236          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4237          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4238          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4239          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4240         {
4241          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4242          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4243          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4244          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4245         {
4246          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4247          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4248          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4249          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4250         {
4251          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4252          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4253          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4254          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4255         {
4256          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4257          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4258          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4259          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4260         {
4261          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4262          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4263          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4264          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4265         {
4266          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4267          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4268          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4269          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4270         {
4271          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4272          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4273          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4274          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4275         {
4276          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4277          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4278          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4279          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4280         {
4281          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4282          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4283          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4284          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4285         {
4286          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4287          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4288          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4289          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4290         {
4291          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4292          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4293          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4294          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4295         {
4296          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4297          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4298          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4299          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4300         {
4301          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4302          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4303          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4304          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4305         {
4306          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4307          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4308          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4309          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4310         {
4311          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4312          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4313          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4314          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4315         {
4316          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4317          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4318          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4319          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4320         {
4321          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4322          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4323          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4324          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4325         {
4326          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4327          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4328          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4329          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4330         {
4331          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4332          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4333          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4334          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4335         {
4336          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4337          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4338          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4339          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4340         {
4341          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4342          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4343          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4344          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4345         {
4346          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4347          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4348          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4349          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4350         {
4351          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4352          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4353          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4354          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4355         {
4356          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4357          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4358          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4359          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4360         {
4361          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4362          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4363          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4364          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4365         {
4366          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4367          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4368          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4369          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4370         {
4371          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4372          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4373          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4374          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4375         {
4376          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4377          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4378          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4379          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4380         {
4381          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4382          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4383          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4384          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4385         {
4386          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4387          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4388          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4389          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4390         {
4391          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4392          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4393          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4394          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4395         {
4396          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4397          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4398          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4399          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4400         {
4401          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4402          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4403          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4404          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4405         {
4406          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4407          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4408          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4409          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4410         {
4411          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4412          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4413          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4414          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4415         {
4416          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4417          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4418          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4419          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4420         {
4421          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4422          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4423          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4424          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4425         {
4426          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4427          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4428          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4429          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4430         {
4431          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4432          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4433          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4434          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4435         {
4436          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4437          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4438          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4439          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4440         {
4441          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4442          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4443          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4444          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4445         {
4446          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4447          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4448          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4449          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4450         {
4451          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4452          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4453          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4454          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4455         {
4456          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4457          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4458          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4459          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4460         {
4461          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4462          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4463          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4464          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4465         {
4466          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4467          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4468          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4469          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4470         {
4471          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4472          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4473          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4474          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4475         {
4476          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4477          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4478          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4479          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4480         {
4481          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4482          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4483          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4484          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4485         {
4486          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4487          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4488          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4489          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4490         {
4491          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4492          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4493          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4494          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4495         {
4496          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4497          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4498          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4499          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4500         {
4501          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4502          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4503          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4504          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4505         {
4506          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4507          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4508          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4509          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4510         {
4511          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4512          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4513          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4514          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4515         {
4516          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4517          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4518          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4519          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4520         {
4521          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4522          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4523          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4524          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4525         {
4526          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4527          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4528          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4529          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4530         {
4531          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4532          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4533          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4534          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4535         {
4536          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4537          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4538          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4539          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4540         {
4541          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4542          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4543          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4544          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4545         {
4546          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4547          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4548          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4549          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4550         {
4551          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4552          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4553          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4554          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4555         {
4556          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4557          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4558          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4559          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4560         {
4561          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4562          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4563          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4564          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4565         {
4566          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4567          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4568          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4569          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4570         {
4571          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4572          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4573          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4574          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4575         {
4576          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4577          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4578          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4579          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4580         {
4581          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4582          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4583          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4584          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4585         {
4586          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4587          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4588          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4589          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4590         {
4591          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4592          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4593          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4594          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4595         {
4596          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4597          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4598          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4599          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4600         {
4601          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4602          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4603          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4604          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4605         {
4606          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4607          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4608          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4609          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4610         {
4611          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4612          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4613          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4614          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4615         {
4616          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4617          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4618          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4619          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4620         {
4621          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4622          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4623          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4624          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4625         {
4626          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4627          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4628          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4629          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4630         {
4631          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4632          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4633          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4634          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4635         {
4636          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4637          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4638          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4639          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4640         {
4641          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4642          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4643          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4644          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4645         {
4646          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4647          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4648          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4649          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4650         {
4651          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4652          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4653          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4654          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4655 };
4656
4657 static chan_info_nphy_radio205x_t chan_info_nphyrev6_2056v11[] = {
4658         {
4659          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4660          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4661          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4662          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4663         {
4664          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4665          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4666          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4667          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4668         {
4669          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4670          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4671          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4672          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4673         {
4674          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4675          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4676          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4677          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4678         {
4679          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4680          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4681          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4682          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4683         {
4684          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4685          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4686          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4687          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4688         {
4689          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4690          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4691          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4692          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4693         {
4694          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4695          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4696          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4697          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4698         {
4699          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4700          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4701          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4702          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4703         {
4704          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4705          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4706          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4707          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4708         {
4709          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4710          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4711          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4712          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4713         {
4714          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4715          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4716          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4717          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4718         {
4719          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4720          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4721          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4722          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4723         {
4724          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4725          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4726          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4727          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4728         {
4729          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4730          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4731          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4732          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4733         {
4734          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4735          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4736          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4737          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4738         {
4739          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4740          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4741          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4742          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4743         {
4744          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4745          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4746          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4747          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4748         {
4749          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4750          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4751          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4752          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4753         {
4754          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4755          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4756          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4757          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4758         {
4759          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4760          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4761          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4762          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4763         {
4764          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4765          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4766          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4767          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4768         {
4769          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4770          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4771          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4772          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4773         {
4774          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4775          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4776          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4777          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4778         {
4779          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4780          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4781          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4782          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4783         {
4784          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4785          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4786          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4787          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4788         {
4789          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4790          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4791          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4792          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4793         {
4794          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4795          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4796          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4797          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4798         {
4799          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4800          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4801          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4802          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4803         {
4804          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4805          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4806          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4807          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4808         {
4809          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4810          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4811          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4812          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4813         {
4814          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4815          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4816          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4817          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4818         {
4819          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4820          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4821          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4822          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4823         {
4824          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4825          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4826          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4827          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4828         {
4829          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4830          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4831          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4832          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4833         {
4834          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4835          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4836          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4837          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4838         {
4839          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4840          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4841          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4842          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4843         {
4844          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4845          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4846          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4847          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4848         {
4849          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4850          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4851          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4852          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4853         {
4854          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4855          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4856          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4857          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4858         {
4859          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4860          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4861          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4862          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4863         {
4864          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4865          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4866          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4867          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4868         {
4869          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4870          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4871          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4872          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4873         {
4874          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4875          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4876          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4877          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4878         {
4879          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4880          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4881          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4882          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4883         {
4884          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4885          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4886          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4887          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4888         {
4889          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4890          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4891          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4892          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4893         {
4894          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4895          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4896          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4897          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4898         {
4899          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4900          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4901          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4902          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4903         {
4904          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4905          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4906          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4907          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4908         {
4909          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4910          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4911          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4912          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4913         {
4914          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4915          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4916          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4917          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4918         {
4919          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4920          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4921          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4922          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4923         {
4924          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4925          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4926          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4927          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4928         {
4929          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4930          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4931          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4932          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4933         {
4934          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4935          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4936          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4937          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4938         {
4939          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4940          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4941          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4942          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4943         {
4944          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4945          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4946          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4947          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4948         {
4949          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4950          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4951          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4952          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4953         {
4954          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4955          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4956          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4957          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4958         {
4959          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4960          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4961          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4962          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4963         {
4964          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4965          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4966          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4967          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4968         {
4969          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4970          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4971          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4972          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4973         {
4974          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4975          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4976          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4977          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4978         {
4979          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4980          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4981          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4982          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4983         {
4984          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4985          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4986          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4987          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4988         {
4989          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4990          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4991          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4992          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4993         {
4994          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
4995          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4996          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4997          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4998         {
4999          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
5000          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5001          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5002          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
5003         {
5004          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5005          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5006          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5007          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5008         {
5009          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5010          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5011          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5012          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5013         {
5014          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5015          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5016          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5017          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5018         {
5019          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5020          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5021          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5022          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5023         {
5024          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5025          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5026          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5027          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5028         {
5029          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5030          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5031          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5032          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5033         {
5034          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5035          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5036          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5037          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5038         {
5039          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5040          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5041          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5042          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5043         {
5044          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5045          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5046          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5047          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5048         {
5049          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5050          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5051          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5052          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5053         {
5054          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5055          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5056          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5057          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5058         {
5059          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5060          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5061          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5062          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5063         {
5064          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5065          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5066          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5067          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5068         {
5069          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5070          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5071          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5072          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5073         {
5074          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5075          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5076          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5077          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5078         {
5079          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5080          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5081          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5082          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5083         {
5084          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5085          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5086          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5087          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5088         {
5089          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5090          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5091          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5092          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5093         {
5094          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5095          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5096          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5097          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5098         {
5099          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5100          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5101          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5102          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5103         {
5104          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5105          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5106          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5107          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5108         {
5109          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5110          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5111          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5112          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5113         {
5114          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5115          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5116          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5117          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5118         {
5119          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5120          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5121          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5122          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5123         {
5124          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5125          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5126          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5127          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5128         {
5129          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5130          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5131          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5132          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5133         {
5134          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5135          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5136          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5137          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5138         {
5139          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5140          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5141          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5142          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5143         {
5144          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5145          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5146          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5147          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5148         {
5149          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5150          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5151          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5152          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5153         {
5154          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5155          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5156          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5157          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5158         {
5159          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5160          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5161          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5162          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5163         {
5164          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5165          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5166          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5167          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5168         {
5169          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5170          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5171          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5172          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5173         {
5174          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5175          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5176          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5177          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5178         {
5179          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5180          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5181          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5182          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5183         {
5184          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5185          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5186          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5187          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5188         {
5189          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5190          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5191          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5192          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5193         {
5194          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5195          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5196          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5197          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5198         {
5199          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5200          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5201          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5202          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5203         {
5204          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5205          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5206          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5207          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5208         {
5209          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5210          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5211          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5212          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5213         {
5214          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5215          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5216          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5217          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5218         {
5219          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5220          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5221          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5222          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5223         {
5224          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5225          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5226          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5227          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5228         {
5229          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5230          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5231          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5232          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5233         {
5234          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5235          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5236          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5237          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5238         {
5239          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5240          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5241          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5242          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5243         {
5244          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5245          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5246          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5247          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5248         {
5249          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5250          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5251          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5252          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5253         {
5254          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5255          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5256          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5257          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5258         {
5259          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5260          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5261          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5262          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5263         {
5264          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5265          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5266          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5267          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5268         {
5269          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5270          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5271          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5272          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5273         {
5274          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5275          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5276          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5277          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5278 };
5279
5280 static chan_info_nphy_radio2057_t chan_info_nphyrev7_2057_rev4[] = {
5281         {
5282          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5283          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5284          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5285          0x0215,
5286          0x0216,
5287          },
5288         {
5289          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5290          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5291          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5292          0x0214,
5293          0x0215,
5294          },
5295         {
5296          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5297          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5298          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5299          0x0213,
5300          0x0214,
5301          },
5302         {
5303          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5304          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5305          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5306          0x0212,
5307          0x0213,
5308          },
5309         {
5310          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5311          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5312          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5313          0x0211,
5314          0x0212,
5315          },
5316         {
5317          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5318          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5319          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5320          0x020f,
5321          0x0211,
5322          },
5323         {
5324          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5325          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5326          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5327          0x020e,
5328          0x020f,
5329          },
5330         {
5331          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5332          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5333          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5334          0x020d,
5335          0x020e,
5336          },
5337         {
5338          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5339          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5340          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5341          0x020c,
5342          0x020d,
5343          },
5344         {
5345          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5346          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5347          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5348          0x020b,
5349          0x020c,
5350          },
5351         {
5352          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5353          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5354          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5355          0x020a,
5356          0x020b,
5357          },
5358         {
5359          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5360          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5361          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5362          0x0209,
5363          0x020a,
5364          },
5365         {
5366          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5367          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5368          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5369          0x0208,
5370          0x0209,
5371          },
5372         {
5373          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5374          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5375          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5376          0x0207,
5377          0x0208,
5378          },
5379         {
5380          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5381          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5382          0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5383          0x0206,
5384          0x0207,
5385          },
5386         {
5387          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5388          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5389          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5390          0x0205,
5391          0x0206,
5392          },
5393         {
5394          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5395          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5396          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5397          0x0204,
5398          0x0205,
5399          },
5400         {
5401          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5402          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5403          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5404          0x0203,
5405          0x0204,
5406          },
5407         {
5408          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5409          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5410          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5411          0x0202,
5412          0x0203,
5413          },
5414         {
5415          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5416          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5417          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5418          0x0201,
5419          0x0202,
5420          },
5421         {
5422          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5423          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5424          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5425          0x0200,
5426          0x0201,
5427          },
5428         {
5429          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5430          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5431          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5432          0x01ff,
5433          0x0200,
5434          },
5435         {
5436          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5437          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5438          0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5439          0x01fe,
5440          0x01ff,
5441          },
5442         {
5443          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5444          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5445          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5446          0x01fc,
5447          0x01fd,
5448          },
5449         {
5450          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5451          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5452          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5453          0x01fb,
5454          0x01fc,
5455          },
5456         {
5457          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5458          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5459          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5460          0x01fa,
5461          0x01fb,
5462          },
5463         {
5464          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5465          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5466          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5467          0x01f9,
5468          0x01fa,
5469          },
5470         {
5471          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5472          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5473          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5474          0x01f8,
5475          0x01f9,
5476          },
5477         {
5478          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5479          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5480          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5481          0x01f7,
5482          0x01f8,
5483          },
5484         {
5485          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5486          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5487          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5488          0x01f6,
5489          0x01f7,
5490          },
5491         {
5492          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5493          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5494          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5495          0x01f5,
5496          0x01f6,
5497          },
5498         {
5499          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5500          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5501          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5502          0x01f4,
5503          0x01f5,
5504          },
5505         {
5506          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5507          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5508          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5509          0x01f3,
5510          0x01f4,
5511          },
5512         {
5513          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5514          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5515          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5516          0x01f2,
5517          0x01f3,
5518          },
5519         {
5520          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5521          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5522          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5523          0x01f1,
5524          0x01f2,
5525          },
5526         {
5527          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5528          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5529          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5530          0x01f0,
5531          0x01f1,
5532          },
5533         {
5534          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5535          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5536          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5537          0x01f0,
5538          0x01f0,
5539          },
5540         {
5541          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5542          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5543          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5544          0x01ef,
5545          0x01f0,
5546          },
5547         {
5548          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5549          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5550          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5551          0x01ee,
5552          0x01ef,
5553          },
5554         {
5555          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5556          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5557          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5558          0x01ed,
5559          0x01ee,
5560          },
5561         {
5562          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5563          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5564          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5565          0x01ec,
5566          0x01ed,
5567          },
5568         {
5569          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5570          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5571          0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5572          0x01eb,
5573          0x01ec,
5574          },
5575         {
5576          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5577          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5578          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5579          0x01ea,
5580          0x01eb,
5581          },
5582         {
5583          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5584          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5585          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5586          0x01e9,
5587          0x01ea,
5588          },
5589         {
5590          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5591          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5592          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5593          0x01e8,
5594          0x01e9,
5595          },
5596         {
5597          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5598          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5599          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5600          0x01e7,
5601          0x01e8,
5602          },
5603         {
5604          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5605          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5606          0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5607          0x01e6,
5608          0x01e7,
5609          },
5610         {
5611          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5612          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5613          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5614          0x01e5,
5615          0x01e6,
5616          },
5617         {
5618          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5619          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5620          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5621          0x01e5,
5622          0x01e5,
5623          },
5624         {
5625          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5626          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5627          0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5628          0x01e4,
5629          0x01e5,
5630          },
5631         {
5632          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5633          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5634          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5635          0x01e3,
5636          0x01e4,
5637          },
5638         {
5639          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5640          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5641          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5642          0x01e2,
5643          0x01e3,
5644          },
5645         {
5646          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5647          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5648          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5649          0x01e1,
5650          0x01e2,
5651          },
5652         {
5653          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5654          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5655          0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5656          0x01e0,
5657          0x01e1,
5658          },
5659         {
5660          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5661          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5662          0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5663          0x01df,
5664          0x01e0,
5665          },
5666         {
5667          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5668          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5669          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5670          0x01de,
5671          0x01df,
5672          },
5673         {
5674          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5675          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5676          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5677          0x01dd,
5678          0x01de,
5679          },
5680         {
5681          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5682          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5683          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5684          0x01dd,
5685          0x01dd,
5686          },
5687         {
5688          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5689          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5690          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5691          0x01dc,
5692          0x01dd,
5693          },
5694         {
5695          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5696          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5697          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5698          0x01db,
5699          0x01dc,
5700          },
5701         {
5702          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5703          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5704          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5705          0x01da,
5706          0x01db,
5707          },
5708         {
5709          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5710          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5711          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5712          0x01d9,
5713          0x01da,
5714          },
5715         {
5716          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5717          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5718          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5719          0x01d8,
5720          0x01d9,
5721          },
5722         {
5723          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5724          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5725          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5726          0x01d7,
5727          0x01d8,
5728          },
5729         {
5730          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5731          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5732          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5733          0x01d7,
5734          0x01d7,
5735          },
5736         {
5737          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5738          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5739          0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5740          0x01d6,
5741          0x01d7,
5742          },
5743         {
5744          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5745          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5746          0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5747          0x01d5,
5748          0x01d6,
5749          },
5750         {
5751          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5752          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5753          0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5754          0x01d4,
5755          0x01d5,
5756          },
5757         {
5758          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5759          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5760          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5761          0x01d3,
5762          0x01d4,
5763          },
5764         {
5765          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5766          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5767          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5768          0x01d2,
5769          0x01d3,
5770          },
5771         {
5772          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5773          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5774          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5775          0x01d2,
5776          0x01d2,
5777          },
5778         {
5779          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5780          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5781          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5782          0x01d1,
5783          0x01d2,
5784          },
5785         {
5786          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5787          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5788          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5789          0x01d0,
5790          0x01d1,
5791          },
5792         {
5793          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5794          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5795          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5796          0x01cf,
5797          0x01d0,
5798          },
5799         {
5800          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5801          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5802          0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5803          0x01ce,
5804          0x01cf,
5805          },
5806         {
5807          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5808          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5809          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5810          0x01ce,
5811          0x01ce,
5812          },
5813         {
5814          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5815          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5816          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5817          0x01cd,
5818          0x01ce,
5819          },
5820         {
5821          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5822          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5823          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5824          0x01cc,
5825          0x01cd,
5826          },
5827         {
5828          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5829          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5830          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5831          0x01cb,
5832          0x01cc,
5833          },
5834         {
5835          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5836          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5837          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5838          0x01ca,
5839          0x01cb,
5840          },
5841         {
5842          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5843          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5844          0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5845          0x01ca,
5846          0x01cb,
5847          },
5848         {
5849          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5850          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5851          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5852          0x01c9,
5853          0x01ca,
5854          },
5855         {
5856          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5857          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5858          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5859          0x01c9,
5860          0x01ca,
5861          },
5862         {
5863          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5864          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5865          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5866          0x01c9,
5867          0x01c9,
5868          },
5869         {
5870          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5871          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5872          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5873          0x01c8,
5874          0x01c9,
5875          },
5876         {
5877          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5878          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5879          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5880          0x01c8,
5881          0x01c9,
5882          },
5883         {
5884          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5885          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5886          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5887          0x01c8,
5888          0x01c8,
5889          },
5890         {
5891          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5892          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5893          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5894          0x01c7,
5895          0x01c8,
5896          },
5897         {
5898          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5899          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5900          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5901          0x01c7,
5902          0x01c8,
5903          },
5904         {
5905          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5906          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5907          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5908          0x01c6,
5909          0x01c7,
5910          },
5911         {
5912          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5913          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5914          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5915          0x01c6,
5916          0x01c7,
5917          },
5918         {
5919          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5920          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5921          0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5922          0x01c6,
5923          0x01c6,
5924          },
5925         {
5926          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5927          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5928          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5929          0x01c5,
5930          0x01c6,
5931          },
5932         {
5933          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5934          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5935          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5936          0x01c5,
5937          0x01c6,
5938          },
5939         {
5940          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5941          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5942          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5943          0x01c4,
5944          0x01c5,
5945          },
5946         {
5947          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5948          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5949          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5950          0x01c4,
5951          0x01c5,
5952          },
5953         {
5954          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5955          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5956          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5957          0x01c4,
5958          0x01c4,
5959          },
5960         {
5961          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5962          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5963          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5964          0x01c3,
5965          0x01c4,
5966          },
5967         {
5968          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5969          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5970          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
5971          0x01c3,
5972          0x01c4,
5973          },
5974         {
5975          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
5976          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5977          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
5978          0x01c2,
5979          0x01c3,
5980          },
5981         {
5982          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
5983          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5984          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
5985          0x01c2,
5986          0x01c3,
5987          },
5988         {
5989          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
5990          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5991          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
5992          0x01c2,
5993          0x01c2,
5994          },
5995         {
5996          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
5997          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5998          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
5999          0x01c1,
6000          0x01c2,
6001          },
6002         {
6003          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6004          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6005          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6006          0x01c0,
6007          0x01c1,
6008          },
6009         {
6010          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6011          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6012          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6013          0x01bf,
6014          0x01c0,
6015          },
6016         {
6017          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6018          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6019          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6020          0x01bf,
6021          0x01bf,
6022          },
6023         {
6024          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6025          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6026          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6027          0x01be,
6028          0x01bf,
6029          },
6030         {
6031          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6032          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6033          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6034          0x01bd,
6035          0x01be,
6036          },
6037         {
6038          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6039          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6040          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6041          0x01bc,
6042          0x01bd,
6043          },
6044         {
6045          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6046          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6047          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6048          0x043f,
6049          0x0443,
6050          },
6051         {
6052          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6053          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6054          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6055          0x043d,
6056          0x0441,
6057          },
6058         {
6059          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6060          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6061          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6062          0x043a,
6063          0x043f,
6064          },
6065         {
6066          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6067          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6068          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6069          0x0438,
6070          0x043d,
6071          },
6072         {
6073          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6074          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6075          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6076          0x0436,
6077          0x043a,
6078          },
6079         {
6080          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6081          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6082          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6083          0x0434,
6084          0x0438,
6085          },
6086         {
6087          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6088          0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6089          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6090          0x0431,
6091          0x0436,
6092          },
6093         {
6094          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6095          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6096          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6097          0x042f,
6098          0x0434,
6099          },
6100         {
6101          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6102          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6103          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6104          0x042d,
6105          0x0431,
6106          },
6107         {
6108          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6109          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6110          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6111          0x042b,
6112          0x042f,
6113          },
6114         {
6115          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6116          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6117          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6118          0x0429,
6119          0x042d,
6120          },
6121         {
6122          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6123          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6124          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6125          0x0427,
6126          0x042b,
6127          },
6128         {
6129          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6130          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6131          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6132          0x0424,
6133          0x0429,
6134          },
6135         {
6136          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6137          0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6138          0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6139          0x041f,
6140          0x0424}
6141 };
6142
6143 static chan_info_nphy_radio2057_rev5_t chan_info_nphyrev8_2057_rev5[] = {
6144         {
6145          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6146          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6147          0x043a, 0x043f, 0x0443},
6148         {
6149          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6150          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6151          0x0438, 0x043d, 0x0441},
6152         {
6153          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6154          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6155          0x0436, 0x043a, 0x043f},
6156         {
6157          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6158          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6159          0x0434, 0x0438, 0x043d},
6160         {
6161          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6162          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6163          0x0431, 0x0436, 0x043a},
6164         {
6165          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6166          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6167          0x042f, 0x0434, 0x0438},
6168         {
6169          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6170          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6171          0x042d, 0x0431, 0x0436},
6172         {
6173          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6174          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6175          0x042b, 0x042f, 0x0434},
6176         {
6177          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6178          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6179          0x0429, 0x042d, 0x0431},
6180         {
6181          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6182          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6183          0x0427, 0x042b, 0x042f},
6184         {
6185          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6186          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6187          0x0424, 0x0429, 0x042d},
6188         {
6189          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6190          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6191          0x0422, 0x0427, 0x042b},
6192         {
6193          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6194          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6195          0x0420, 0x0424, 0x0429},
6196         {
6197          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6198          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6199          0x041b, 0x041f, 0x0424}
6200 };
6201
6202 static chan_info_nphy_radio2057_rev5_t chan_info_nphyrev9_2057_rev5v1[] = {
6203         {
6204          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6205          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6206          0x043a, 0x043f, 0x0443},
6207         {
6208          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6209          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6210          0x0438, 0x043d, 0x0441},
6211         {
6212          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6213          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6214          0x0436, 0x043a, 0x043f},
6215         {
6216          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6217          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6218          0x0434, 0x0438, 0x043d},
6219         {
6220          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6221          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6222          0x0431, 0x0436, 0x043a},
6223         {
6224          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6225          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6226          0x042f, 0x0434, 0x0438},
6227         {
6228          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6229          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6230          0x042d, 0x0431, 0x0436},
6231         {
6232          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6233          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6234          0x042b, 0x042f, 0x0434},
6235         {
6236          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6237          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6238          0x0429, 0x042d, 0x0431},
6239         {
6240          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6241          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6242          0x0427, 0x042b, 0x042f},
6243         {
6244          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6245          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6246          0x0424, 0x0429, 0x042d},
6247         {
6248          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6249          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6250          0x0422, 0x0427, 0x042b},
6251         {
6252          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6253          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6254          0x0420, 0x0424, 0x0429},
6255         {
6256          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6257          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6258          0x041b, 0x041f, 0x0424}
6259 };
6260
6261 static chan_info_nphy_radio2057_t chan_info_nphyrev8_2057_rev7[] = {
6262         {
6263          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6264          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6265          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6266          0x0215,
6267          0x0216},
6268         {
6269          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6270          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6271          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6272          0x0214,
6273          0x0215},
6274         {
6275          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6276          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6277          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6278          0x0213,
6279          0x0214},
6280         {
6281          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6282          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6283          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6284          0x0212,
6285          0x0213},
6286         {
6287          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6288          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6289          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6290          0x0211,
6291          0x0212},
6292         {
6293          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6294          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6295          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6296          0x020f,
6297          0x0211},
6298         {
6299          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6300          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6301          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6302          0x020e,
6303          0x020f},
6304         {
6305          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6306          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6307          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6308          0x020d,
6309          0x020e},
6310         {
6311          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6312          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6313          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6314          0x020c,
6315          0x020d},
6316         {
6317          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6318          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6319          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6320          0x020b,
6321          0x020c},
6322         {
6323          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6324          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6325          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6326          0x020a,
6327          0x020b},
6328         {
6329          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6330          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6331          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6332          0x0209,
6333          0x020a},
6334         {
6335          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6336          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6337          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6338          0x0208,
6339          0x0209},
6340         {
6341          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6342          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6343          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6344          0x0207,
6345          0x0208},
6346         {
6347          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6348          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6349          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6350          0x0206,
6351          0x0207},
6352         {
6353          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6354          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6355          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6356          0x0205,
6357          0x0206},
6358         {
6359          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6360          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6361          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6362          0x0204,
6363          0x0205},
6364         {
6365          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6366          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6367          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6368          0x0203,
6369          0x0204},
6370         {
6371          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6372          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6373          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6374          0x0202,
6375          0x0203},
6376         {
6377          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6378          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6379          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6380          0x0201,
6381          0x0202},
6382         {
6383          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6384          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6385          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6386          0x0200,
6387          0x0201},
6388         {
6389          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6390          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6391          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6392          0x01ff,
6393          0x0200},
6394         {
6395          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6396          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6397          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6398          0x01fe,
6399          0x01ff},
6400         {
6401          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6402          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6403          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6404          0x01fc,
6405          0x01fd},
6406         {
6407          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6408          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6409          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6410          0x01fb,
6411          0x01fc},
6412         {
6413          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6414          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6415          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6416          0x01fa,
6417          0x01fb},
6418         {
6419          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6420          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6421          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6422          0x01f9,
6423          0x01fa},
6424         {
6425          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6426          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6427          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6428          0x01f8,
6429          0x01f9},
6430         {
6431          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6432          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6433          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6434          0x01f7,
6435          0x01f8},
6436         {
6437          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6438          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6439          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6440          0x01f6,
6441          0x01f7},
6442         {
6443          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6444          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6445          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6446          0x01f5,
6447          0x01f6},
6448         {
6449          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6450          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6451          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6452          0x01f4,
6453          0x01f5},
6454         {
6455          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6456          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6457          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6458          0x01f3,
6459          0x01f4},
6460         {
6461          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6462          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6463          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6464          0x01f2,
6465          0x01f3},
6466         {
6467          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6468          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6469          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6470          0x01f1,
6471          0x01f2},
6472         {
6473          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6474          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6475          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6476          0x01f0,
6477          0x01f1},
6478         {
6479          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6480          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6481          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6482          0x01f0,
6483          0x01f0},
6484         {
6485          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6486          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6487          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6488          0x01ef,
6489          0x01f0},
6490         {
6491          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6492          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6493          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6494          0x01ee,
6495          0x01ef},
6496         {
6497          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6498          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6499          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6500          0x01ed,
6501          0x01ee},
6502         {
6503          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6504          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6505          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6506          0x01ec,
6507          0x01ed},
6508         {
6509          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6510          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6511          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6512          0x01eb,
6513          0x01ec},
6514         {
6515          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6516          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6517          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6518          0x01ea,
6519          0x01eb},
6520         {
6521          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6522          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6523          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6524          0x01e9,
6525          0x01ea},
6526         {
6527          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6528          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6529          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6530          0x01e8,
6531          0x01e9},
6532         {
6533          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6534          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6535          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6536          0x01e7,
6537          0x01e8},
6538         {
6539          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6540          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6541          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6542          0x01e6,
6543          0x01e7},
6544         {
6545          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6546          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6547          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6548          0x01e5,
6549          0x01e6},
6550         {
6551          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6552          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6553          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6554          0x01e5,
6555          0x01e5},
6556         {
6557          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6558          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6559          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6560          0x01e4,
6561          0x01e5},
6562         {
6563          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6564          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6565          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6566          0x01e3,
6567          0x01e4},
6568         {
6569          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6570          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6571          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6572          0x01e2,
6573          0x01e3},
6574         {
6575          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6576          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6577          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6578          0x01e1,
6579          0x01e2},
6580         {
6581          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6582          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6583          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6584          0x01e0,
6585          0x01e1},
6586         {
6587          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6588          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6589          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6590          0x01df,
6591          0x01e0},
6592         {
6593          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6594          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6595          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6596          0x01de,
6597          0x01df},
6598         {
6599          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6600          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6601          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6602          0x01dd,
6603          0x01de},
6604         {
6605          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6606          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6607          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6608          0x01dd,
6609          0x01dd},
6610         {
6611          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6612          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6613          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6614          0x01dc,
6615          0x01dd},
6616         {
6617          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6618          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6619          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6620          0x01db,
6621          0x01dc},
6622         {
6623          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6624          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6625          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6626          0x01da,
6627          0x01db},
6628         {
6629          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6630          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6631          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6632          0x01d9,
6633          0x01da},
6634         {
6635          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6636          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6637          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6638          0x01d8,
6639          0x01d9},
6640         {
6641          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6642          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6643          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6644          0x01d7,
6645          0x01d8},
6646         {
6647          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6648          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6649          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6650          0x01d7,
6651          0x01d7},
6652         {
6653          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6654          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6655          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6656          0x01d6,
6657          0x01d7},
6658         {
6659          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6660          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6661          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6662          0x01d5,
6663          0x01d6},
6664         {
6665          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6666          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6667          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6668          0x01d4,
6669          0x01d5},
6670         {
6671          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6672          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6673          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6674          0x01d3,
6675          0x01d4},
6676         {
6677          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6678          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6679          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6680          0x01d2,
6681          0x01d3},
6682         {
6683          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6684          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6685          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6686          0x01d2,
6687          0x01d2},
6688         {
6689          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6690          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6691          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6692          0x01d1,
6693          0x01d2},
6694         {
6695          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6696          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6697          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6698          0x01d0,
6699          0x01d1},
6700         {
6701          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6702          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6703          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6704          0x01cf,
6705          0x01d0},
6706         {
6707          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6708          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6709          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6710          0x01ce,
6711          0x01cf},
6712         {
6713          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6714          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6715          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6716          0x01ce,
6717          0x01ce},
6718         {
6719          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6720          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6721          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6722          0x01cd,
6723          0x01ce},
6724         {
6725          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6726          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6727          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6728          0x01cc,
6729          0x01cd},
6730         {
6731          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6732          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6733          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6734          0x01cb,
6735          0x01cc},
6736         {
6737          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6738          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6739          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6740          0x01ca,
6741          0x01cb},
6742         {
6743          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6744          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6745          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6746          0x01ca,
6747          0x01cb},
6748         {
6749          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6750          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6751          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6752          0x01c9,
6753          0x01ca},
6754         {
6755          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6756          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6757          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6758          0x01c9,
6759          0x01ca},
6760         {
6761          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6762          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6763          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6764          0x01c9,
6765          0x01c9},
6766         {
6767          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6768          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6769          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6770          0x01c8,
6771          0x01c9},
6772         {
6773          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6774          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6775          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6776          0x01c8,
6777          0x01c9},
6778         {
6779          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6780          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6781          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6782          0x01c8,
6783          0x01c8},
6784         {
6785          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6786          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6787          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6788          0x01c7,
6789          0x01c8},
6790         {
6791          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6792          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6793          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6794          0x01c7,
6795          0x01c8},
6796         {
6797          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6798          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6799          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6800          0x01c6,
6801          0x01c7},
6802         {
6803          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6804          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6805          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6806          0x01c6,
6807          0x01c7},
6808         {
6809          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6810          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6811          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6812          0x01c6,
6813          0x01c6},
6814         {
6815          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6816          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6817          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6818          0x01c5,
6819          0x01c6},
6820         {
6821          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6822          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6823          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6824          0x01c5,
6825          0x01c6},
6826         {
6827          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6828          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6829          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6830          0x01c4,
6831          0x01c5},
6832         {
6833          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6834          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6835          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6836          0x01c4,
6837          0x01c5},
6838         {
6839          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6840          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6841          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6842          0x01c4,
6843          0x01c4},
6844         {
6845          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6846          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6847          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6848          0x01c3,
6849          0x01c4},
6850         {
6851          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6852          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6853          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6854          0x01c3,
6855          0x01c4},
6856         {
6857          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6858          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6859          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6860          0x01c2,
6861          0x01c3},
6862         {
6863          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6864          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6865          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6866          0x01c2,
6867          0x01c3},
6868         {
6869          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6870          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6871          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6872          0x01c2,
6873          0x01c2},
6874         {
6875          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6876          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6877          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6878          0x01c1,
6879          0x01c2},
6880         {
6881          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6882          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6883          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6884          0x01c0,
6885          0x01c1},
6886         {
6887          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6888          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6889          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6890          0x01bf,
6891          0x01c0},
6892         {
6893          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6894          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6895          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6896          0x01bf,
6897          0x01bf},
6898         {
6899          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6900          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6901          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6902          0x01be,
6903          0x01bf},
6904         {
6905          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6906          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6907          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6908          0x01bd,
6909          0x01be},
6910         {
6911          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6912          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6913          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6914          0x01bc,
6915          0x01bd},
6916         {
6917          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6918          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6919          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6920          0x043f,
6921          0x0443},
6922         {
6923          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6924          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6925          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6926          0x043d,
6927          0x0441},
6928         {
6929          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6930          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6931          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6932          0x043a,
6933          0x043f},
6934         {
6935          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6936          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6937          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6938          0x0438,
6939          0x043d},
6940         {
6941          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6942          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6943          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6944          0x0436,
6945          0x043a},
6946         {
6947          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6948          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6949          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6950          0x0434,
6951          0x0438},
6952         {
6953          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6954          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6955          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6956          0x0431,
6957          0x0436},
6958         {
6959          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6960          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6961          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6962          0x042f,
6963          0x0434},
6964         {
6965          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6966          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6967          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6968          0x042d,
6969          0x0431},
6970         {
6971          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6972          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6973          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6974          0x042b,
6975          0x042f},
6976         {
6977          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6978          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6979          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6980          0x0429,
6981          0x042d},
6982         {
6983          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6984          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6985          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6986          0x0427,
6987          0x042b},
6988         {
6989          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6990          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6991          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6992          0x0424,
6993          0x0429},
6994         {
6995          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6996          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
6997          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6998          0x041f,
6999          0x0424}
7000 };
7001
7002 static chan_info_nphy_radio2057_t chan_info_nphyrev8_2057_rev8[] = {
7003         {
7004          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7005          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7006          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7007          0x0214,
7008          0x0215},
7009         {
7010          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7011          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7012          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7013          0x0213,
7014          0x0214},
7015         {
7016          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7017          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7018          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7019          0x0212,
7020          0x0213},
7021         {
7022          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7023          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7024          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7025          0x0211,
7026          0x0212},
7027         {
7028          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7029          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7030          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7031          0x020f,
7032          0x0211},
7033         {
7034          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7035          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7036          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7037          0x020e,
7038          0x020f},
7039         {
7040          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7041          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7042          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7043          0x020d,
7044          0x020e},
7045         {
7046          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7047          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7048          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7049          0x020c,
7050          0x020d},
7051         {
7052          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7053          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7054          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7055          0x020b,
7056          0x020c},
7057         {
7058          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7059          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7060          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7061          0x020a,
7062          0x020b},
7063         {
7064          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7065          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7066          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7067          0x0209,
7068          0x020a},
7069         {
7070          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7071          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7072          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7073          0x0208,
7074          0x0209},
7075         {
7076          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7077          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7078          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7079          0x0207,
7080          0x0208},
7081         {
7082          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7083          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7084          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7085          0x0206,
7086          0x0207},
7087         {
7088          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7089          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7090          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7091          0x0205,
7092          0x0206},
7093         {
7094          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7095          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7096          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7097          0x0204,
7098          0x0205},
7099         {
7100          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7101          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7102          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7103          0x0203,
7104          0x0204},
7105         {
7106          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7107          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7108          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7109          0x0202,
7110          0x0203},
7111         {
7112          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7113          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7114          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7115          0x0201,
7116          0x0202},
7117         {
7118          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7119          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7120          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7121          0x0200,
7122          0x0201},
7123         {
7124          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7125          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7126          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7127          0x01ff,
7128          0x0200},
7129         {
7130          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7131          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7132          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7133          0x01fe,
7134          0x01ff},
7135         {
7136          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7137          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7138          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7139          0x01fc,
7140          0x01fd},
7141         {
7142          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7143          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7144          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7145          0x01fb,
7146          0x01fc},
7147         {
7148          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7149          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7150          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7151          0x01fa,
7152          0x01fb},
7153         {
7154          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7155          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7156          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7157          0x01f9,
7158          0x01fa},
7159         {
7160          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7161          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7162          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7163          0x01f8,
7164          0x01f9},
7165         {
7166          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7167          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7168          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7169          0x01f7,
7170          0x01f8},
7171         {
7172          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7173          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7174          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7175          0x01f6,
7176          0x01f7},
7177         {
7178          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7179          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7180          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7181          0x01f5,
7182          0x01f6},
7183         {
7184          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7185          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7186          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7187          0x01f4,
7188          0x01f5},
7189         {
7190          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7191          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7192          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7193          0x01f3,
7194          0x01f4},
7195         {
7196          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7197          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7198          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7199          0x01f2,
7200          0x01f3},
7201         {
7202          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7203          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7204          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7205          0x01f1,
7206          0x01f2},
7207         {
7208          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7209          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7210          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7211          0x01f0,
7212          0x01f1},
7213         {
7214          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7215          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7216          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7217          0x01f0,
7218          0x01f0},
7219         {
7220          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7221          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7222          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7223          0x01ef,
7224          0x01f0},
7225         {
7226          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7227          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7228          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7229          0x01ee,
7230          0x01ef},
7231         {
7232          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7233          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7234          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7235          0x01ed,
7236          0x01ee},
7237         {
7238          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7239          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7240          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7241          0x01ec,
7242          0x01ed},
7243         {
7244          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7245          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7246          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7247          0x01eb,
7248          0x01ec},
7249         {
7250          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7251          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7252          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7253          0x01ea,
7254          0x01eb},
7255         {
7256          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7257          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7258          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7259          0x01e9,
7260          0x01ea},
7261         {
7262          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7263          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7264          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7265          0x01e8,
7266          0x01e9},
7267         {
7268          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7269          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7270          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7271          0x01e7,
7272          0x01e8},
7273         {
7274          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7275          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7276          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7277          0x01e6,
7278          0x01e7},
7279         {
7280          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7281          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7282          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7283          0x01e5,
7284          0x01e6},
7285         {
7286          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7287          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7288          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7289          0x01e5,
7290          0x01e5},
7291         {
7292          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7293          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7294          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7295          0x01e4,
7296          0x01e5},
7297         {
7298          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7299          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7300          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7301          0x01e3,
7302          0x01e4},
7303         {
7304          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7305          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7306          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7307          0x01e2,
7308          0x01e3},
7309         {
7310          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7311          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7312          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7313          0x01e1,
7314          0x01e2},
7315         {
7316          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7317          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7318          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7319          0x01e0,
7320          0x01e1},
7321         {
7322          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7323          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7324          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7325          0x01df,
7326          0x01e0},
7327         {
7328          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7329          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7330          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7331          0x01de,
7332          0x01df},
7333         {
7334          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7335          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7336          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7337          0x01dd,
7338          0x01de},
7339         {
7340          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7341          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7342          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7343          0x01dd,
7344          0x01dd},
7345         {
7346          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7347          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7348          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7349          0x01dc,
7350          0x01dd},
7351         {
7352          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7353          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7354          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7355          0x01db,
7356          0x01dc},
7357         {
7358          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7359          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7360          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7361          0x01da,
7362          0x01db},
7363         {
7364          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7365          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7366          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7367          0x01d9,
7368          0x01da},
7369         {
7370          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7371          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7372          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7373          0x01d8,
7374          0x01d9},
7375         {
7376          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7377          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7378          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7379          0x01d7,
7380          0x01d8},
7381         {
7382          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7383          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7384          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7385          0x01d7,
7386          0x01d7},
7387         {
7388          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7389          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7390          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7391          0x01d6,
7392          0x01d7},
7393         {
7394          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7395          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7396          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7397          0x01d5,
7398          0x01d6},
7399         {
7400          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7401          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7402          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7403          0x01d4,
7404          0x01d5},
7405         {
7406          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7407          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7408          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7409          0x01d3,
7410          0x01d4},
7411         {
7412          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7413          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7414          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7415          0x01d2,
7416          0x01d3},
7417         {
7418          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7419          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7420          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7421          0x01d2,
7422          0x01d2},
7423         {
7424          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7425          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7426          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7427          0x01d1,
7428          0x01d2},
7429         {
7430          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7431          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7432          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7433          0x01d0,
7434          0x01d1},
7435         {
7436          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7437          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7438          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7439          0x01cf,
7440          0x01d0},
7441         {
7442          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7443          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7444          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7445          0x01ce,
7446          0x01cf},
7447         {
7448          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7449          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7450          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7451          0x01ce,
7452          0x01ce},
7453         {
7454          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7455          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7456          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7457          0x01cd,
7458          0x01ce},
7459         {
7460          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7461          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7462          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7463          0x01cc,
7464          0x01cd},
7465         {
7466          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7467          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7468          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7469          0x01cb,
7470          0x01cc},
7471         {
7472          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7473          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7474          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7475          0x01ca,
7476          0x01cb},
7477         {
7478          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7479          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7480          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7481          0x01ca,
7482          0x01cb},
7483         {
7484          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7485          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7486          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7487          0x01c9,
7488          0x01ca},
7489         {
7490          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7491          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7492          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7493          0x01c9,
7494          0x01ca},
7495         {
7496          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7497          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7498          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7499          0x01c9,
7500          0x01c9},
7501         {
7502          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7503          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7504          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7505          0x01c8,
7506          0x01c9},
7507         {
7508          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7509          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7510          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7511          0x01c8,
7512          0x01c9},
7513         {
7514          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7515          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7516          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7517          0x01c8,
7518          0x01c8},
7519         {
7520          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7521          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7522          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7523          0x01c7,
7524          0x01c8},
7525         {
7526          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7527          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7528          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7529          0x01c7,
7530          0x01c8},
7531         {
7532          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7533          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7534          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7535          0x01c6,
7536          0x01c7},
7537         {
7538          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7539          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7540          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7541          0x01c6,
7542          0x01c7},
7543         {
7544          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7545          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7546          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7547          0x01c6,
7548          0x01c6},
7549         {
7550          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7551          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7552          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7553          0x01c5,
7554          0x01c6},
7555         {
7556          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7557          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7558          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7559          0x01c5,
7560          0x01c6},
7561         {
7562          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7563          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7564          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7565          0x01c4,
7566          0x01c5},
7567         {
7568          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7569          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7570          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7571          0x01c4,
7572          0x01c5},
7573         {
7574          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7575          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7576          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7577          0x01c4,
7578          0x01c4},
7579         {
7580          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7581          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7582          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7583          0x01c3,
7584          0x01c4},
7585         {
7586          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7587          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7588          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7589          0x01c3,
7590          0x01c4},
7591         {
7592          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7593          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7594          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7595          0x01c2,
7596          0x01c3},
7597         {
7598          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7599          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7600          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7601          0x01c2,
7602          0x01c3},
7603         {
7604          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7605          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7606          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7607          0x01c2,
7608          0x01c2},
7609         {
7610          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7611          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7612          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7613          0x01c1,
7614          0x01c2},
7615         {
7616          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7617          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7618          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7619          0x01c0,
7620          0x01c1},
7621         {
7622          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7623          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7624          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7625          0x01bf,
7626          0x01c0},
7627         {
7628          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7629          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7630          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7631          0x01bf,
7632          0x01bf},
7633         {
7634          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7635          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7636          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7637          0x01be,
7638          0x01bf},
7639         {
7640          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7641          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7642          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7643          0x01bd,
7644          0x01be},
7645         {
7646          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7647          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7648          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7649          0x01bc,
7650          0x01bd},
7651         {
7652          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7653          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7654          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7655          0x043f,
7656          0x0443},
7657         {
7658          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7659          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7660          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7661          0x043d,
7662          0x0441},
7663         {
7664          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7665          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7666          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7667          0x043a,
7668          0x043f},
7669         {
7670          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7671          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7672          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7673          0x0438,
7674          0x043d},
7675         {
7676          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7677          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7678          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7679          0x0436,
7680          0x043a},
7681         {
7682          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7683          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7684          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7685          0x0434,
7686          0x0438},
7687         {
7688          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7689          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7690          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7691          0x0431,
7692          0x0436},
7693         {
7694          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7695          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7696          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7697          0x042f,
7698          0x0434},
7699         {
7700          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7701          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7702          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7703          0x042d,
7704          0x0431},
7705         {
7706          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7707          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7708          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7709          0x042b,
7710          0x042f},
7711         {
7712          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7713          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7714          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7715          0x0429,
7716          0x042d},
7717         {
7718          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7719          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7720          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7721          0x0427,
7722          0x042b},
7723         {
7724          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7725          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7726          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7727          0x0424,
7728          0x0429},
7729         {
7730          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7731          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7732          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7733          0x041f,
7734          0x0424}
7735 };
7736
7737 radio_regs_t regs_2055[] = {
7738         {0x02, 0x80, 0x80, 0, 0},
7739         {0x03, 0, 0, 0, 0},
7740         {0x04, 0x27, 0x27, 0, 0},
7741         {0x05, 0, 0, 0, 0},
7742         {0x06, 0x27, 0x27, 0, 0},
7743         {0x07, 0x7f, 0x7f, 1, 1},
7744         {0x08, 0x7, 0x7, 1, 1},
7745         {0x09, 0x7f, 0x7f, 1, 1},
7746         {0x0A, 0x7, 0x7, 1, 1},
7747         {0x0B, 0x15, 0x15, 0, 0},
7748         {0x0C, 0x15, 0x15, 0, 0},
7749         {0x0D, 0x4f, 0x4f, 1, 1},
7750         {0x0E, 0x5, 0x5, 1, 1},
7751         {0x0F, 0x4f, 0x4f, 1, 1},
7752         {0x10, 0x5, 0x5, 1, 1},
7753         {0x11, 0xd0, 0xd0, 0, 0},
7754         {0x12, 0x2, 0x2, 0, 0},
7755         {0x13, 0, 0, 0, 0},
7756         {0x14, 0x40, 0x40, 0, 0},
7757         {0x15, 0, 0, 0, 0},
7758         {0x16, 0, 0, 0, 0},
7759         {0x17, 0, 0, 0, 0},
7760         {0x18, 0, 0, 0, 0},
7761         {0x19, 0, 0, 0, 0},
7762         {0x1A, 0, 0, 0, 0},
7763         {0x1B, 0, 0, 0, 0},
7764         {0x1C, 0, 0, 0, 0},
7765         {0x1D, 0xc0, 0xc0, 0, 0},
7766         {0x1E, 0xff, 0xff, 0, 0},
7767         {0x1F, 0xc0, 0xc0, 0, 0},
7768         {0x20, 0xff, 0xff, 0, 0},
7769         {0x21, 0xc0, 0xc0, 0, 0},
7770         {0x22, 0, 0, 0, 0},
7771         {0x23, 0x2c, 0x2c, 0, 0},
7772         {0x24, 0, 0, 0, 0},
7773         {0x25, 0, 0, 0, 0},
7774         {0x26, 0, 0, 0, 0},
7775         {0x27, 0, 0, 0, 0},
7776         {0x28, 0, 0, 0, 0},
7777         {0x29, 0, 0, 0, 0},
7778         {0x2A, 0, 0, 0, 0},
7779         {0x2B, 0, 0, 0, 0},
7780         {0x2C, 0, 0, 0, 0},
7781         {0x2D, 0xa4, 0xa4, 0, 0},
7782         {0x2E, 0x38, 0x38, 0, 0},
7783         {0x2F, 0, 0, 0, 0},
7784         {0x30, 0x4, 0x4, 1, 1},
7785         {0x31, 0, 0, 0, 0},
7786         {0x32, 0xa, 0xa, 0, 0},
7787         {0x33, 0x87, 0x87, 0, 0},
7788         {0x34, 0x9, 0x9, 0, 0},
7789         {0x35, 0x70, 0x70, 0, 0},
7790         {0x36, 0x11, 0x11, 0, 0},
7791         {0x37, 0x18, 0x18, 1, 1},
7792         {0x38, 0x6, 0x6, 0, 0},
7793         {0x39, 0x4, 0x4, 1, 1},
7794         {0x3A, 0x6, 0x6, 0, 0},
7795         {0x3B, 0x9e, 0x9e, 0, 0},
7796         {0x3C, 0x9, 0x9, 0, 0},
7797         {0x3D, 0xc8, 0xc8, 1, 1},
7798         {0x3E, 0x88, 0x88, 0, 0},
7799         {0x3F, 0, 0, 0, 0},
7800         {0x40, 0, 0, 0, 0},
7801         {0x41, 0, 0, 0, 0},
7802         {0x42, 0x1, 0x1, 0, 0},
7803         {0x43, 0x2, 0x2, 0, 0},
7804         {0x44, 0x96, 0x96, 0, 0},
7805         {0x45, 0x3e, 0x3e, 0, 0},
7806         {0x46, 0x3e, 0x3e, 0, 0},
7807         {0x47, 0x13, 0x13, 0, 0},
7808         {0x48, 0x2, 0x2, 0, 0},
7809         {0x49, 0x15, 0x15, 0, 0},
7810         {0x4A, 0x7, 0x7, 0, 0},
7811         {0x4B, 0, 0, 0, 0},
7812         {0x4C, 0, 0, 0, 0},
7813         {0x4D, 0, 0, 0, 0},
7814         {0x4E, 0, 0, 0, 0},
7815         {0x4F, 0, 0, 0, 0},
7816         {0x50, 0x8, 0x8, 0, 0},
7817         {0x51, 0x8, 0x8, 0, 0},
7818         {0x52, 0x6, 0x6, 0, 0},
7819         {0x53, 0x84, 0x84, 1, 1},
7820         {0x54, 0xc3, 0xc3, 0, 0},
7821         {0x55, 0x8f, 0x8f, 0, 0},
7822         {0x56, 0xff, 0xff, 0, 0},
7823         {0x57, 0xff, 0xff, 0, 0},
7824         {0x58, 0x88, 0x88, 0, 0},
7825         {0x59, 0x88, 0x88, 0, 0},
7826         {0x5A, 0, 0, 0, 0},
7827         {0x5B, 0xcc, 0xcc, 0, 0},
7828         {0x5C, 0x6, 0x6, 0, 0},
7829         {0x5D, 0x80, 0x80, 0, 0},
7830         {0x5E, 0x80, 0x80, 0, 0},
7831         {0x5F, 0xf8, 0xf8, 0, 0},
7832         {0x60, 0x88, 0x88, 0, 0},
7833         {0x61, 0x88, 0x88, 0, 0},
7834         {0x62, 0x88, 0x8, 1, 1},
7835         {0x63, 0x88, 0x88, 0, 0},
7836         {0x64, 0, 0, 0, 0},
7837         {0x65, 0x1, 0x1, 1, 1},
7838         {0x66, 0x8a, 0x8a, 0, 0},
7839         {0x67, 0x8, 0x8, 0, 0},
7840         {0x68, 0x83, 0x83, 0, 0},
7841         {0x69, 0x6, 0x6, 0, 0},
7842         {0x6A, 0xa0, 0xa0, 0, 0},
7843         {0x6B, 0xa, 0xa, 0, 0},
7844         {0x6C, 0x87, 0x87, 1, 1},
7845         {0x6D, 0x2a, 0x2a, 0, 0},
7846         {0x6E, 0x2a, 0x2a, 0, 0},
7847         {0x6F, 0x2a, 0x2a, 0, 0},
7848         {0x70, 0x2a, 0x2a, 0, 0},
7849         {0x71, 0x18, 0x18, 0, 0},
7850         {0x72, 0x6a, 0x6a, 1, 1},
7851         {0x73, 0xab, 0xab, 1, 1},
7852         {0x74, 0x13, 0x13, 1, 1},
7853         {0x75, 0xc1, 0xc1, 1, 1},
7854         {0x76, 0xaa, 0xaa, 1, 1},
7855         {0x77, 0x87, 0x87, 1, 1},
7856         {0x78, 0, 0, 0, 0},
7857         {0x79, 0x6, 0x6, 0, 0},
7858         {0x7A, 0x7, 0x7, 0, 0},
7859         {0x7B, 0x7, 0x7, 0, 0},
7860         {0x7C, 0x15, 0x15, 0, 0},
7861         {0x7D, 0x55, 0x55, 0, 0},
7862         {0x7E, 0x97, 0x97, 1, 1},
7863         {0x7F, 0x8, 0x8, 0, 0},
7864         {0x80, 0x14, 0x14, 1, 1},
7865         {0x81, 0x33, 0x33, 0, 0},
7866         {0x82, 0x88, 0x88, 0, 0},
7867         {0x83, 0x6, 0x6, 0, 0},
7868         {0x84, 0x3, 0x3, 1, 1},
7869         {0x85, 0xa, 0xa, 0, 0},
7870         {0x86, 0x3, 0x3, 1, 1},
7871         {0x87, 0x2a, 0x2a, 0, 0},
7872         {0x88, 0xa4, 0xa4, 0, 0},
7873         {0x89, 0x18, 0x18, 0, 0},
7874         {0x8A, 0x28, 0x28, 0, 0},
7875         {0x8B, 0, 0, 0, 0},
7876         {0x8C, 0x4a, 0x4a, 0, 0},
7877         {0x8D, 0, 0, 0, 0},
7878         {0x8E, 0xf8, 0xf8, 0, 0},
7879         {0x8F, 0x88, 0x88, 0, 0},
7880         {0x90, 0x88, 0x88, 0, 0},
7881         {0x91, 0x88, 0x8, 1, 1},
7882         {0x92, 0x88, 0x88, 0, 0},
7883         {0x93, 0, 0, 0, 0},
7884         {0x94, 0x1, 0x1, 1, 1},
7885         {0x95, 0x8a, 0x8a, 0, 0},
7886         {0x96, 0x8, 0x8, 0, 0},
7887         {0x97, 0x83, 0x83, 0, 0},
7888         {0x98, 0x6, 0x6, 0, 0},
7889         {0x99, 0xa0, 0xa0, 0, 0},
7890         {0x9A, 0xa, 0xa, 0, 0},
7891         {0x9B, 0x87, 0x87, 1, 1},
7892         {0x9C, 0x2a, 0x2a, 0, 0},
7893         {0x9D, 0x2a, 0x2a, 0, 0},
7894         {0x9E, 0x2a, 0x2a, 0, 0},
7895         {0x9F, 0x2a, 0x2a, 0, 0},
7896         {0xA0, 0x18, 0x18, 0, 0},
7897         {0xA1, 0x6a, 0x6a, 1, 1},
7898         {0xA2, 0xab, 0xab, 1, 1},
7899         {0xA3, 0x13, 0x13, 1, 1},
7900         {0xA4, 0xc1, 0xc1, 1, 1},
7901         {0xA5, 0xaa, 0xaa, 1, 1},
7902         {0xA6, 0x87, 0x87, 1, 1},
7903         {0xA7, 0, 0, 0, 0},
7904         {0xA8, 0x6, 0x6, 0, 0},
7905         {0xA9, 0x7, 0x7, 0, 0},
7906         {0xAA, 0x7, 0x7, 0, 0},
7907         {0xAB, 0x15, 0x15, 0, 0},
7908         {0xAC, 0x55, 0x55, 0, 0},
7909         {0xAD, 0x97, 0x97, 1, 1},
7910         {0xAE, 0x8, 0x8, 0, 0},
7911         {0xAF, 0x14, 0x14, 1, 1},
7912         {0xB0, 0x33, 0x33, 0, 0},
7913         {0xB1, 0x88, 0x88, 0, 0},
7914         {0xB2, 0x6, 0x6, 0, 0},
7915         {0xB3, 0x3, 0x3, 1, 1},
7916         {0xB4, 0xa, 0xa, 0, 0},
7917         {0xB5, 0x3, 0x3, 1, 1},
7918         {0xB6, 0x2a, 0x2a, 0, 0},
7919         {0xB7, 0xa4, 0xa4, 0, 0},
7920         {0xB8, 0x18, 0x18, 0, 0},
7921         {0xB9, 0x28, 0x28, 0, 0},
7922         {0xBA, 0, 0, 0, 0},
7923         {0xBB, 0x4a, 0x4a, 0, 0},
7924         {0xBC, 0, 0, 0, 0},
7925         {0xBD, 0x71, 0x71, 0, 0},
7926         {0xBE, 0x72, 0x72, 0, 0},
7927         {0xBF, 0x73, 0x73, 0, 0},
7928         {0xC0, 0x74, 0x74, 0, 0},
7929         {0xC1, 0x75, 0x75, 0, 0},
7930         {0xC2, 0x76, 0x76, 0, 0},
7931         {0xC3, 0x77, 0x77, 0, 0},
7932         {0xC4, 0x78, 0x78, 0, 0},
7933         {0xC5, 0x79, 0x79, 0, 0},
7934         {0xC6, 0x7a, 0x7a, 0, 0},
7935         {0xC7, 0, 0, 0, 0},
7936         {0xC8, 0, 0, 0, 0},
7937         {0xC9, 0, 0, 0, 0},
7938         {0xCA, 0, 0, 0, 0},
7939         {0xCB, 0, 0, 0, 0},
7940         {0xCC, 0, 0, 0, 0},
7941         {0xCD, 0, 0, 0, 0},
7942         {0xCE, 0x6, 0x6, 0, 0},
7943         {0xCF, 0, 0, 0, 0},
7944         {0xD0, 0, 0, 0, 0},
7945         {0xD1, 0x18, 0x18, 0, 0},
7946         {0xD2, 0x88, 0x88, 0, 0},
7947         {0xD3, 0, 0, 0, 0},
7948         {0xD4, 0, 0, 0, 0},
7949         {0xD5, 0, 0, 0, 0},
7950         {0xD6, 0, 0, 0, 0},
7951         {0xD7, 0, 0, 0, 0},
7952         {0xD8, 0, 0, 0, 0},
7953         {0xD9, 0, 0, 0, 0},
7954         {0xDA, 0x6, 0x6, 0, 0},
7955         {0xDB, 0, 0, 0, 0},
7956         {0xDC, 0, 0, 0, 0},
7957         {0xDD, 0x18, 0x18, 0, 0},
7958         {0xDE, 0x88, 0x88, 0, 0},
7959         {0xDF, 0, 0, 0, 0},
7960         {0xE0, 0, 0, 0, 0},
7961         {0xE1, 0, 0, 0, 0},
7962         {0xE2, 0, 0, 0, 0},
7963         {0xFFFF, 0, 0, 0, 0},
7964 };
7965
7966 radio_regs_t regs_SYN_2056[] = {
7967         {0x02, 0, 0, 0, 0},
7968         {0x03, 0, 0, 0, 0},
7969         {0x04, 0, 0, 0, 0},
7970         {0x05, 0, 0, 0, 0},
7971         {0x06, 0, 0, 0, 0},
7972         {0x07, 0, 0, 0, 0},
7973         {0x08, 0, 0, 0, 0},
7974         {0x09, 0x1, 0x1, 0, 0},
7975         {0x0A, 0, 0, 0, 0},
7976         {0x0B, 0, 0, 0, 0},
7977         {0x0C, 0, 0, 0, 0},
7978         {0x0D, 0, 0, 0, 0},
7979         {0x0E, 0, 0, 0, 0},
7980         {0x0F, 0, 0, 0, 0},
7981         {0x10, 0, 0, 0, 0},
7982         {0x11, 0, 0, 0, 0},
7983         {0x12, 0, 0, 0, 0},
7984         {0x13, 0, 0, 0, 0},
7985         {0x14, 0, 0, 0, 0},
7986         {0x15, 0, 0, 0, 0},
7987         {0x16, 0, 0, 0, 0},
7988         {0x17, 0, 0, 0, 0},
7989         {0x18, 0, 0, 0, 0},
7990         {0x19, 0, 0, 0, 0},
7991         {0x1A, 0, 0, 0, 0},
7992         {0x1B, 0, 0, 0, 0},
7993         {0x1C, 0, 0, 0, 0},
7994         {0x1D, 0, 0, 0, 0},
7995         {0x1E, 0, 0, 0, 0},
7996         {0x1F, 0, 0, 0, 0},
7997         {0x20, 0, 0, 0, 0},
7998         {0x21, 0, 0, 0, 0},
7999         {0x22, 0x60, 0x60, 0, 0},
8000         {0x23, 0x6, 0x6, 0, 0},
8001         {0x24, 0xc, 0xc, 0, 0},
8002         {0x25, 0, 0, 0, 0},
8003         {0x26, 0, 0, 0, 0},
8004         {0x27, 0, 0, 0, 0},
8005         {0x28, 0x1, 0x1, 0, 0},
8006         {0x29, 0, 0, 0, 0},
8007         {0x2A, 0, 0, 0, 0},
8008         {0x2B, 0, 0, 0, 0},
8009         {0x2C, 0, 0, 0, 0},
8010         {0x2D, 0, 0, 0, 0},
8011         {0x2E, 0xd, 0xd, 0, 0},
8012         {0x2F, 0x1f, 0x1f, 0, 0},
8013         {0x30, 0x15, 0x15, 0, 0},
8014         {0x31, 0xf, 0xf, 0, 0},
8015         {0x32, 0, 0, 0, 0},
8016         {0x33, 0, 0, 0, 0},
8017         {0x34, 0, 0, 0, 0},
8018         {0x35, 0, 0, 0, 0},
8019         {0x36, 0, 0, 0, 0},
8020         {0x37, 0, 0, 0, 0},
8021         {0x38, 0, 0, 0, 0},
8022         {0x39, 0, 0, 0, 0},
8023         {0x3A, 0, 0, 0, 0},
8024         {0x3B, 0, 0, 0, 0},
8025         {0x3C, 0x13, 0x13, 0, 0},
8026         {0x3D, 0xf, 0xf, 0, 0},
8027         {0x3E, 0x18, 0x18, 0, 0},
8028         {0x3F, 0, 0, 0, 0},
8029         {0x40, 0, 0, 0, 0},
8030         {0x41, 0x20, 0x20, 0, 0},
8031         {0x42, 0x20, 0x20, 0, 0},
8032         {0x43, 0, 0, 0, 0},
8033         {0x44, 0x77, 0x77, 0, 0},
8034         {0x45, 0x7, 0x7, 0, 0},
8035         {0x46, 0x1, 0x1, 0, 0},
8036         {0x47, 0x4, 0x4, 0, 0},
8037         {0x48, 0xf, 0xf, 0, 0},
8038         {0x49, 0x30, 0x30, 0, 0},
8039         {0x4A, 0x32, 0x32, 0, 0},
8040         {0x4B, 0xd, 0xd, 0, 0},
8041         {0x4C, 0xd, 0xd, 0, 0},
8042         {0x4D, 0x4, 0x4, 0, 0},
8043         {0x4E, 0x6, 0x6, 0, 0},
8044         {0x4F, 0x1, 0x1, 0, 0},
8045         {0x50, 0x1c, 0x1c, 0, 0},
8046         {0x51, 0x2, 0x2, 0, 0},
8047         {0x52, 0x2, 0x2, 0, 0},
8048         {0x53, 0xf7, 0xf7, 1, 1},
8049         {0x54, 0xb4, 0xb4, 0, 0},
8050         {0x55, 0xd2, 0xd2, 0, 0},
8051         {0x56, 0, 0, 0, 0},
8052         {0x57, 0, 0, 0, 0},
8053         {0x58, 0x4, 0x4, 0, 0},
8054         {0x59, 0x96, 0x96, 0, 0},
8055         {0x5A, 0x3e, 0x3e, 0, 0},
8056         {0x5B, 0x3e, 0x3e, 0, 0},
8057         {0x5C, 0x13, 0x13, 0, 0},
8058         {0x5D, 0x2, 0x2, 0, 0},
8059         {0x5E, 0, 0, 0, 0},
8060         {0x5F, 0x7, 0x7, 0, 0},
8061         {0x60, 0x7, 0x7, 1, 1},
8062         {0x61, 0x8, 0x8, 0, 0},
8063         {0x62, 0x3, 0x3, 0, 0},
8064         {0x63, 0, 0, 0, 0},
8065         {0x64, 0, 0, 0, 0},
8066         {0x65, 0, 0, 0, 0},
8067         {0x66, 0, 0, 0, 0},
8068         {0x67, 0, 0, 0, 0},
8069         {0x68, 0x40, 0x40, 0, 0},
8070         {0x69, 0, 0, 0, 0},
8071         {0x6A, 0, 0, 0, 0},
8072         {0x6B, 0, 0, 0, 0},
8073         {0x6C, 0, 0, 0, 0},
8074         {0x6D, 0x1, 0x1, 0, 0},
8075         {0x6E, 0, 0, 0, 0},
8076         {0x6F, 0, 0, 0, 0},
8077         {0x70, 0x60, 0x60, 0, 0},
8078         {0x71, 0x66, 0x66, 0, 0},
8079         {0x72, 0xc, 0xc, 0, 0},
8080         {0x73, 0x66, 0x66, 0, 0},
8081         {0x74, 0x8f, 0x8f, 1, 1},
8082         {0x75, 0, 0, 0, 0},
8083         {0x76, 0xcc, 0xcc, 0, 0},
8084         {0x77, 0x1, 0x1, 0, 0},
8085         {0x78, 0x66, 0x66, 0, 0},
8086         {0x79, 0x66, 0x66, 0, 0},
8087         {0x7A, 0, 0, 0, 0},
8088         {0x7B, 0, 0, 0, 0},
8089         {0x7C, 0, 0, 0, 0},
8090         {0x7D, 0, 0, 0, 0},
8091         {0x7E, 0, 0, 0, 0},
8092         {0x7F, 0, 0, 0, 0},
8093         {0x80, 0, 0, 0, 0},
8094         {0x81, 0, 0, 0, 0},
8095         {0x82, 0, 0, 0, 0},
8096         {0x83, 0, 0, 0, 0},
8097         {0x84, 0, 0, 0, 0},
8098         {0x85, 0xff, 0xff, 0, 0},
8099         {0x86, 0, 0, 0, 0},
8100         {0x87, 0, 0, 0, 0},
8101         {0x88, 0, 0, 0, 0},
8102         {0x89, 0, 0, 0, 0},
8103         {0x8A, 0, 0, 0, 0},
8104         {0x8B, 0, 0, 0, 0},
8105         {0x8C, 0, 0, 0, 0},
8106         {0x8D, 0, 0, 0, 0},
8107         {0x8E, 0, 0, 0, 0},
8108         {0x8F, 0, 0, 0, 0},
8109         {0x90, 0, 0, 0, 0},
8110         {0x91, 0, 0, 0, 0},
8111         {0x92, 0, 0, 0, 0},
8112         {0x93, 0, 0, 0, 0},
8113         {0x94, 0, 0, 0, 0},
8114         {0x95, 0, 0, 0, 0},
8115         {0x96, 0, 0, 0, 0},
8116         {0x97, 0, 0, 0, 0},
8117         {0x98, 0, 0, 0, 0},
8118         {0x99, 0, 0, 0, 0},
8119         {0x9A, 0, 0, 0, 0},
8120         {0x9B, 0, 0, 0, 0},
8121         {0x9C, 0, 0, 0, 0},
8122         {0x9D, 0, 0, 0, 0},
8123         {0x9E, 0, 0, 0, 0},
8124         {0x9F, 0x6, 0x6, 0, 0},
8125         {0xA0, 0x66, 0x66, 0, 0},
8126         {0xA1, 0x66, 0x66, 0, 0},
8127         {0xA2, 0x66, 0x66, 0, 0},
8128         {0xA3, 0x66, 0x66, 0, 0},
8129         {0xA4, 0x66, 0x66, 0, 0},
8130         {0xA5, 0x66, 0x66, 0, 0},
8131         {0xA6, 0x66, 0x66, 0, 0},
8132         {0xA7, 0x66, 0x66, 0, 0},
8133         {0xA8, 0x66, 0x66, 0, 0},
8134         {0xA9, 0x66, 0x66, 0, 0},
8135         {0xAA, 0x66, 0x66, 0, 0},
8136         {0xAB, 0x66, 0x66, 0, 0},
8137         {0xAC, 0x66, 0x66, 0, 0},
8138         {0xAD, 0x66, 0x66, 0, 0},
8139         {0xAE, 0x66, 0x66, 0, 0},
8140         {0xAF, 0x66, 0x66, 0, 0},
8141         {0xB0, 0x66, 0x66, 0, 0},
8142         {0xB1, 0x66, 0x66, 0, 0},
8143         {0xB2, 0x66, 0x66, 0, 0},
8144         {0xB3, 0xa, 0xa, 0, 0},
8145         {0xB4, 0, 0, 0, 0},
8146         {0xB5, 0, 0, 0, 0},
8147         {0xB6, 0, 0, 0, 0},
8148         {0xFFFF, 0, 0, 0, 0}
8149 };
8150
8151 radio_regs_t regs_TX_2056[] = {
8152         {0x02, 0, 0, 0, 0},
8153         {0x03, 0, 0, 0, 0},
8154         {0x04, 0, 0, 0, 0},
8155         {0x05, 0, 0, 0, 0},
8156         {0x06, 0, 0, 0, 0},
8157         {0x07, 0, 0, 0, 0},
8158         {0x08, 0, 0, 0, 0},
8159         {0x09, 0, 0, 0, 0},
8160         {0x0A, 0, 0, 0, 0},
8161         {0x0B, 0, 0, 0, 0},
8162         {0x0C, 0, 0, 0, 0},
8163         {0x0D, 0, 0, 0, 0},
8164         {0x0E, 0, 0, 0, 0},
8165         {0x0F, 0, 0, 0, 0},
8166         {0x10, 0, 0, 0, 0},
8167         {0x11, 0, 0, 0, 0},
8168         {0x12, 0, 0, 0, 0},
8169         {0x13, 0, 0, 0, 0},
8170         {0x14, 0, 0, 0, 0},
8171         {0x15, 0, 0, 0, 0},
8172         {0x16, 0, 0, 0, 0},
8173         {0x17, 0, 0, 0, 0},
8174         {0x18, 0, 0, 0, 0},
8175         {0x19, 0, 0, 0, 0},
8176         {0x1A, 0, 0, 0, 0},
8177         {0x1B, 0, 0, 0, 0},
8178         {0x1C, 0, 0, 0, 0},
8179         {0x1D, 0, 0, 0, 0},
8180         {0x1E, 0, 0, 0, 0},
8181         {0x1F, 0, 0, 0, 0},
8182         {0x20, 0, 0, 0, 0},
8183         {0x21, 0x88, 0x88, 0, 0},
8184         {0x22, 0x88, 0x88, 0, 0},
8185         {0x23, 0x88, 0x88, 0, 0},
8186         {0x24, 0x88, 0x88, 0, 0},
8187         {0x25, 0xc, 0xc, 0, 0},
8188         {0x26, 0, 0, 0, 0},
8189         {0x27, 0x3, 0x3, 0, 0},
8190         {0x28, 0, 0, 0, 0},
8191         {0x29, 0x3, 0x3, 0, 0},
8192         {0x2A, 0x37, 0x37, 0, 0},
8193         {0x2B, 0x3, 0x3, 0, 0},
8194         {0x2C, 0, 0, 0, 0},
8195         {0x2D, 0, 0, 0, 0},
8196         {0x2E, 0x1, 0x1, 0, 0},
8197         {0x2F, 0x1, 0x1, 0, 0},
8198         {0x30, 0, 0, 0, 0},
8199         {0x31, 0, 0, 0, 0},
8200         {0x32, 0, 0, 0, 0},
8201         {0x33, 0x11, 0x11, 0, 0},
8202         {0x34, 0x11, 0x11, 0, 0},
8203         {0x35, 0, 0, 0, 0},
8204         {0x36, 0, 0, 0, 0},
8205         {0x37, 0x3, 0x3, 0, 0},
8206         {0x38, 0xf, 0xf, 0, 0},
8207         {0x39, 0, 0, 0, 0},
8208         {0x3A, 0x2d, 0x2d, 0, 0},
8209         {0x3B, 0, 0, 0, 0},
8210         {0x3C, 0x6e, 0x6e, 0, 0},
8211         {0x3D, 0xf0, 0xf0, 1, 1},
8212         {0x3E, 0, 0, 0, 0},
8213         {0x3F, 0, 0, 0, 0},
8214         {0x40, 0, 0, 0, 0},
8215         {0x41, 0x3, 0x3, 0, 0},
8216         {0x42, 0x3, 0x3, 0, 0},
8217         {0x43, 0, 0, 0, 0},
8218         {0x44, 0x1e, 0x1e, 0, 0},
8219         {0x45, 0, 0, 0, 0},
8220         {0x46, 0x6e, 0x6e, 0, 0},
8221         {0x47, 0xf0, 0xf0, 1, 1},
8222         {0x48, 0, 0, 0, 0},
8223         {0x49, 0x2, 0x2, 0, 0},
8224         {0x4A, 0xff, 0xff, 1, 1},
8225         {0x4B, 0xc, 0xc, 0, 0},
8226         {0x4C, 0, 0, 0, 0},
8227         {0x4D, 0x38, 0x38, 0, 0},
8228         {0x4E, 0x70, 0x70, 1, 1},
8229         {0x4F, 0x2, 0x2, 0, 0},
8230         {0x50, 0x88, 0x88, 0, 0},
8231         {0x51, 0xc, 0xc, 0, 0},
8232         {0x52, 0, 0, 0, 0},
8233         {0x53, 0x8, 0x8, 0, 0},
8234         {0x54, 0x70, 0x70, 1, 1},
8235         {0x55, 0x2, 0x2, 0, 0},
8236         {0x56, 0xff, 0xff, 1, 1},
8237         {0x57, 0, 0, 0, 0},
8238         {0x58, 0x83, 0x83, 0, 0},
8239         {0x59, 0x77, 0x77, 1, 1},
8240         {0x5A, 0, 0, 0, 0},
8241         {0x5B, 0x2, 0x2, 0, 0},
8242         {0x5C, 0x88, 0x88, 0, 0},
8243         {0x5D, 0, 0, 0, 0},
8244         {0x5E, 0x8, 0x8, 0, 0},
8245         {0x5F, 0x77, 0x77, 1, 1},
8246         {0x60, 0x1, 0x1, 0, 0},
8247         {0x61, 0, 0, 0, 0},
8248         {0x62, 0x7, 0x7, 0, 0},
8249         {0x63, 0, 0, 0, 0},
8250         {0x64, 0x7, 0x7, 0, 0},
8251         {0x65, 0, 0, 0, 0},
8252         {0x66, 0, 0, 0, 0},
8253         {0x67, 0x74, 0x74, 1, 1},
8254         {0x68, 0, 0, 0, 0},
8255         {0x69, 0xa, 0xa, 0, 0},
8256         {0x6A, 0, 0, 0, 0},
8257         {0x6B, 0, 0, 0, 0},
8258         {0x6C, 0, 0, 0, 0},
8259         {0x6D, 0, 0, 0, 0},
8260         {0x6E, 0, 0, 0, 0},
8261         {0x6F, 0, 0, 0, 0},
8262         {0x70, 0, 0, 0, 0},
8263         {0x71, 0x2, 0x2, 0, 0},
8264         {0x72, 0, 0, 0, 0},
8265         {0x73, 0, 0, 0, 0},
8266         {0x74, 0xe, 0xe, 0, 0},
8267         {0x75, 0xe, 0xe, 0, 0},
8268         {0x76, 0xe, 0xe, 0, 0},
8269         {0x77, 0x13, 0x13, 0, 0},
8270         {0x78, 0x13, 0x13, 0, 0},
8271         {0x79, 0x1b, 0x1b, 0, 0},
8272         {0x7A, 0x1b, 0x1b, 0, 0},
8273         {0x7B, 0x55, 0x55, 0, 0},
8274         {0x7C, 0x5b, 0x5b, 0, 0},
8275         {0x7D, 0, 0, 0, 0},
8276         {0x7E, 0, 0, 0, 0},
8277         {0x7F, 0, 0, 0, 0},
8278         {0x80, 0, 0, 0, 0},
8279         {0x81, 0, 0, 0, 0},
8280         {0x82, 0, 0, 0, 0},
8281         {0x83, 0, 0, 0, 0},
8282         {0x84, 0, 0, 0, 0},
8283         {0x85, 0, 0, 0, 0},
8284         {0x86, 0, 0, 0, 0},
8285         {0x87, 0, 0, 0, 0},
8286         {0x88, 0, 0, 0, 0},
8287         {0x89, 0, 0, 0, 0},
8288         {0x8A, 0, 0, 0, 0},
8289         {0x8B, 0, 0, 0, 0},
8290         {0x8C, 0, 0, 0, 0},
8291         {0x8D, 0, 0, 0, 0},
8292         {0x8E, 0, 0, 0, 0},
8293         {0x8F, 0, 0, 0, 0},
8294         {0x90, 0, 0, 0, 0},
8295         {0x91, 0, 0, 0, 0},
8296         {0x92, 0, 0, 0, 0},
8297         {0xFFFF, 0, 0, 0, 0}
8298 };
8299
8300 radio_regs_t regs_RX_2056[] = {
8301         {0x02, 0, 0, 0, 0},
8302         {0x03, 0, 0, 0, 0},
8303         {0x04, 0, 0, 0, 0},
8304         {0x05, 0, 0, 0, 0},
8305         {0x06, 0, 0, 0, 0},
8306         {0x07, 0, 0, 0, 0},
8307         {0x08, 0, 0, 0, 0},
8308         {0x09, 0, 0, 0, 0},
8309         {0x0A, 0, 0, 0, 0},
8310         {0x0B, 0, 0, 0, 0},
8311         {0x0C, 0, 0, 0, 0},
8312         {0x0D, 0, 0, 0, 0},
8313         {0x0E, 0, 0, 0, 0},
8314         {0x0F, 0, 0, 0, 0},
8315         {0x10, 0, 0, 0, 0},
8316         {0x11, 0, 0, 0, 0},
8317         {0x12, 0, 0, 0, 0},
8318         {0x13, 0, 0, 0, 0},
8319         {0x14, 0, 0, 0, 0},
8320         {0x15, 0, 0, 0, 0},
8321         {0x16, 0, 0, 0, 0},
8322         {0x17, 0, 0, 0, 0},
8323         {0x18, 0, 0, 0, 0},
8324         {0x19, 0, 0, 0, 0},
8325         {0x1A, 0, 0, 0, 0},
8326         {0x1B, 0, 0, 0, 0},
8327         {0x1C, 0, 0, 0, 0},
8328         {0x1D, 0, 0, 0, 0},
8329         {0x1E, 0, 0, 0, 0},
8330         {0x1F, 0, 0, 0, 0},
8331         {0x20, 0x3, 0x3, 0, 0},
8332         {0x21, 0, 0, 0, 0},
8333         {0x22, 0, 0, 0, 0},
8334         {0x23, 0x90, 0x90, 0, 0},
8335         {0x24, 0x55, 0x55, 0, 0},
8336         {0x25, 0x15, 0x15, 0, 0},
8337         {0x26, 0x5, 0x5, 0, 0},
8338         {0x27, 0x15, 0x15, 0, 0},
8339         {0x28, 0x5, 0x5, 0, 0},
8340         {0x29, 0x20, 0x20, 0, 0},
8341         {0x2A, 0x11, 0x11, 0, 0},
8342         {0x2B, 0x90, 0x90, 0, 0},
8343         {0x2C, 0, 0, 0, 0},
8344         {0x2D, 0x88, 0x88, 0, 0},
8345         {0x2E, 0x32, 0x32, 0, 0},
8346         {0x2F, 0x77, 0x77, 0, 0},
8347         {0x30, 0x17, 0x17, 1, 1},
8348         {0x31, 0xff, 0xff, 1, 1},
8349         {0x32, 0x20, 0x20, 0, 0},
8350         {0x33, 0, 0, 0, 0},
8351         {0x34, 0x88, 0x88, 0, 0},
8352         {0x35, 0x32, 0x32, 0, 0},
8353         {0x36, 0x77, 0x77, 0, 0},
8354         {0x37, 0x17, 0x17, 1, 1},
8355         {0x38, 0xf0, 0xf0, 1, 1},
8356         {0x39, 0x20, 0x20, 0, 0},
8357         {0x3A, 0x8, 0x8, 0, 0},
8358         {0x3B, 0x99, 0x99, 0, 0},
8359         {0x3C, 0, 0, 0, 0},
8360         {0x3D, 0x44, 0x44, 1, 1},
8361         {0x3E, 0, 0, 0, 0},
8362         {0x3F, 0x44, 0x44, 0, 0},
8363         {0x40, 0xf, 0xf, 1, 1},
8364         {0x41, 0x6, 0x6, 0, 0},
8365         {0x42, 0x4, 0x4, 0, 0},
8366         {0x43, 0x50, 0x50, 1, 1},
8367         {0x44, 0x8, 0x8, 0, 0},
8368         {0x45, 0x99, 0x99, 0, 0},
8369         {0x46, 0, 0, 0, 0},
8370         {0x47, 0x11, 0x11, 0, 0},
8371         {0x48, 0, 0, 0, 0},
8372         {0x49, 0x44, 0x44, 0, 0},
8373         {0x4A, 0x7, 0x7, 0, 0},
8374         {0x4B, 0x6, 0x6, 0, 0},
8375         {0x4C, 0x4, 0x4, 0, 0},
8376         {0x4D, 0, 0, 0, 0},
8377         {0x4E, 0, 0, 0, 0},
8378         {0x4F, 0x66, 0x66, 0, 0},
8379         {0x50, 0x66, 0x66, 0, 0},
8380         {0x51, 0x57, 0x57, 0, 0},
8381         {0x52, 0x57, 0x57, 0, 0},
8382         {0x53, 0x44, 0x44, 0, 0},
8383         {0x54, 0, 0, 0, 0},
8384         {0x55, 0, 0, 0, 0},
8385         {0x56, 0x8, 0x8, 0, 0},
8386         {0x57, 0x8, 0x8, 0, 0},
8387         {0x58, 0x7, 0x7, 0, 0},
8388         {0x59, 0x22, 0x22, 0, 0},
8389         {0x5A, 0x22, 0x22, 0, 0},
8390         {0x5B, 0x2, 0x2, 0, 0},
8391         {0x5C, 0x23, 0x23, 0, 0},
8392         {0x5D, 0x7, 0x7, 0, 0},
8393         {0x5E, 0x55, 0x55, 0, 0},
8394         {0x5F, 0x23, 0x23, 0, 0},
8395         {0x60, 0x41, 0x41, 0, 0},
8396         {0x61, 0x1, 0x1, 0, 0},
8397         {0x62, 0xa, 0xa, 0, 0},
8398         {0x63, 0, 0, 0, 0},
8399         {0x64, 0, 0, 0, 0},
8400         {0x65, 0, 0, 0, 0},
8401         {0x66, 0, 0, 0, 0},
8402         {0x67, 0, 0, 0, 0},
8403         {0x68, 0, 0, 0, 0},
8404         {0x69, 0, 0, 0, 0},
8405         {0x6A, 0, 0, 0, 0},
8406         {0x6B, 0xc, 0xc, 0, 0},
8407         {0x6C, 0, 0, 0, 0},
8408         {0x6D, 0, 0, 0, 0},
8409         {0x6E, 0, 0, 0, 0},
8410         {0x6F, 0, 0, 0, 0},
8411         {0x70, 0, 0, 0, 0},
8412         {0x71, 0, 0, 0, 0},
8413         {0x72, 0x22, 0x22, 0, 0},
8414         {0x73, 0x22, 0x22, 0, 0},
8415         {0x74, 0x2, 0x2, 0, 0},
8416         {0x75, 0xa, 0xa, 0, 0},
8417         {0x76, 0x1, 0x1, 0, 0},
8418         {0x77, 0x22, 0x22, 0, 0},
8419         {0x78, 0x30, 0x30, 0, 0},
8420         {0x79, 0, 0, 0, 0},
8421         {0x7A, 0, 0, 0, 0},
8422         {0x7B, 0, 0, 0, 0},
8423         {0x7C, 0, 0, 0, 0},
8424         {0x7D, 0, 0, 0, 0},
8425         {0x7E, 0, 0, 0, 0},
8426         {0x7F, 0, 0, 0, 0},
8427         {0x80, 0, 0, 0, 0},
8428         {0x81, 0, 0, 0, 0},
8429         {0x82, 0, 0, 0, 0},
8430         {0x83, 0, 0, 0, 0},
8431         {0x84, 0, 0, 0, 0},
8432         {0x85, 0, 0, 0, 0},
8433         {0x86, 0, 0, 0, 0},
8434         {0x87, 0, 0, 0, 0},
8435         {0x88, 0, 0, 0, 0},
8436         {0x89, 0, 0, 0, 0},
8437         {0x8A, 0, 0, 0, 0},
8438         {0x8B, 0, 0, 0, 0},
8439         {0x8C, 0, 0, 0, 0},
8440         {0x8D, 0, 0, 0, 0},
8441         {0x8E, 0, 0, 0, 0},
8442         {0x8F, 0, 0, 0, 0},
8443         {0x90, 0, 0, 0, 0},
8444         {0x91, 0, 0, 0, 0},
8445         {0x92, 0, 0, 0, 0},
8446         {0x93, 0, 0, 0, 0},
8447         {0x94, 0, 0, 0, 0},
8448         {0xFFFF, 0, 0, 0, 0}
8449 };
8450
8451 radio_regs_t regs_SYN_2056_A1[] = {
8452         {0x02, 0, 0, 0, 0},
8453         {0x03, 0, 0, 0, 0},
8454         {0x04, 0, 0, 0, 0},
8455         {0x05, 0, 0, 0, 0},
8456         {0x06, 0, 0, 0, 0},
8457         {0x07, 0, 0, 0, 0},
8458         {0x08, 0, 0, 0, 0},
8459         {0x09, 0x1, 0x1, 0, 0},
8460         {0x0A, 0, 0, 0, 0},
8461         {0x0B, 0, 0, 0, 0},
8462         {0x0C, 0, 0, 0, 0},
8463         {0x0D, 0, 0, 0, 0},
8464         {0x0E, 0, 0, 0, 0},
8465         {0x0F, 0, 0, 0, 0},
8466         {0x10, 0, 0, 0, 0},
8467         {0x11, 0, 0, 0, 0},
8468         {0x12, 0, 0, 0, 0},
8469         {0x13, 0, 0, 0, 0},
8470         {0x14, 0, 0, 0, 0},
8471         {0x15, 0, 0, 0, 0},
8472         {0x16, 0, 0, 0, 0},
8473         {0x17, 0, 0, 0, 0},
8474         {0x18, 0, 0, 0, 0},
8475         {0x19, 0, 0, 0, 0},
8476         {0x1A, 0, 0, 0, 0},
8477         {0x1B, 0, 0, 0, 0},
8478         {0x1C, 0, 0, 0, 0},
8479         {0x1D, 0, 0, 0, 0},
8480         {0x1E, 0, 0, 0, 0},
8481         {0x1F, 0, 0, 0, 0},
8482         {0x20, 0, 0, 0, 0},
8483         {0x21, 0, 0, 0, 0},
8484         {0x22, 0x60, 0x60, 0, 0},
8485         {0x23, 0x6, 0x6, 0, 0},
8486         {0x24, 0xc, 0xc, 0, 0},
8487         {0x25, 0, 0, 0, 0},
8488         {0x26, 0, 0, 0, 0},
8489         {0x27, 0, 0, 0, 0},
8490         {0x28, 0x1, 0x1, 0, 0},
8491         {0x29, 0, 0, 0, 0},
8492         {0x2A, 0, 0, 0, 0},
8493         {0x2B, 0, 0, 0, 0},
8494         {0x2C, 0, 0, 0, 0},
8495         {0x2D, 0, 0, 0, 0},
8496         {0x2E, 0xd, 0xd, 0, 0},
8497         {0x2F, 0x1f, 0x1f, 0, 0},
8498         {0x30, 0x15, 0x15, 0, 0},
8499         {0x31, 0xf, 0xf, 0, 0},
8500         {0x32, 0, 0, 0, 0},
8501         {0x33, 0, 0, 0, 0},
8502         {0x34, 0, 0, 0, 0},
8503         {0x35, 0, 0, 0, 0},
8504         {0x36, 0, 0, 0, 0},
8505         {0x37, 0, 0, 0, 0},
8506         {0x38, 0, 0, 0, 0},
8507         {0x39, 0, 0, 0, 0},
8508         {0x3A, 0, 0, 0, 0},
8509         {0x3B, 0, 0, 0, 0},
8510         {0x3C, 0x13, 0x13, 0, 0},
8511         {0x3D, 0xf, 0xf, 0, 0},
8512         {0x3E, 0x18, 0x18, 0, 0},
8513         {0x3F, 0, 0, 0, 0},
8514         {0x40, 0, 0, 0, 0},
8515         {0x41, 0x20, 0x20, 0, 0},
8516         {0x42, 0x20, 0x20, 0, 0},
8517         {0x43, 0, 0, 0, 0},
8518         {0x44, 0x77, 0x77, 0, 0},
8519         {0x45, 0x7, 0x7, 0, 0},
8520         {0x46, 0x1, 0x1, 0, 0},
8521         {0x47, 0x4, 0x4, 0, 0},
8522         {0x48, 0xf, 0xf, 0, 0},
8523         {0x49, 0x30, 0x30, 0, 0},
8524         {0x4A, 0x32, 0x32, 0, 0},
8525         {0x4B, 0xd, 0xd, 0, 0},
8526         {0x4C, 0xd, 0xd, 0, 0},
8527         {0x4D, 0x4, 0x4, 0, 0},
8528         {0x4E, 0x6, 0x6, 0, 0},
8529         {0x4F, 0x1, 0x1, 0, 0},
8530         {0x50, 0x1c, 0x1c, 0, 0},
8531         {0x51, 0x2, 0x2, 0, 0},
8532         {0x52, 0x2, 0x2, 0, 0},
8533         {0x53, 0xf7, 0xf7, 1, 1},
8534         {0x54, 0xb4, 0xb4, 0, 0},
8535         {0x55, 0xd2, 0xd2, 0, 0},
8536         {0x56, 0, 0, 0, 0},
8537         {0x57, 0, 0, 0, 0},
8538         {0x58, 0x4, 0x4, 0, 0},
8539         {0x59, 0x96, 0x96, 0, 0},
8540         {0x5A, 0x3e, 0x3e, 0, 0},
8541         {0x5B, 0x3e, 0x3e, 0, 0},
8542         {0x5C, 0x13, 0x13, 0, 0},
8543         {0x5D, 0x2, 0x2, 0, 0},
8544         {0x5E, 0, 0, 0, 0},
8545         {0x5F, 0x7, 0x7, 0, 0},
8546         {0x60, 0x7, 0x7, 1, 1},
8547         {0x61, 0x8, 0x8, 0, 0},
8548         {0x62, 0x3, 0x3, 0, 0},
8549         {0x63, 0, 0, 0, 0},
8550         {0x64, 0, 0, 0, 0},
8551         {0x65, 0, 0, 0, 0},
8552         {0x66, 0, 0, 0, 0},
8553         {0x67, 0, 0, 0, 0},
8554         {0x68, 0x40, 0x40, 0, 0},
8555         {0x69, 0, 0, 0, 0},
8556         {0x6A, 0, 0, 0, 0},
8557         {0x6B, 0, 0, 0, 0},
8558         {0x6C, 0, 0, 0, 0},
8559         {0x6D, 0x1, 0x1, 0, 0},
8560         {0x6E, 0, 0, 0, 0},
8561         {0x6F, 0, 0, 0, 0},
8562         {0x70, 0x60, 0x60, 0, 0},
8563         {0x71, 0x66, 0x66, 0, 0},
8564         {0x72, 0xc, 0xc, 0, 0},
8565         {0x73, 0x66, 0x66, 0, 0},
8566         {0x74, 0x8f, 0x8f, 1, 1},
8567         {0x75, 0, 0, 0, 0},
8568         {0x76, 0xcc, 0xcc, 0, 0},
8569         {0x77, 0x1, 0x1, 0, 0},
8570         {0x78, 0x66, 0x66, 0, 0},
8571         {0x79, 0x66, 0x66, 0, 0},
8572         {0x7A, 0, 0, 0, 0},
8573         {0x7B, 0, 0, 0, 0},
8574         {0x7C, 0, 0, 0, 0},
8575         {0x7D, 0, 0, 0, 0},
8576         {0x7E, 0, 0, 0, 0},
8577         {0x7F, 0, 0, 0, 0},
8578         {0x80, 0, 0, 0, 0},
8579         {0x81, 0, 0, 0, 0},
8580         {0x82, 0, 0, 0, 0},
8581         {0x83, 0, 0, 0, 0},
8582         {0x84, 0, 0, 0, 0},
8583         {0x85, 0xff, 0xff, 0, 0},
8584         {0x86, 0, 0, 0, 0},
8585         {0x87, 0, 0, 0, 0},
8586         {0x88, 0, 0, 0, 0},
8587         {0x89, 0, 0, 0, 0},
8588         {0x8A, 0, 0, 0, 0},
8589         {0x8B, 0, 0, 0, 0},
8590         {0x8C, 0, 0, 0, 0},
8591         {0x8D, 0, 0, 0, 0},
8592         {0x8E, 0, 0, 0, 0},
8593         {0x8F, 0, 0, 0, 0},
8594         {0x90, 0, 0, 0, 0},
8595         {0x91, 0, 0, 0, 0},
8596         {0x92, 0, 0, 0, 0},
8597         {0x93, 0, 0, 0, 0},
8598         {0x94, 0, 0, 0, 0},
8599         {0x95, 0, 0, 0, 0},
8600         {0x96, 0, 0, 0, 0},
8601         {0x97, 0, 0, 0, 0},
8602         {0x98, 0, 0, 0, 0},
8603         {0x99, 0, 0, 0, 0},
8604         {0x9A, 0, 0, 0, 0},
8605         {0x9B, 0, 0, 0, 0},
8606         {0x9C, 0, 0, 0, 0},
8607         {0x9D, 0, 0, 0, 0},
8608         {0x9E, 0, 0, 0, 0},
8609         {0x9F, 0x6, 0x6, 0, 0},
8610         {0xA0, 0x66, 0x66, 0, 0},
8611         {0xA1, 0x66, 0x66, 0, 0},
8612         {0xA2, 0x66, 0x66, 0, 0},
8613         {0xA3, 0x66, 0x66, 0, 0},
8614         {0xA4, 0x66, 0x66, 0, 0},
8615         {0xA5, 0x66, 0x66, 0, 0},
8616         {0xA6, 0x66, 0x66, 0, 0},
8617         {0xA7, 0x66, 0x66, 0, 0},
8618         {0xA8, 0x66, 0x66, 0, 0},
8619         {0xA9, 0x66, 0x66, 0, 0},
8620         {0xAA, 0x66, 0x66, 0, 0},
8621         {0xAB, 0x66, 0x66, 0, 0},
8622         {0xAC, 0x66, 0x66, 0, 0},
8623         {0xAD, 0x66, 0x66, 0, 0},
8624         {0xAE, 0x66, 0x66, 0, 0},
8625         {0xAF, 0x66, 0x66, 0, 0},
8626         {0xB0, 0x66, 0x66, 0, 0},
8627         {0xB1, 0x66, 0x66, 0, 0},
8628         {0xB2, 0x66, 0x66, 0, 0},
8629         {0xB3, 0xa, 0xa, 0, 0},
8630         {0xB4, 0, 0, 0, 0},
8631         {0xB5, 0, 0, 0, 0},
8632         {0xB6, 0, 0, 0, 0},
8633         {0xFFFF, 0, 0, 0, 0}
8634 };
8635
8636 radio_regs_t regs_TX_2056_A1[] = {
8637         {0x02, 0, 0, 0, 0},
8638         {0x03, 0, 0, 0, 0},
8639         {0x04, 0, 0, 0, 0},
8640         {0x05, 0, 0, 0, 0},
8641         {0x06, 0, 0, 0, 0},
8642         {0x07, 0, 0, 0, 0},
8643         {0x08, 0, 0, 0, 0},
8644         {0x09, 0, 0, 0, 0},
8645         {0x0A, 0, 0, 0, 0},
8646         {0x0B, 0, 0, 0, 0},
8647         {0x0C, 0, 0, 0, 0},
8648         {0x0D, 0, 0, 0, 0},
8649         {0x0E, 0, 0, 0, 0},
8650         {0x0F, 0, 0, 0, 0},
8651         {0x10, 0, 0, 0, 0},
8652         {0x11, 0, 0, 0, 0},
8653         {0x12, 0, 0, 0, 0},
8654         {0x13, 0, 0, 0, 0},
8655         {0x14, 0, 0, 0, 0},
8656         {0x15, 0, 0, 0, 0},
8657         {0x16, 0, 0, 0, 0},
8658         {0x17, 0, 0, 0, 0},
8659         {0x18, 0, 0, 0, 0},
8660         {0x19, 0, 0, 0, 0},
8661         {0x1A, 0, 0, 0, 0},
8662         {0x1B, 0, 0, 0, 0},
8663         {0x1C, 0, 0, 0, 0},
8664         {0x1D, 0, 0, 0, 0},
8665         {0x1E, 0, 0, 0, 0},
8666         {0x1F, 0, 0, 0, 0},
8667         {0x20, 0, 0, 0, 0},
8668         {0x21, 0x88, 0x88, 0, 0},
8669         {0x22, 0x88, 0x88, 0, 0},
8670         {0x23, 0x88, 0x88, 0, 0},
8671         {0x24, 0x88, 0x88, 0, 0},
8672         {0x25, 0xc, 0xc, 0, 0},
8673         {0x26, 0, 0, 0, 0},
8674         {0x27, 0x3, 0x3, 0, 0},
8675         {0x28, 0, 0, 0, 0},
8676         {0x29, 0x3, 0x3, 0, 0},
8677         {0x2A, 0x37, 0x37, 0, 0},
8678         {0x2B, 0x3, 0x3, 0, 0},
8679         {0x2C, 0, 0, 0, 0},
8680         {0x2D, 0, 0, 0, 0},
8681         {0x2E, 0x1, 0x1, 0, 0},
8682         {0x2F, 0x1, 0x1, 0, 0},
8683         {0x30, 0, 0, 0, 0},
8684         {0x31, 0, 0, 0, 0},
8685         {0x32, 0, 0, 0, 0},
8686         {0x33, 0x11, 0x11, 0, 0},
8687         {0x34, 0x11, 0x11, 0, 0},
8688         {0x35, 0, 0, 0, 0},
8689         {0x36, 0, 0, 0, 0},
8690         {0x37, 0x3, 0x3, 0, 0},
8691         {0x38, 0xf, 0xf, 0, 0},
8692         {0x39, 0, 0, 0, 0},
8693         {0x3A, 0x2d, 0x2d, 0, 0},
8694         {0x3B, 0, 0, 0, 0},
8695         {0x3C, 0x6e, 0x6e, 0, 0},
8696         {0x3D, 0xf0, 0xf0, 1, 1},
8697         {0x3E, 0, 0, 0, 0},
8698         {0x3F, 0, 0, 0, 0},
8699         {0x40, 0, 0, 0, 0},
8700         {0x41, 0x3, 0x3, 0, 0},
8701         {0x42, 0x3, 0x3, 0, 0},
8702         {0x43, 0, 0, 0, 0},
8703         {0x44, 0x1e, 0x1e, 0, 0},
8704         {0x45, 0, 0, 0, 0},
8705         {0x46, 0x6e, 0x6e, 0, 0},
8706         {0x47, 0xf0, 0xf0, 1, 1},
8707         {0x48, 0, 0, 0, 0},
8708         {0x49, 0x2, 0x2, 0, 0},
8709         {0x4A, 0xff, 0xff, 1, 1},
8710         {0x4B, 0xc, 0xc, 0, 0},
8711         {0x4C, 0, 0, 0, 0},
8712         {0x4D, 0x38, 0x38, 0, 0},
8713         {0x4E, 0x70, 0x70, 1, 1},
8714         {0x4F, 0x2, 0x2, 0, 0},
8715         {0x50, 0x88, 0x88, 0, 0},
8716         {0x51, 0xc, 0xc, 0, 0},
8717         {0x52, 0, 0, 0, 0},
8718         {0x53, 0x8, 0x8, 0, 0},
8719         {0x54, 0x70, 0x70, 1, 1},
8720         {0x55, 0x2, 0x2, 0, 0},
8721         {0x56, 0xff, 0xff, 1, 1},
8722         {0x57, 0, 0, 0, 0},
8723         {0x58, 0x83, 0x83, 0, 0},
8724         {0x59, 0x77, 0x77, 1, 1},
8725         {0x5A, 0, 0, 0, 0},
8726         {0x5B, 0x2, 0x2, 0, 0},
8727         {0x5C, 0x88, 0x88, 0, 0},
8728         {0x5D, 0, 0, 0, 0},
8729         {0x5E, 0x8, 0x8, 0, 0},
8730         {0x5F, 0x77, 0x77, 1, 1},
8731         {0x60, 0x1, 0x1, 0, 0},
8732         {0x61, 0, 0, 0, 0},
8733         {0x62, 0x7, 0x7, 0, 0},
8734         {0x63, 0, 0, 0, 0},
8735         {0x64, 0x7, 0x7, 0, 0},
8736         {0x65, 0, 0, 0, 0},
8737         {0x66, 0, 0, 0, 0},
8738         {0x67, 0x72, 0x72, 1, 1},
8739         {0x68, 0, 0, 0, 0},
8740         {0x69, 0xa, 0xa, 0, 0},
8741         {0x6A, 0, 0, 0, 0},
8742         {0x6B, 0, 0, 0, 0},
8743         {0x6C, 0, 0, 0, 0},
8744         {0x6D, 0, 0, 0, 0},
8745         {0x6E, 0, 0, 0, 0},
8746         {0x6F, 0, 0, 0, 0},
8747         {0x70, 0, 0, 0, 0},
8748         {0x71, 0x2, 0x2, 0, 0},
8749         {0x72, 0, 0, 0, 0},
8750         {0x73, 0, 0, 0, 0},
8751         {0x74, 0xe, 0xe, 0, 0},
8752         {0x75, 0xe, 0xe, 0, 0},
8753         {0x76, 0xe, 0xe, 0, 0},
8754         {0x77, 0x13, 0x13, 0, 0},
8755         {0x78, 0x13, 0x13, 0, 0},
8756         {0x79, 0x1b, 0x1b, 0, 0},
8757         {0x7A, 0x1b, 0x1b, 0, 0},
8758         {0x7B, 0x55, 0x55, 0, 0},
8759         {0x7C, 0x5b, 0x5b, 0, 0},
8760         {0x7D, 0, 0, 0, 0},
8761         {0x7E, 0, 0, 0, 0},
8762         {0x7F, 0, 0, 0, 0},
8763         {0x80, 0, 0, 0, 0},
8764         {0x81, 0, 0, 0, 0},
8765         {0x82, 0, 0, 0, 0},
8766         {0x83, 0, 0, 0, 0},
8767         {0x84, 0, 0, 0, 0},
8768         {0x85, 0, 0, 0, 0},
8769         {0x86, 0, 0, 0, 0},
8770         {0x87, 0, 0, 0, 0},
8771         {0x88, 0, 0, 0, 0},
8772         {0x89, 0, 0, 0, 0},
8773         {0x8A, 0, 0, 0, 0},
8774         {0x8B, 0, 0, 0, 0},
8775         {0x8C, 0, 0, 0, 0},
8776         {0x8D, 0, 0, 0, 0},
8777         {0x8E, 0, 0, 0, 0},
8778         {0x8F, 0, 0, 0, 0},
8779         {0x90, 0, 0, 0, 0},
8780         {0x91, 0, 0, 0, 0},
8781         {0x92, 0, 0, 0, 0},
8782         {0xFFFF, 0, 0, 0, 0}
8783 };
8784
8785 radio_regs_t regs_RX_2056_A1[] = {
8786         {0x02, 0, 0, 0, 0},
8787         {0x03, 0, 0, 0, 0},
8788         {0x04, 0, 0, 0, 0},
8789         {0x05, 0, 0, 0, 0},
8790         {0x06, 0, 0, 0, 0},
8791         {0x07, 0, 0, 0, 0},
8792         {0x08, 0, 0, 0, 0},
8793         {0x09, 0, 0, 0, 0},
8794         {0x0A, 0, 0, 0, 0},
8795         {0x0B, 0, 0, 0, 0},
8796         {0x0C, 0, 0, 0, 0},
8797         {0x0D, 0, 0, 0, 0},
8798         {0x0E, 0, 0, 0, 0},
8799         {0x0F, 0, 0, 0, 0},
8800         {0x10, 0, 0, 0, 0},
8801         {0x11, 0, 0, 0, 0},
8802         {0x12, 0, 0, 0, 0},
8803         {0x13, 0, 0, 0, 0},
8804         {0x14, 0, 0, 0, 0},
8805         {0x15, 0, 0, 0, 0},
8806         {0x16, 0, 0, 0, 0},
8807         {0x17, 0, 0, 0, 0},
8808         {0x18, 0, 0, 0, 0},
8809         {0x19, 0, 0, 0, 0},
8810         {0x1A, 0, 0, 0, 0},
8811         {0x1B, 0, 0, 0, 0},
8812         {0x1C, 0, 0, 0, 0},
8813         {0x1D, 0, 0, 0, 0},
8814         {0x1E, 0, 0, 0, 0},
8815         {0x1F, 0, 0, 0, 0},
8816         {0x20, 0x3, 0x3, 0, 0},
8817         {0x21, 0, 0, 0, 0},
8818         {0x22, 0, 0, 0, 0},
8819         {0x23, 0x90, 0x90, 0, 0},
8820         {0x24, 0x55, 0x55, 0, 0},
8821         {0x25, 0x15, 0x15, 0, 0},
8822         {0x26, 0x5, 0x5, 0, 0},
8823         {0x27, 0x15, 0x15, 0, 0},
8824         {0x28, 0x5, 0x5, 0, 0},
8825         {0x29, 0x20, 0x20, 0, 0},
8826         {0x2A, 0x11, 0x11, 0, 0},
8827         {0x2B, 0x90, 0x90, 0, 0},
8828         {0x2C, 0, 0, 0, 0},
8829         {0x2D, 0x88, 0x88, 0, 0},
8830         {0x2E, 0x32, 0x32, 0, 0},
8831         {0x2F, 0x77, 0x77, 0, 0},
8832         {0x30, 0x17, 0x17, 1, 1},
8833         {0x31, 0xff, 0xff, 1, 1},
8834         {0x32, 0x20, 0x20, 0, 0},
8835         {0x33, 0, 0, 0, 0},
8836         {0x34, 0x88, 0x88, 0, 0},
8837         {0x35, 0x32, 0x32, 0, 0},
8838         {0x36, 0x77, 0x77, 0, 0},
8839         {0x37, 0x17, 0x17, 1, 1},
8840         {0x38, 0xf0, 0xf0, 1, 1},
8841         {0x39, 0x20, 0x20, 0, 0},
8842         {0x3A, 0x8, 0x8, 0, 0},
8843         {0x3B, 0x55, 0x55, 1, 1},
8844         {0x3C, 0, 0, 0, 0},
8845         {0x3D, 0x44, 0x44, 1, 1},
8846         {0x3E, 0, 0, 0, 0},
8847         {0x3F, 0x44, 0x44, 0, 0},
8848         {0x40, 0xf, 0xf, 1, 1},
8849         {0x41, 0x6, 0x6, 0, 0},
8850         {0x42, 0x4, 0x4, 0, 0},
8851         {0x43, 0x50, 0x50, 1, 1},
8852         {0x44, 0x8, 0x8, 0, 0},
8853         {0x45, 0x55, 0x55, 1, 1},
8854         {0x46, 0, 0, 0, 0},
8855         {0x47, 0x11, 0x11, 0, 0},
8856         {0x48, 0, 0, 0, 0},
8857         {0x49, 0x44, 0x44, 0, 0},
8858         {0x4A, 0x7, 0x7, 0, 0},
8859         {0x4B, 0x6, 0x6, 0, 0},
8860         {0x4C, 0x4, 0x4, 0, 0},
8861         {0x4D, 0, 0, 0, 0},
8862         {0x4E, 0, 0, 0, 0},
8863         {0x4F, 0x26, 0x26, 1, 1},
8864         {0x50, 0x26, 0x26, 1, 1},
8865         {0x51, 0xf, 0xf, 1, 1},
8866         {0x52, 0xf, 0xf, 1, 1},
8867         {0x53, 0x44, 0x44, 0, 0},
8868         {0x54, 0, 0, 0, 0},
8869         {0x55, 0, 0, 0, 0},
8870         {0x56, 0x8, 0x8, 0, 0},
8871         {0x57, 0x8, 0x8, 0, 0},
8872         {0x58, 0x7, 0x7, 0, 0},
8873         {0x59, 0x22, 0x22, 0, 0},
8874         {0x5A, 0x22, 0x22, 0, 0},
8875         {0x5B, 0x2, 0x2, 0, 0},
8876         {0x5C, 0x2f, 0x2f, 1, 1},
8877         {0x5D, 0x7, 0x7, 0, 0},
8878         {0x5E, 0x55, 0x55, 0, 0},
8879         {0x5F, 0x23, 0x23, 0, 0},
8880         {0x60, 0x41, 0x41, 0, 0},
8881         {0x61, 0x1, 0x1, 0, 0},
8882         {0x62, 0xa, 0xa, 0, 0},
8883         {0x63, 0, 0, 0, 0},
8884         {0x64, 0, 0, 0, 0},
8885         {0x65, 0, 0, 0, 0},
8886         {0x66, 0, 0, 0, 0},
8887         {0x67, 0, 0, 0, 0},
8888         {0x68, 0, 0, 0, 0},
8889         {0x69, 0, 0, 0, 0},
8890         {0x6A, 0, 0, 0, 0},
8891         {0x6B, 0xc, 0xc, 0, 0},
8892         {0x6C, 0, 0, 0, 0},
8893         {0x6D, 0, 0, 0, 0},
8894         {0x6E, 0, 0, 0, 0},
8895         {0x6F, 0, 0, 0, 0},
8896         {0x70, 0, 0, 0, 0},
8897         {0x71, 0, 0, 0, 0},
8898         {0x72, 0x22, 0x22, 0, 0},
8899         {0x73, 0x22, 0x22, 0, 0},
8900         {0x74, 0, 0, 1, 1},
8901         {0x75, 0xa, 0xa, 0, 0},
8902         {0x76, 0x1, 0x1, 0, 0},
8903         {0x77, 0x22, 0x22, 0, 0},
8904         {0x78, 0x30, 0x30, 0, 0},
8905         {0x79, 0, 0, 0, 0},
8906         {0x7A, 0, 0, 0, 0},
8907         {0x7B, 0, 0, 0, 0},
8908         {0x7C, 0, 0, 0, 0},
8909         {0x7D, 0, 0, 0, 0},
8910         {0x7E, 0, 0, 0, 0},
8911         {0x7F, 0, 0, 0, 0},
8912         {0x80, 0, 0, 0, 0},
8913         {0x81, 0, 0, 0, 0},
8914         {0x82, 0, 0, 0, 0},
8915         {0x83, 0, 0, 0, 0},
8916         {0x84, 0, 0, 0, 0},
8917         {0x85, 0, 0, 0, 0},
8918         {0x86, 0, 0, 0, 0},
8919         {0x87, 0, 0, 0, 0},
8920         {0x88, 0, 0, 0, 0},
8921         {0x89, 0, 0, 0, 0},
8922         {0x8A, 0, 0, 0, 0},
8923         {0x8B, 0, 0, 0, 0},
8924         {0x8C, 0, 0, 0, 0},
8925         {0x8D, 0, 0, 0, 0},
8926         {0x8E, 0, 0, 0, 0},
8927         {0x8F, 0, 0, 0, 0},
8928         {0x90, 0, 0, 0, 0},
8929         {0x91, 0, 0, 0, 0},
8930         {0x92, 0, 0, 0, 0},
8931         {0x93, 0, 0, 0, 0},
8932         {0x94, 0, 0, 0, 0},
8933         {0xFFFF, 0, 0, 0, 0}
8934 };
8935
8936 radio_regs_t regs_SYN_2056_rev5[] = {
8937         {0x02, 0, 0, 0, 0},
8938         {0x03, 0, 0, 0, 0},
8939         {0x04, 0, 0, 0, 0},
8940         {0x05, 0, 0, 0, 0},
8941         {0x06, 0, 0, 0, 0},
8942         {0x07, 0, 0, 0, 0},
8943         {0x08, 0, 0, 0, 0},
8944         {0x09, 0x1, 0x1, 0, 0},
8945         {0x0A, 0, 0, 0, 0},
8946         {0x0B, 0, 0, 0, 0},
8947         {0x0C, 0, 0, 0, 0},
8948         {0x0D, 0, 0, 0, 0},
8949         {0x0E, 0, 0, 0, 0},
8950         {0x0F, 0, 0, 0, 0},
8951         {0x10, 0, 0, 0, 0},
8952         {0x11, 0, 0, 0, 0},
8953         {0x12, 0, 0, 0, 0},
8954         {0x13, 0, 0, 0, 0},
8955         {0x14, 0, 0, 0, 0},
8956         {0x15, 0, 0, 0, 0},
8957         {0x16, 0, 0, 0, 0},
8958         {0x17, 0, 0, 0, 0},
8959         {0x18, 0, 0, 0, 0},
8960         {0x19, 0, 0, 0, 0},
8961         {0x1A, 0, 0, 0, 0},
8962         {0x1B, 0, 0, 0, 0},
8963         {0x1C, 0, 0, 0, 0},
8964         {0x1D, 0, 0, 0, 0},
8965         {0x1E, 0, 0, 0, 0},
8966         {0x1F, 0, 0, 0, 0},
8967         {0x20, 0, 0, 0, 0},
8968         {0x21, 0, 0, 0, 0},
8969         {0x22, 0x60, 0x60, 0, 0},
8970         {0x23, 0x6, 0x6, 0, 0},
8971         {0x24, 0xc, 0xc, 0, 0},
8972         {0x25, 0, 0, 0, 0},
8973         {0x26, 0, 0, 0, 0},
8974         {0x27, 0, 0, 0, 0},
8975         {0x28, 0x1, 0x1, 0, 0},
8976         {0x29, 0, 0, 0, 0},
8977         {0x2A, 0, 0, 0, 0},
8978         {0x2B, 0, 0, 0, 0},
8979         {0x2C, 0, 0, 0, 0},
8980         {0x2D, 0, 0, 0, 0},
8981         {0x2E, 0, 0, 0, 0},
8982         {0x2F, 0x1f, 0x1f, 0, 0},
8983         {0x30, 0x15, 0x15, 0, 0},
8984         {0x31, 0xf, 0xf, 0, 0},
8985         {0x32, 0, 0, 0, 0},
8986         {0x33, 0, 0, 0, 0},
8987         {0x34, 0, 0, 0, 0},
8988         {0x35, 0, 0, 0, 0},
8989         {0x36, 0, 0, 0, 0},
8990         {0x37, 0, 0, 0, 0},
8991         {0x38, 0, 0, 0, 0},
8992         {0x39, 0, 0, 0, 0},
8993         {0x3A, 0, 0, 0, 0},
8994         {0x3B, 0, 0, 0, 0},
8995         {0x3C, 0x13, 0x13, 0, 0},
8996         {0x3D, 0xf, 0xf, 0, 0},
8997         {0x3E, 0x18, 0x18, 0, 0},
8998         {0x3F, 0, 0, 0, 0},
8999         {0x40, 0, 0, 0, 0},
9000         {0x41, 0x20, 0x20, 0, 0},
9001         {0x42, 0x20, 0x20, 0, 0},
9002         {0x43, 0, 0, 0, 0},
9003         {0x44, 0x77, 0x77, 0, 0},
9004         {0x45, 0x7, 0x7, 0, 0},
9005         {0x46, 0x1, 0x1, 0, 0},
9006         {0x47, 0x4, 0x4, 0, 0},
9007         {0x48, 0xf, 0xf, 0, 0},
9008         {0x49, 0x30, 0x30, 0, 0},
9009         {0x4A, 0x32, 0x32, 0, 0},
9010         {0x4B, 0xd, 0xd, 0, 0},
9011         {0x4C, 0xd, 0xd, 0, 0},
9012         {0x4D, 0x4, 0x4, 0, 0},
9013         {0x4E, 0x6, 0x6, 0, 0},
9014         {0x4F, 0x1, 0x1, 0, 0},
9015         {0x50, 0x1c, 0x1c, 0, 0},
9016         {0x51, 0x2, 0x2, 0, 0},
9017         {0x52, 0x2, 0x2, 0, 0},
9018         {0x53, 0xf7, 0xf7, 1, 1},
9019         {0x54, 0xb4, 0xb4, 0, 0},
9020         {0x55, 0xd2, 0xd2, 0, 0},
9021         {0x56, 0, 0, 0, 0},
9022         {0x57, 0, 0, 0, 0},
9023         {0x58, 0x4, 0x4, 0, 0},
9024         {0x59, 0x96, 0x96, 0, 0},
9025         {0x5A, 0x3e, 0x3e, 0, 0},
9026         {0x5B, 0x3e, 0x3e, 0, 0},
9027         {0x5C, 0x13, 0x13, 0, 0},
9028         {0x5D, 0x2, 0x2, 0, 0},
9029         {0x5E, 0, 0, 0, 0},
9030         {0x5F, 0x7, 0x7, 0, 0},
9031         {0x60, 0x7, 0x7, 1, 1},
9032         {0x61, 0x8, 0x8, 0, 0},
9033         {0x62, 0x3, 0x3, 0, 0},
9034         {0x63, 0, 0, 0, 0},
9035         {0x64, 0, 0, 0, 0},
9036         {0x65, 0, 0, 0, 0},
9037         {0x66, 0, 0, 0, 0},
9038         {0x67, 0, 0, 0, 0},
9039         {0x68, 0x40, 0x40, 0, 0},
9040         {0x69, 0, 0, 0, 0},
9041         {0x6A, 0, 0, 0, 0},
9042         {0x6B, 0, 0, 0, 0},
9043         {0x6C, 0, 0, 0, 0},
9044         {0x6D, 0x1, 0x1, 0, 0},
9045         {0x6E, 0, 0, 0, 0},
9046         {0x6F, 0, 0, 0, 0},
9047         {0x70, 0x60, 0x60, 0, 0},
9048         {0x71, 0x66, 0x66, 0, 0},
9049         {0x72, 0xc, 0xc, 0, 0},
9050         {0x73, 0x66, 0x66, 0, 0},
9051         {0x74, 0x8f, 0x8f, 1, 1},
9052         {0x75, 0, 0, 0, 0},
9053         {0x76, 0xcc, 0xcc, 0, 0},
9054         {0x77, 0x1, 0x1, 0, 0},
9055         {0x78, 0x66, 0x66, 0, 0},
9056         {0x79, 0x66, 0x66, 0, 0},
9057         {0x7A, 0, 0, 0, 0},
9058         {0x7B, 0, 0, 0, 0},
9059         {0x7C, 0, 0, 0, 0},
9060         {0x7D, 0, 0, 0, 0},
9061         {0x7E, 0, 0, 0, 0},
9062         {0x7F, 0, 0, 0, 0},
9063         {0x80, 0, 0, 0, 0},
9064         {0x81, 0, 0, 0, 0},
9065         {0x82, 0, 0, 0, 0},
9066         {0x83, 0, 0, 0, 0},
9067         {0x84, 0, 0, 0, 0},
9068         {0x85, 0xff, 0xff, 0, 0},
9069         {0x86, 0, 0, 0, 0},
9070         {0x87, 0, 0, 0, 0},
9071         {0x88, 0, 0, 0, 0},
9072         {0x89, 0, 0, 0, 0},
9073         {0x8A, 0, 0, 0, 0},
9074         {0x8B, 0, 0, 0, 0},
9075         {0x8C, 0, 0, 0, 0},
9076         {0x8D, 0, 0, 0, 0},
9077         {0x8E, 0, 0, 0, 0},
9078         {0x8F, 0, 0, 0, 0},
9079         {0x90, 0, 0, 0, 0},
9080         {0x91, 0, 0, 0, 0},
9081         {0x92, 0, 0, 0, 0},
9082         {0x93, 0, 0, 0, 0},
9083         {0x94, 0, 0, 0, 0},
9084         {0x95, 0, 0, 0, 0},
9085         {0x96, 0, 0, 0, 0},
9086         {0x97, 0, 0, 0, 0},
9087         {0x98, 0, 0, 0, 0},
9088         {0x99, 0, 0, 0, 0},
9089         {0x9A, 0, 0, 0, 0},
9090         {0x9B, 0, 0, 0, 0},
9091         {0x9C, 0, 0, 0, 0},
9092         {0x9D, 0, 0, 0, 0},
9093         {0x9E, 0, 0, 0, 0},
9094         {0x9F, 0x6, 0x6, 0, 0},
9095         {0xA0, 0x66, 0x66, 0, 0},
9096         {0xA1, 0x66, 0x66, 0, 0},
9097         {0xA2, 0x66, 0x66, 0, 0},
9098         {0xA3, 0x66, 0x66, 0, 0},
9099         {0xA4, 0x66, 0x66, 0, 0},
9100         {0xA5, 0x66, 0x66, 0, 0},
9101         {0xA6, 0x66, 0x66, 0, 0},
9102         {0xA7, 0x66, 0x66, 0, 0},
9103         {0xA8, 0x66, 0x66, 0, 0},
9104         {0xA9, 0x66, 0x66, 0, 0},
9105         {0xAA, 0x66, 0x66, 0, 0},
9106         {0xAB, 0x66, 0x66, 0, 0},
9107         {0xAC, 0x66, 0x66, 0, 0},
9108         {0xAD, 0x66, 0x66, 0, 0},
9109         {0xAE, 0x66, 0x66, 0, 0},
9110         {0xAF, 0x66, 0x66, 0, 0},
9111         {0xB0, 0x66, 0x66, 0, 0},
9112         {0xB1, 0x66, 0x66, 0, 0},
9113         {0xB2, 0x66, 0x66, 0, 0},
9114         {0xB3, 0xa, 0xa, 0, 0},
9115         {0xB4, 0, 0, 0, 0},
9116         {0xB5, 0, 0, 0, 0},
9117         {0xB6, 0, 0, 0, 0},
9118         {0xFFFF, 0, 0, 0, 0}
9119 };
9120
9121 radio_regs_t regs_TX_2056_rev5[] = {
9122         {0x02, 0, 0, 0, 0},
9123         {0x03, 0, 0, 0, 0},
9124         {0x04, 0, 0, 0, 0},
9125         {0x05, 0, 0, 0, 0},
9126         {0x06, 0, 0, 0, 0},
9127         {0x07, 0, 0, 0, 0},
9128         {0x08, 0, 0, 0, 0},
9129         {0x09, 0, 0, 0, 0},
9130         {0x0A, 0, 0, 0, 0},
9131         {0x0B, 0, 0, 0, 0},
9132         {0x0C, 0, 0, 0, 0},
9133         {0x0D, 0, 0, 0, 0},
9134         {0x0E, 0, 0, 0, 0},
9135         {0x0F, 0, 0, 0, 0},
9136         {0x10, 0, 0, 0, 0},
9137         {0x11, 0, 0, 0, 0},
9138         {0x12, 0, 0, 0, 0},
9139         {0x13, 0, 0, 0, 0},
9140         {0x14, 0, 0, 0, 0},
9141         {0x15, 0, 0, 0, 0},
9142         {0x16, 0, 0, 0, 0},
9143         {0x17, 0, 0, 0, 0},
9144         {0x18, 0, 0, 0, 0},
9145         {0x19, 0, 0, 0, 0},
9146         {0x1A, 0, 0, 0, 0},
9147         {0x1B, 0, 0, 0, 0},
9148         {0x1C, 0, 0, 0, 0},
9149         {0x1D, 0, 0, 0, 0},
9150         {0x1E, 0, 0, 0, 0},
9151         {0x1F, 0, 0, 0, 0},
9152         {0x20, 0, 0, 0, 0},
9153         {0x21, 0x88, 0x88, 0, 0},
9154         {0x22, 0x88, 0x88, 0, 0},
9155         {0x23, 0x88, 0x88, 0, 0},
9156         {0x24, 0x88, 0x88, 0, 0},
9157         {0x25, 0xc, 0xc, 0, 0},
9158         {0x26, 0, 0, 0, 0},
9159         {0x27, 0x3, 0x3, 0, 0},
9160         {0x28, 0, 0, 0, 0},
9161         {0x29, 0x3, 0x3, 0, 0},
9162         {0x2A, 0x37, 0x37, 0, 0},
9163         {0x2B, 0x3, 0x3, 0, 0},
9164         {0x2C, 0, 0, 0, 0},
9165         {0x2D, 0, 0, 0, 0},
9166         {0x2E, 0x1, 0x1, 0, 0},
9167         {0x2F, 0x1, 0x1, 0, 0},
9168         {0x30, 0, 0, 0, 0},
9169         {0x31, 0, 0, 0, 0},
9170         {0x32, 0, 0, 0, 0},
9171         {0x33, 0x11, 0x11, 0, 0},
9172         {0x34, 0x11, 0x11, 0, 0},
9173         {0x35, 0, 0, 0, 0},
9174         {0x36, 0, 0, 0, 0},
9175         {0x37, 0x3, 0x3, 0, 0},
9176         {0x38, 0xf, 0xf, 0, 0},
9177         {0x39, 0, 0, 0, 0},
9178         {0x3A, 0x2d, 0x2d, 0, 0},
9179         {0x3B, 0, 0, 0, 0},
9180         {0x3C, 0x6e, 0x6e, 0, 0},
9181         {0x3D, 0xf0, 0xf0, 1, 1},
9182         {0x3E, 0, 0, 0, 0},
9183         {0x3F, 0, 0, 0, 0},
9184         {0x40, 0, 0, 0, 0},
9185         {0x41, 0x3, 0x3, 0, 0},
9186         {0x42, 0x3, 0x3, 0, 0},
9187         {0x43, 0, 0, 0, 0},
9188         {0x44, 0x1e, 0x1e, 0, 0},
9189         {0x45, 0, 0, 0, 0},
9190         {0x46, 0x6e, 0x6e, 0, 0},
9191         {0x47, 0xf0, 0xf0, 1, 1},
9192         {0x48, 0, 0, 0, 0},
9193         {0x49, 0x2, 0x2, 0, 0},
9194         {0x4A, 0xff, 0xff, 1, 1},
9195         {0x4B, 0xc, 0xc, 0, 0},
9196         {0x4C, 0, 0, 0, 0},
9197         {0x4D, 0x38, 0x38, 0, 0},
9198         {0x4E, 0x70, 0x70, 1, 1},
9199         {0x4F, 0x2, 0x2, 0, 0},
9200         {0x50, 0x88, 0x88, 0, 0},
9201         {0x51, 0xc, 0xc, 0, 0},
9202         {0x52, 0, 0, 0, 0},
9203         {0x53, 0x8, 0x8, 0, 0},
9204         {0x54, 0x70, 0x70, 1, 1},
9205         {0x55, 0x2, 0x2, 0, 0},
9206         {0x56, 0xff, 0xff, 1, 1},
9207         {0x57, 0, 0, 0, 0},
9208         {0x58, 0x83, 0x83, 0, 0},
9209         {0x59, 0x77, 0x77, 1, 1},
9210         {0x5A, 0, 0, 0, 0},
9211         {0x5B, 0x2, 0x2, 0, 0},
9212         {0x5C, 0x88, 0x88, 0, 0},
9213         {0x5D, 0, 0, 0, 0},
9214         {0x5E, 0x8, 0x8, 0, 0},
9215         {0x5F, 0x77, 0x77, 1, 1},
9216         {0x60, 0x1, 0x1, 0, 0},
9217         {0x61, 0, 0, 0, 0},
9218         {0x62, 0x7, 0x7, 0, 0},
9219         {0x63, 0, 0, 0, 0},
9220         {0x64, 0x7, 0x7, 0, 0},
9221         {0x65, 0, 0, 0, 0},
9222         {0x66, 0, 0, 0, 0},
9223         {0x67, 0, 0, 1, 1},
9224         {0x68, 0, 0, 0, 0},
9225         {0x69, 0xa, 0xa, 0, 0},
9226         {0x6A, 0, 0, 0, 0},
9227         {0x6B, 0, 0, 0, 0},
9228         {0x6C, 0, 0, 0, 0},
9229         {0x6D, 0, 0, 0, 0},
9230         {0x6E, 0, 0, 0, 0},
9231         {0x6F, 0, 0, 0, 0},
9232         {0x70, 0, 0, 0, 0},
9233         {0x71, 0x2, 0x2, 0, 0},
9234         {0x72, 0, 0, 0, 0},
9235         {0x73, 0, 0, 0, 0},
9236         {0x74, 0xe, 0xe, 0, 0},
9237         {0x75, 0xe, 0xe, 0, 0},
9238         {0x76, 0xe, 0xe, 0, 0},
9239         {0x77, 0x13, 0x13, 0, 0},
9240         {0x78, 0x13, 0x13, 0, 0},
9241         {0x79, 0x1b, 0x1b, 0, 0},
9242         {0x7A, 0x1b, 0x1b, 0, 0},
9243         {0x7B, 0x55, 0x55, 0, 0},
9244         {0x7C, 0x5b, 0x5b, 0, 0},
9245         {0x7D, 0, 0, 0, 0},
9246         {0x7E, 0, 0, 0, 0},
9247         {0x7F, 0, 0, 0, 0},
9248         {0x80, 0, 0, 0, 0},
9249         {0x81, 0, 0, 0, 0},
9250         {0x82, 0, 0, 0, 0},
9251         {0x83, 0, 0, 0, 0},
9252         {0x84, 0, 0, 0, 0},
9253         {0x85, 0, 0, 0, 0},
9254         {0x86, 0, 0, 0, 0},
9255         {0x87, 0, 0, 0, 0},
9256         {0x88, 0, 0, 0, 0},
9257         {0x89, 0, 0, 0, 0},
9258         {0x8A, 0, 0, 0, 0},
9259         {0x8B, 0, 0, 0, 0},
9260         {0x8C, 0, 0, 0, 0},
9261         {0x8D, 0, 0, 0, 0},
9262         {0x8E, 0, 0, 0, 0},
9263         {0x8F, 0, 0, 0, 0},
9264         {0x90, 0, 0, 0, 0},
9265         {0x91, 0, 0, 0, 0},
9266         {0x92, 0, 0, 0, 0},
9267         {0x93, 0x70, 0x70, 0, 0},
9268         {0x94, 0x70, 0x70, 0, 0},
9269         {0x95, 0x71, 0x71, 1, 1},
9270         {0x96, 0x71, 0x71, 1, 1},
9271         {0x97, 0x72, 0x72, 1, 1},
9272         {0x98, 0x73, 0x73, 1, 1},
9273         {0x99, 0x74, 0x74, 1, 1},
9274         {0x9A, 0x75, 0x75, 1, 1},
9275         {0xFFFF, 0, 0, 0, 0}
9276 };
9277
9278 radio_regs_t regs_RX_2056_rev5[] = {
9279         {0x02, 0, 0, 0, 0},
9280         {0x03, 0, 0, 0, 0},
9281         {0x04, 0, 0, 0, 0},
9282         {0x05, 0, 0, 0, 0},
9283         {0x06, 0, 0, 0, 0},
9284         {0x07, 0, 0, 0, 0},
9285         {0x08, 0, 0, 0, 0},
9286         {0x09, 0, 0, 0, 0},
9287         {0x0A, 0, 0, 0, 0},
9288         {0x0B, 0, 0, 0, 0},
9289         {0x0C, 0, 0, 0, 0},
9290         {0x0D, 0, 0, 0, 0},
9291         {0x0E, 0, 0, 0, 0},
9292         {0x0F, 0, 0, 0, 0},
9293         {0x10, 0, 0, 0, 0},
9294         {0x11, 0, 0, 0, 0},
9295         {0x12, 0, 0, 0, 0},
9296         {0x13, 0, 0, 0, 0},
9297         {0x14, 0, 0, 0, 0},
9298         {0x15, 0, 0, 0, 0},
9299         {0x16, 0, 0, 0, 0},
9300         {0x17, 0, 0, 0, 0},
9301         {0x18, 0, 0, 0, 0},
9302         {0x19, 0, 0, 0, 0},
9303         {0x1A, 0, 0, 0, 0},
9304         {0x1B, 0, 0, 0, 0},
9305         {0x1C, 0, 0, 0, 0},
9306         {0x1D, 0, 0, 0, 0},
9307         {0x1E, 0, 0, 0, 0},
9308         {0x1F, 0, 0, 0, 0},
9309         {0x20, 0x3, 0x3, 0, 0},
9310         {0x21, 0, 0, 0, 0},
9311         {0x22, 0, 0, 0, 0},
9312         {0x23, 0x90, 0x90, 0, 0},
9313         {0x24, 0x55, 0x55, 0, 0},
9314         {0x25, 0x15, 0x15, 0, 0},
9315         {0x26, 0x5, 0x5, 0, 0},
9316         {0x27, 0x15, 0x15, 0, 0},
9317         {0x28, 0x5, 0x5, 0, 0},
9318         {0x29, 0x20, 0x20, 0, 0},
9319         {0x2A, 0x11, 0x11, 0, 0},
9320         {0x2B, 0x90, 0x90, 0, 0},
9321         {0x2C, 0, 0, 0, 0},
9322         {0x2D, 0x88, 0x88, 0, 0},
9323         {0x2E, 0x32, 0x32, 0, 0},
9324         {0x2F, 0x77, 0x77, 0, 0},
9325         {0x30, 0x17, 0x17, 1, 1},
9326         {0x31, 0xff, 0xff, 1, 1},
9327         {0x32, 0x20, 0x20, 0, 0},
9328         {0x33, 0, 0, 0, 0},
9329         {0x34, 0x88, 0x88, 0, 0},
9330         {0x35, 0x32, 0x32, 0, 0},
9331         {0x36, 0x77, 0x77, 0, 0},
9332         {0x37, 0x17, 0x17, 1, 1},
9333         {0x38, 0xf0, 0xf0, 1, 1},
9334         {0x39, 0x20, 0x20, 0, 0},
9335         {0x3A, 0x8, 0x8, 0, 0},
9336         {0x3B, 0x55, 0x55, 1, 1},
9337         {0x3C, 0, 0, 0, 0},
9338         {0x3D, 0x88, 0x88, 1, 1},
9339         {0x3E, 0, 0, 0, 0},
9340         {0x3F, 0, 0, 1, 1},
9341         {0x40, 0x7, 0x7, 1, 1},
9342         {0x41, 0x6, 0x6, 0, 0},
9343         {0x42, 0x4, 0x4, 0, 0},
9344         {0x43, 0, 0, 0, 0},
9345         {0x44, 0x8, 0x8, 0, 0},
9346         {0x45, 0x55, 0x55, 1, 1},
9347         {0x46, 0, 0, 0, 0},
9348         {0x47, 0x11, 0x11, 0, 0},
9349         {0x48, 0, 0, 0, 0},
9350         {0x49, 0, 0, 1, 1},
9351         {0x4A, 0x7, 0x7, 0, 0},
9352         {0x4B, 0x6, 0x6, 0, 0},
9353         {0x4C, 0x4, 0x4, 0, 0},
9354         {0x4D, 0, 0, 0, 0},
9355         {0x4E, 0, 0, 0, 0},
9356         {0x4F, 0x26, 0x26, 1, 1},
9357         {0x50, 0x26, 0x26, 1, 1},
9358         {0x51, 0xf, 0xf, 1, 1},
9359         {0x52, 0xf, 0xf, 1, 1},
9360         {0x53, 0x44, 0x44, 0, 0},
9361         {0x54, 0, 0, 0, 0},
9362         {0x55, 0, 0, 0, 0},
9363         {0x56, 0x8, 0x8, 0, 0},
9364         {0x57, 0x8, 0x8, 0, 0},
9365         {0x58, 0x7, 0x7, 0, 0},
9366         {0x59, 0x22, 0x22, 0, 0},
9367         {0x5A, 0x22, 0x22, 0, 0},
9368         {0x5B, 0x2, 0x2, 0, 0},
9369         {0x5C, 0x4, 0x4, 1, 1},
9370         {0x5D, 0x7, 0x7, 0, 0},
9371         {0x5E, 0x55, 0x55, 0, 0},
9372         {0x5F, 0x23, 0x23, 0, 0},
9373         {0x60, 0x41, 0x41, 0, 0},
9374         {0x61, 0x1, 0x1, 0, 0},
9375         {0x62, 0xa, 0xa, 0, 0},
9376         {0x63, 0, 0, 0, 0},
9377         {0x64, 0, 0, 0, 0},
9378         {0x65, 0, 0, 0, 0},
9379         {0x66, 0, 0, 0, 0},
9380         {0x67, 0, 0, 0, 0},
9381         {0x68, 0, 0, 0, 0},
9382         {0x69, 0, 0, 0, 0},
9383         {0x6A, 0, 0, 0, 0},
9384         {0x6B, 0xc, 0xc, 0, 0},
9385         {0x6C, 0, 0, 0, 0},
9386         {0x6D, 0, 0, 0, 0},
9387         {0x6E, 0, 0, 0, 0},
9388         {0x6F, 0, 0, 0, 0},
9389         {0x70, 0, 0, 0, 0},
9390         {0x71, 0, 0, 0, 0},
9391         {0x72, 0x22, 0x22, 0, 0},
9392         {0x73, 0x22, 0x22, 0, 0},
9393         {0x74, 0, 0, 1, 1},
9394         {0x75, 0xa, 0xa, 0, 0},
9395         {0x76, 0x1, 0x1, 0, 0},
9396         {0x77, 0x22, 0x22, 0, 0},
9397         {0x78, 0x30, 0x30, 0, 0},
9398         {0x79, 0, 0, 0, 0},
9399         {0x7A, 0, 0, 0, 0},
9400         {0x7B, 0, 0, 0, 0},
9401         {0x7C, 0, 0, 0, 0},
9402         {0x7D, 0, 0, 0, 0},
9403         {0x7E, 0, 0, 0, 0},
9404         {0x7F, 0, 0, 0, 0},
9405         {0x80, 0, 0, 0, 0},
9406         {0x81, 0, 0, 0, 0},
9407         {0x82, 0, 0, 0, 0},
9408         {0x83, 0, 0, 0, 0},
9409         {0x84, 0, 0, 0, 0},
9410         {0x85, 0, 0, 0, 0},
9411         {0x86, 0, 0, 0, 0},
9412         {0x87, 0, 0, 0, 0},
9413         {0x88, 0, 0, 0, 0},
9414         {0x89, 0, 0, 0, 0},
9415         {0x8A, 0, 0, 0, 0},
9416         {0x8B, 0, 0, 0, 0},
9417         {0x8C, 0, 0, 0, 0},
9418         {0x8D, 0, 0, 0, 0},
9419         {0x8E, 0, 0, 0, 0},
9420         {0x8F, 0, 0, 0, 0},
9421         {0x90, 0, 0, 0, 0},
9422         {0x91, 0, 0, 0, 0},
9423         {0x92, 0, 0, 0, 0},
9424         {0x93, 0, 0, 0, 0},
9425         {0x94, 0, 0, 0, 0},
9426         {0xFFFF, 0, 0, 0, 0}
9427 };
9428
9429 radio_regs_t regs_SYN_2056_rev6[] = {
9430         {0x02, 0, 0, 0, 0},
9431         {0x03, 0, 0, 0, 0},
9432         {0x04, 0, 0, 0, 0},
9433         {0x05, 0, 0, 0, 0},
9434         {0x06, 0, 0, 0, 0},
9435         {0x07, 0, 0, 0, 0},
9436         {0x08, 0, 0, 0, 0},
9437         {0x09, 0x1, 0x1, 0, 0},
9438         {0x0A, 0, 0, 0, 0},
9439         {0x0B, 0, 0, 0, 0},
9440         {0x0C, 0, 0, 0, 0},
9441         {0x0D, 0, 0, 0, 0},
9442         {0x0E, 0, 0, 0, 0},
9443         {0x0F, 0, 0, 0, 0},
9444         {0x10, 0, 0, 0, 0},
9445         {0x11, 0, 0, 0, 0},
9446         {0x12, 0, 0, 0, 0},
9447         {0x13, 0, 0, 0, 0},
9448         {0x14, 0, 0, 0, 0},
9449         {0x15, 0, 0, 0, 0},
9450         {0x16, 0, 0, 0, 0},
9451         {0x17, 0, 0, 0, 0},
9452         {0x18, 0, 0, 0, 0},
9453         {0x19, 0, 0, 0, 0},
9454         {0x1A, 0, 0, 0, 0},
9455         {0x1B, 0, 0, 0, 0},
9456         {0x1C, 0, 0, 0, 0},
9457         {0x1D, 0, 0, 0, 0},
9458         {0x1E, 0, 0, 0, 0},
9459         {0x1F, 0, 0, 0, 0},
9460         {0x20, 0, 0, 0, 0},
9461         {0x21, 0, 0, 0, 0},
9462         {0x22, 0x60, 0x60, 0, 0},
9463         {0x23, 0x6, 0x6, 0, 0},
9464         {0x24, 0xc, 0xc, 0, 0},
9465         {0x25, 0, 0, 0, 0},
9466         {0x26, 0, 0, 0, 0},
9467         {0x27, 0, 0, 0, 0},
9468         {0x28, 0x1, 0x1, 0, 0},
9469         {0x29, 0, 0, 0, 0},
9470         {0x2A, 0, 0, 0, 0},
9471         {0x2B, 0, 0, 0, 0},
9472         {0x2C, 0, 0, 0, 0},
9473         {0x2D, 0, 0, 0, 0},
9474         {0x2E, 0, 0, 0, 0},
9475         {0x2F, 0x1f, 0x1f, 0, 0},
9476         {0x30, 0x15, 0x15, 0, 0},
9477         {0x31, 0xf, 0xf, 0, 0},
9478         {0x32, 0, 0, 0, 0},
9479         {0x33, 0, 0, 0, 0},
9480         {0x34, 0, 0, 0, 0},
9481         {0x35, 0, 0, 0, 0},
9482         {0x36, 0, 0, 0, 0},
9483         {0x37, 0, 0, 0, 0},
9484         {0x38, 0, 0, 0, 0},
9485         {0x39, 0, 0, 0, 0},
9486         {0x3A, 0, 0, 0, 0},
9487         {0x3B, 0, 0, 0, 0},
9488         {0x3C, 0x13, 0x13, 0, 0},
9489         {0x3D, 0xf, 0xf, 0, 0},
9490         {0x3E, 0x18, 0x18, 0, 0},
9491         {0x3F, 0, 0, 0, 0},
9492         {0x40, 0, 0, 0, 0},
9493         {0x41, 0x20, 0x20, 0, 0},
9494         {0x42, 0x20, 0x20, 0, 0},
9495         {0x43, 0, 0, 0, 0},
9496         {0x44, 0x77, 0x77, 0, 0},
9497         {0x45, 0x7, 0x7, 0, 0},
9498         {0x46, 0x1, 0x1, 0, 0},
9499         {0x47, 0x4, 0x4, 0, 0},
9500         {0x48, 0xf, 0xf, 0, 0},
9501         {0x49, 0x30, 0x30, 0, 0},
9502         {0x4A, 0x32, 0x32, 0, 0},
9503         {0x4B, 0xd, 0xd, 0, 0},
9504         {0x4C, 0xd, 0xd, 0, 0},
9505         {0x4D, 0x4, 0x4, 0, 0},
9506         {0x4E, 0x6, 0x6, 0, 0},
9507         {0x4F, 0x1, 0x1, 0, 0},
9508         {0x50, 0x1c, 0x1c, 0, 0},
9509         {0x51, 0x2, 0x2, 0, 0},
9510         {0x52, 0x2, 0x2, 0, 0},
9511         {0x53, 0xf7, 0xf7, 1, 1},
9512         {0x54, 0xb4, 0xb4, 0, 0},
9513         {0x55, 0xd2, 0xd2, 0, 0},
9514         {0x56, 0, 0, 0, 0},
9515         {0x57, 0, 0, 0, 0},
9516         {0x58, 0x4, 0x4, 0, 0},
9517         {0x59, 0x96, 0x96, 0, 0},
9518         {0x5A, 0x3e, 0x3e, 0, 0},
9519         {0x5B, 0x3e, 0x3e, 0, 0},
9520         {0x5C, 0x13, 0x13, 0, 0},
9521         {0x5D, 0x2, 0x2, 0, 0},
9522         {0x5E, 0, 0, 0, 0},
9523         {0x5F, 0x7, 0x7, 0, 0},
9524         {0x60, 0x7, 0x7, 1, 1},
9525         {0x61, 0x8, 0x8, 0, 0},
9526         {0x62, 0x3, 0x3, 0, 0},
9527         {0x63, 0, 0, 0, 0},
9528         {0x64, 0, 0, 0, 0},
9529         {0x65, 0, 0, 0, 0},
9530         {0x66, 0, 0, 0, 0},
9531         {0x67, 0, 0, 0, 0},
9532         {0x68, 0x40, 0x40, 0, 0},
9533         {0x69, 0, 0, 0, 0},
9534         {0x6A, 0, 0, 0, 0},
9535         {0x6B, 0, 0, 0, 0},
9536         {0x6C, 0, 0, 0, 0},
9537         {0x6D, 0x1, 0x1, 0, 0},
9538         {0x6E, 0, 0, 0, 0},
9539         {0x6F, 0, 0, 0, 0},
9540         {0x70, 0x60, 0x60, 0, 0},
9541         {0x71, 0x66, 0x66, 0, 0},
9542         {0x72, 0xc, 0xc, 0, 0},
9543         {0x73, 0x66, 0x66, 0, 0},
9544         {0x74, 0x8f, 0x8f, 1, 1},
9545         {0x75, 0, 0, 0, 0},
9546         {0x76, 0xcc, 0xcc, 0, 0},
9547         {0x77, 0x1, 0x1, 0, 0},
9548         {0x78, 0x66, 0x66, 0, 0},
9549         {0x79, 0x66, 0x66, 0, 0},
9550         {0x7A, 0, 0, 0, 0},
9551         {0x7B, 0, 0, 0, 0},
9552         {0x7C, 0, 0, 0, 0},
9553         {0x7D, 0, 0, 0, 0},
9554         {0x7E, 0, 0, 0, 0},
9555         {0x7F, 0, 0, 0, 0},
9556         {0x80, 0, 0, 0, 0},
9557         {0x81, 0, 0, 0, 0},
9558         {0x82, 0, 0, 0, 0},
9559         {0x83, 0, 0, 0, 0},
9560         {0x84, 0, 0, 0, 0},
9561         {0x85, 0xff, 0xff, 0, 0},
9562         {0x86, 0, 0, 0, 0},
9563         {0x87, 0, 0, 0, 0},
9564         {0x88, 0, 0, 0, 0},
9565         {0x89, 0, 0, 0, 0},
9566         {0x8A, 0, 0, 0, 0},
9567         {0x8B, 0, 0, 0, 0},
9568         {0x8C, 0, 0, 0, 0},
9569         {0x8D, 0, 0, 0, 0},
9570         {0x8E, 0, 0, 0, 0},
9571         {0x8F, 0, 0, 0, 0},
9572         {0x90, 0, 0, 0, 0},
9573         {0x91, 0, 0, 0, 0},
9574         {0x92, 0, 0, 0, 0},
9575         {0x93, 0, 0, 0, 0},
9576         {0x94, 0, 0, 0, 0},
9577         {0x95, 0, 0, 0, 0},
9578         {0x96, 0, 0, 0, 0},
9579         {0x97, 0, 0, 0, 0},
9580         {0x98, 0, 0, 0, 0},
9581         {0x99, 0, 0, 0, 0},
9582         {0x9A, 0, 0, 0, 0},
9583         {0x9B, 0, 0, 0, 0},
9584         {0x9C, 0, 0, 0, 0},
9585         {0x9D, 0, 0, 0, 0},
9586         {0x9E, 0, 0, 0, 0},
9587         {0x9F, 0x6, 0x6, 0, 0},
9588         {0xA0, 0x66, 0x66, 0, 0},
9589         {0xA1, 0x66, 0x66, 0, 0},
9590         {0xA2, 0x66, 0x66, 0, 0},
9591         {0xA3, 0x66, 0x66, 0, 0},
9592         {0xA4, 0x66, 0x66, 0, 0},
9593         {0xA5, 0x66, 0x66, 0, 0},
9594         {0xA6, 0x66, 0x66, 0, 0},
9595         {0xA7, 0x66, 0x66, 0, 0},
9596         {0xA8, 0x66, 0x66, 0, 0},
9597         {0xA9, 0x66, 0x66, 0, 0},
9598         {0xAA, 0x66, 0x66, 0, 0},
9599         {0xAB, 0x66, 0x66, 0, 0},
9600         {0xAC, 0x66, 0x66, 0, 0},
9601         {0xAD, 0x66, 0x66, 0, 0},
9602         {0xAE, 0x66, 0x66, 0, 0},
9603         {0xAF, 0x66, 0x66, 0, 0},
9604         {0xB0, 0x66, 0x66, 0, 0},
9605         {0xB1, 0x66, 0x66, 0, 0},
9606         {0xB2, 0x66, 0x66, 0, 0},
9607         {0xB3, 0xa, 0xa, 0, 0},
9608         {0xB4, 0, 0, 0, 0},
9609         {0xB5, 0, 0, 0, 0},
9610         {0xB6, 0, 0, 0, 0},
9611         {0xFFFF, 0, 0, 0, 0}
9612 };
9613
9614 radio_regs_t regs_TX_2056_rev6[] = {
9615         {0x02, 0, 0, 0, 0},
9616         {0x03, 0, 0, 0, 0},
9617         {0x04, 0, 0, 0, 0},
9618         {0x05, 0, 0, 0, 0},
9619         {0x06, 0, 0, 0, 0},
9620         {0x07, 0, 0, 0, 0},
9621         {0x08, 0, 0, 0, 0},
9622         {0x09, 0, 0, 0, 0},
9623         {0x0A, 0, 0, 0, 0},
9624         {0x0B, 0, 0, 0, 0},
9625         {0x0C, 0, 0, 0, 0},
9626         {0x0D, 0, 0, 0, 0},
9627         {0x0E, 0, 0, 0, 0},
9628         {0x0F, 0, 0, 0, 0},
9629         {0x10, 0, 0, 0, 0},
9630         {0x11, 0, 0, 0, 0},
9631         {0x12, 0, 0, 0, 0},
9632         {0x13, 0, 0, 0, 0},
9633         {0x14, 0, 0, 0, 0},
9634         {0x15, 0, 0, 0, 0},
9635         {0x16, 0, 0, 0, 0},
9636         {0x17, 0, 0, 0, 0},
9637         {0x18, 0, 0, 0, 0},
9638         {0x19, 0, 0, 0, 0},
9639         {0x1A, 0, 0, 0, 0},
9640         {0x1B, 0, 0, 0, 0},
9641         {0x1C, 0, 0, 0, 0},
9642         {0x1D, 0, 0, 0, 0},
9643         {0x1E, 0, 0, 0, 0},
9644         {0x1F, 0, 0, 0, 0},
9645         {0x20, 0, 0, 0, 0},
9646         {0x21, 0x88, 0x88, 0, 0},
9647         {0x22, 0x88, 0x88, 0, 0},
9648         {0x23, 0x88, 0x88, 0, 0},
9649         {0x24, 0x88, 0x88, 0, 0},
9650         {0x25, 0xc, 0xc, 0, 0},
9651         {0x26, 0, 0, 0, 0},
9652         {0x27, 0x3, 0x3, 0, 0},
9653         {0x28, 0, 0, 0, 0},
9654         {0x29, 0x3, 0x3, 0, 0},
9655         {0x2A, 0x37, 0x37, 0, 0},
9656         {0x2B, 0x3, 0x3, 0, 0},
9657         {0x2C, 0, 0, 0, 0},
9658         {0x2D, 0, 0, 0, 0},
9659         {0x2E, 0x1, 0x1, 0, 0},
9660         {0x2F, 0x1, 0x1, 0, 0},
9661         {0x30, 0, 0, 0, 0},
9662         {0x31, 0, 0, 0, 0},
9663         {0x32, 0, 0, 0, 0},
9664         {0x33, 0x11, 0x11, 0, 0},
9665         {0x34, 0xee, 0xee, 1, 1},
9666         {0x35, 0, 0, 0, 0},
9667         {0x36, 0, 0, 0, 0},
9668         {0x37, 0x3, 0x3, 0, 0},
9669         {0x38, 0x50, 0x50, 1, 1},
9670         {0x39, 0, 0, 0, 0},
9671         {0x3A, 0x50, 0x50, 1, 1},
9672         {0x3B, 0, 0, 0, 0},
9673         {0x3C, 0x6e, 0x6e, 0, 0},
9674         {0x3D, 0xf0, 0xf0, 1, 1},
9675         {0x3E, 0, 0, 0, 0},
9676         {0x3F, 0, 0, 0, 0},
9677         {0x40, 0, 0, 0, 0},
9678         {0x41, 0x3, 0x3, 0, 0},
9679         {0x42, 0x3, 0x3, 0, 0},
9680         {0x43, 0, 0, 0, 0},
9681         {0x44, 0x1e, 0x1e, 0, 0},
9682         {0x45, 0, 0, 0, 0},
9683         {0x46, 0x6e, 0x6e, 0, 0},
9684         {0x47, 0xf0, 0xf0, 1, 1},
9685         {0x48, 0, 0, 0, 0},
9686         {0x49, 0x2, 0x2, 0, 0},
9687         {0x4A, 0xff, 0xff, 1, 1},
9688         {0x4B, 0xc, 0xc, 0, 0},
9689         {0x4C, 0, 0, 0, 0},
9690         {0x4D, 0x38, 0x38, 0, 0},
9691         {0x4E, 0x70, 0x70, 1, 1},
9692         {0x4F, 0x2, 0x2, 0, 0},
9693         {0x50, 0x88, 0x88, 0, 0},
9694         {0x51, 0xc, 0xc, 0, 0},
9695         {0x52, 0, 0, 0, 0},
9696         {0x53, 0x8, 0x8, 0, 0},
9697         {0x54, 0x70, 0x70, 1, 1},
9698         {0x55, 0x2, 0x2, 0, 0},
9699         {0x56, 0xff, 0xff, 1, 1},
9700         {0x57, 0, 0, 0, 0},
9701         {0x58, 0x83, 0x83, 0, 0},
9702         {0x59, 0x77, 0x77, 1, 1},
9703         {0x5A, 0, 0, 0, 0},
9704         {0x5B, 0x2, 0x2, 0, 0},
9705         {0x5C, 0x88, 0x88, 0, 0},
9706         {0x5D, 0, 0, 0, 0},
9707         {0x5E, 0x8, 0x8, 0, 0},
9708         {0x5F, 0x77, 0x77, 1, 1},
9709         {0x60, 0x1, 0x1, 0, 0},
9710         {0x61, 0, 0, 0, 0},
9711         {0x62, 0x7, 0x7, 0, 0},
9712         {0x63, 0, 0, 0, 0},
9713         {0x64, 0x7, 0x7, 0, 0},
9714         {0x65, 0, 0, 0, 0},
9715         {0x66, 0, 0, 0, 0},
9716         {0x67, 0, 0, 1, 1},
9717         {0x68, 0, 0, 0, 0},
9718         {0x69, 0xa, 0xa, 0, 0},
9719         {0x6A, 0, 0, 0, 0},
9720         {0x6B, 0, 0, 0, 0},
9721         {0x6C, 0, 0, 0, 0},
9722         {0x6D, 0, 0, 0, 0},
9723         {0x6E, 0, 0, 0, 0},
9724         {0x6F, 0, 0, 0, 0},
9725         {0x70, 0, 0, 0, 0},
9726         {0x71, 0x2, 0x2, 0, 0},
9727         {0x72, 0, 0, 0, 0},
9728         {0x73, 0, 0, 0, 0},
9729         {0x74, 0xe, 0xe, 0, 0},
9730         {0x75, 0xe, 0xe, 0, 0},
9731         {0x76, 0xe, 0xe, 0, 0},
9732         {0x77, 0x13, 0x13, 0, 0},
9733         {0x78, 0x13, 0x13, 0, 0},
9734         {0x79, 0x1b, 0x1b, 0, 0},
9735         {0x7A, 0x1b, 0x1b, 0, 0},
9736         {0x7B, 0x55, 0x55, 0, 0},
9737         {0x7C, 0x5b, 0x5b, 0, 0},
9738         {0x7D, 0x30, 0x30, 1, 1},
9739         {0x7E, 0, 0, 0, 0},
9740         {0x7F, 0, 0, 0, 0},
9741         {0x80, 0, 0, 0, 0},
9742         {0x81, 0, 0, 0, 0},
9743         {0x82, 0, 0, 0, 0},
9744         {0x83, 0, 0, 0, 0},
9745         {0x84, 0, 0, 0, 0},
9746         {0x85, 0, 0, 0, 0},
9747         {0x86, 0, 0, 0, 0},
9748         {0x87, 0, 0, 0, 0},
9749         {0x88, 0, 0, 0, 0},
9750         {0x89, 0, 0, 0, 0},
9751         {0x8A, 0, 0, 0, 0},
9752         {0x8B, 0, 0, 0, 0},
9753         {0x8C, 0, 0, 0, 0},
9754         {0x8D, 0, 0, 0, 0},
9755         {0x8E, 0, 0, 0, 0},
9756         {0x8F, 0, 0, 0, 0},
9757         {0x90, 0, 0, 0, 0},
9758         {0x91, 0, 0, 0, 0},
9759         {0x92, 0, 0, 0, 0},
9760         {0x93, 0x70, 0x70, 0, 0},
9761         {0x94, 0x70, 0x70, 0, 0},
9762         {0x95, 0x70, 0x70, 0, 0},
9763         {0x96, 0x70, 0x70, 0, 0},
9764         {0x97, 0x70, 0x70, 0, 0},
9765         {0x98, 0x70, 0x70, 0, 0},
9766         {0x99, 0x70, 0x70, 0, 0},
9767         {0x9A, 0x70, 0x70, 0, 0},
9768         {0xFFFF, 0, 0, 0, 0}
9769 };
9770
9771 radio_regs_t regs_RX_2056_rev6[] = {
9772         {0x02, 0, 0, 0, 0},
9773         {0x03, 0, 0, 0, 0},
9774         {0x04, 0, 0, 0, 0},
9775         {0x05, 0, 0, 0, 0},
9776         {0x06, 0, 0, 0, 0},
9777         {0x07, 0, 0, 0, 0},
9778         {0x08, 0, 0, 0, 0},
9779         {0x09, 0, 0, 0, 0},
9780         {0x0A, 0, 0, 0, 0},
9781         {0x0B, 0, 0, 0, 0},
9782         {0x0C, 0, 0, 0, 0},
9783         {0x0D, 0, 0, 0, 0},
9784         {0x0E, 0, 0, 0, 0},
9785         {0x0F, 0, 0, 0, 0},
9786         {0x10, 0, 0, 0, 0},
9787         {0x11, 0, 0, 0, 0},
9788         {0x12, 0, 0, 0, 0},
9789         {0x13, 0, 0, 0, 0},
9790         {0x14, 0, 0, 0, 0},
9791         {0x15, 0, 0, 0, 0},
9792         {0x16, 0, 0, 0, 0},
9793         {0x17, 0, 0, 0, 0},
9794         {0x18, 0, 0, 0, 0},
9795         {0x19, 0, 0, 0, 0},
9796         {0x1A, 0, 0, 0, 0},
9797         {0x1B, 0, 0, 0, 0},
9798         {0x1C, 0, 0, 0, 0},
9799         {0x1D, 0, 0, 0, 0},
9800         {0x1E, 0, 0, 0, 0},
9801         {0x1F, 0, 0, 0, 0},
9802         {0x20, 0x3, 0x3, 0, 0},
9803         {0x21, 0, 0, 0, 0},
9804         {0x22, 0, 0, 0, 0},
9805         {0x23, 0x90, 0x90, 0, 0},
9806         {0x24, 0x55, 0x55, 0, 0},
9807         {0x25, 0x15, 0x15, 0, 0},
9808         {0x26, 0x5, 0x5, 0, 0},
9809         {0x27, 0x15, 0x15, 0, 0},
9810         {0x28, 0x5, 0x5, 0, 0},
9811         {0x29, 0x20, 0x20, 0, 0},
9812         {0x2A, 0x11, 0x11, 0, 0},
9813         {0x2B, 0x90, 0x90, 0, 0},
9814         {0x2C, 0, 0, 0, 0},
9815         {0x2D, 0x88, 0x88, 0, 0},
9816         {0x2E, 0x32, 0x32, 0, 0},
9817         {0x2F, 0x77, 0x77, 0, 0},
9818         {0x30, 0x17, 0x17, 1, 1},
9819         {0x31, 0xff, 0xff, 1, 1},
9820         {0x32, 0x20, 0x20, 0, 0},
9821         {0x33, 0, 0, 0, 0},
9822         {0x34, 0x88, 0x88, 0, 0},
9823         {0x35, 0x32, 0x32, 0, 0},
9824         {0x36, 0x77, 0x77, 0, 0},
9825         {0x37, 0x17, 0x17, 1, 1},
9826         {0x38, 0xf0, 0xf0, 1, 1},
9827         {0x39, 0x20, 0x20, 0, 0},
9828         {0x3A, 0x8, 0x8, 0, 0},
9829         {0x3B, 0x55, 0x55, 1, 1},
9830         {0x3C, 0, 0, 0, 0},
9831         {0x3D, 0x88, 0x88, 1, 1},
9832         {0x3E, 0, 0, 0, 0},
9833         {0x3F, 0x44, 0x44, 0, 0},
9834         {0x40, 0x7, 0x7, 1, 1},
9835         {0x41, 0x6, 0x6, 0, 0},
9836         {0x42, 0x4, 0x4, 0, 0},
9837         {0x43, 0, 0, 0, 0},
9838         {0x44, 0x8, 0x8, 0, 0},
9839         {0x45, 0x55, 0x55, 1, 1},
9840         {0x46, 0, 0, 0, 0},
9841         {0x47, 0x11, 0x11, 0, 0},
9842         {0x48, 0, 0, 0, 0},
9843         {0x49, 0x44, 0x44, 0, 0},
9844         {0x4A, 0x7, 0x7, 0, 0},
9845         {0x4B, 0x6, 0x6, 0, 0},
9846         {0x4C, 0x4, 0x4, 0, 0},
9847         {0x4D, 0, 0, 0, 0},
9848         {0x4E, 0, 0, 0, 0},
9849         {0x4F, 0x26, 0x26, 1, 1},
9850         {0x50, 0x26, 0x26, 1, 1},
9851         {0x51, 0xf, 0xf, 1, 1},
9852         {0x52, 0xf, 0xf, 1, 1},
9853         {0x53, 0x44, 0x44, 0, 0},
9854         {0x54, 0, 0, 0, 0},
9855         {0x55, 0, 0, 0, 0},
9856         {0x56, 0x8, 0x8, 0, 0},
9857         {0x57, 0x8, 0x8, 0, 0},
9858         {0x58, 0x7, 0x7, 0, 0},
9859         {0x59, 0x22, 0x22, 0, 0},
9860         {0x5A, 0x22, 0x22, 0, 0},
9861         {0x5B, 0x2, 0x2, 0, 0},
9862         {0x5C, 0x4, 0x4, 1, 1},
9863         {0x5D, 0x7, 0x7, 0, 0},
9864         {0x5E, 0x55, 0x55, 0, 0},
9865         {0x5F, 0x23, 0x23, 0, 0},
9866         {0x60, 0x41, 0x41, 0, 0},
9867         {0x61, 0x1, 0x1, 0, 0},
9868         {0x62, 0xa, 0xa, 0, 0},
9869         {0x63, 0, 0, 0, 0},
9870         {0x64, 0, 0, 0, 0},
9871         {0x65, 0, 0, 0, 0},
9872         {0x66, 0, 0, 0, 0},
9873         {0x67, 0, 0, 0, 0},
9874         {0x68, 0, 0, 0, 0},
9875         {0x69, 0, 0, 0, 0},
9876         {0x6A, 0, 0, 0, 0},
9877         {0x6B, 0xc, 0xc, 0, 0},
9878         {0x6C, 0, 0, 0, 0},
9879         {0x6D, 0, 0, 0, 0},
9880         {0x6E, 0, 0, 0, 0},
9881         {0x6F, 0, 0, 0, 0},
9882         {0x70, 0, 0, 0, 0},
9883         {0x71, 0, 0, 0, 0},
9884         {0x72, 0x22, 0x22, 0, 0},
9885         {0x73, 0x22, 0x22, 0, 0},
9886         {0x74, 0, 0, 1, 1},
9887         {0x75, 0xa, 0xa, 0, 0},
9888         {0x76, 0x1, 0x1, 0, 0},
9889         {0x77, 0x22, 0x22, 0, 0},
9890         {0x78, 0x30, 0x30, 0, 0},
9891         {0x79, 0, 0, 0, 0},
9892         {0x7A, 0, 0, 0, 0},
9893         {0x7B, 0, 0, 0, 0},
9894         {0x7C, 0, 0, 0, 0},
9895         {0x7D, 0x5, 0x5, 1, 1},
9896         {0x7E, 0, 0, 0, 0},
9897         {0x7F, 0, 0, 0, 0},
9898         {0x80, 0, 0, 0, 0},
9899         {0x81, 0, 0, 0, 0},
9900         {0x82, 0, 0, 0, 0},
9901         {0x83, 0, 0, 0, 0},
9902         {0x84, 0, 0, 0, 0},
9903         {0x85, 0, 0, 0, 0},
9904         {0x86, 0, 0, 0, 0},
9905         {0x87, 0, 0, 0, 0},
9906         {0x88, 0, 0, 0, 0},
9907         {0x89, 0, 0, 0, 0},
9908         {0x8A, 0, 0, 0, 0},
9909         {0x8B, 0, 0, 0, 0},
9910         {0x8C, 0, 0, 0, 0},
9911         {0x8D, 0, 0, 0, 0},
9912         {0x8E, 0, 0, 0, 0},
9913         {0x8F, 0, 0, 0, 0},
9914         {0x90, 0, 0, 0, 0},
9915         {0x91, 0, 0, 0, 0},
9916         {0x92, 0, 0, 0, 0},
9917         {0x93, 0, 0, 0, 0},
9918         {0x94, 0, 0, 0, 0},
9919         {0xFFFF, 0, 0, 0, 0}
9920 };
9921
9922 radio_regs_t regs_SYN_2056_rev7[] = {
9923         {0x02, 0, 0, 0, 0},
9924         {0x03, 0, 0, 0, 0},
9925         {0x04, 0, 0, 0, 0},
9926         {0x05, 0, 0, 0, 0},
9927         {0x06, 0, 0, 0, 0},
9928         {0x07, 0, 0, 0, 0},
9929         {0x08, 0, 0, 0, 0},
9930         {0x09, 0x1, 0x1, 0, 0},
9931         {0x0A, 0, 0, 0, 0},
9932         {0x0B, 0, 0, 0, 0},
9933         {0x0C, 0, 0, 0, 0},
9934         {0x0D, 0, 0, 0, 0},
9935         {0x0E, 0, 0, 0, 0},
9936         {0x0F, 0, 0, 0, 0},
9937         {0x10, 0, 0, 0, 0},
9938         {0x11, 0, 0, 0, 0},
9939         {0x12, 0, 0, 0, 0},
9940         {0x13, 0, 0, 0, 0},
9941         {0x14, 0, 0, 0, 0},
9942         {0x15, 0, 0, 0, 0},
9943         {0x16, 0, 0, 0, 0},
9944         {0x17, 0, 0, 0, 0},
9945         {0x18, 0, 0, 0, 0},
9946         {0x19, 0, 0, 0, 0},
9947         {0x1A, 0, 0, 0, 0},
9948         {0x1B, 0, 0, 0, 0},
9949         {0x1C, 0, 0, 0, 0},
9950         {0x1D, 0, 0, 0, 0},
9951         {0x1E, 0, 0, 0, 0},
9952         {0x1F, 0, 0, 0, 0},
9953         {0x20, 0, 0, 0, 0},
9954         {0x21, 0, 0, 0, 0},
9955         {0x22, 0x60, 0x60, 0, 0},
9956         {0x23, 0x6, 0x6, 0, 0},
9957         {0x24, 0xc, 0xc, 0, 0},
9958         {0x25, 0, 0, 0, 0},
9959         {0x26, 0, 0, 0, 0},
9960         {0x27, 0, 0, 0, 0},
9961         {0x28, 0x1, 0x1, 0, 0},
9962         {0x29, 0, 0, 0, 0},
9963         {0x2A, 0, 0, 0, 0},
9964         {0x2B, 0, 0, 0, 0},
9965         {0x2C, 0, 0, 0, 0},
9966         {0x2D, 0, 0, 0, 0},
9967         {0x2E, 0, 0, 0, 0},
9968         {0x2F, 0x1f, 0x1f, 0, 0},
9969         {0x30, 0x15, 0x15, 0, 0},
9970         {0x31, 0xf, 0xf, 0, 0},
9971         {0x32, 0, 0, 0, 0},
9972         {0x33, 0, 0, 0, 0},
9973         {0x34, 0, 0, 0, 0},
9974         {0x35, 0, 0, 0, 0},
9975         {0x36, 0, 0, 0, 0},
9976         {0x37, 0, 0, 0, 0},
9977         {0x38, 0, 0, 0, 0},
9978         {0x39, 0, 0, 0, 0},
9979         {0x3A, 0, 0, 0, 0},
9980         {0x3B, 0, 0, 0, 0},
9981         {0x3C, 0x13, 0x13, 0, 0},
9982         {0x3D, 0xf, 0xf, 0, 0},
9983         {0x3E, 0x18, 0x18, 0, 0},
9984         {0x3F, 0, 0, 0, 0},
9985         {0x40, 0, 0, 0, 0},
9986         {0x41, 0x20, 0x20, 0, 0},
9987         {0x42, 0x20, 0x20, 0, 0},
9988         {0x43, 0, 0, 0, 0},
9989         {0x44, 0x77, 0x77, 0, 0},
9990         {0x45, 0x7, 0x7, 0, 0},
9991         {0x46, 0x1, 0x1, 0, 0},
9992         {0x47, 0x4, 0x4, 0, 0},
9993         {0x48, 0xf, 0xf, 0, 0},
9994         {0x49, 0x30, 0x30, 0, 0},
9995         {0x4A, 0x32, 0x32, 0, 0},
9996         {0x4B, 0xd, 0xd, 0, 0},
9997         {0x4C, 0xd, 0xd, 0, 0},
9998         {0x4D, 0x4, 0x4, 0, 0},
9999         {0x4E, 0x6, 0x6, 0, 0},
10000         {0x4F, 0x1, 0x1, 0, 0},
10001         {0x50, 0x1c, 0x1c, 0, 0},
10002         {0x51, 0x2, 0x2, 0, 0},
10003         {0x52, 0x2, 0x2, 0, 0},
10004         {0x53, 0xf7, 0xf7, 1, 1},
10005         {0x54, 0xb4, 0xb4, 0, 0},
10006         {0x55, 0xd2, 0xd2, 0, 0},
10007         {0x56, 0, 0, 0, 0},
10008         {0x57, 0, 0, 0, 0},
10009         {0x58, 0x4, 0x4, 0, 0},
10010         {0x59, 0x96, 0x96, 0, 0},
10011         {0x5A, 0x3e, 0x3e, 0, 0},
10012         {0x5B, 0x3e, 0x3e, 0, 0},
10013         {0x5C, 0x13, 0x13, 0, 0},
10014         {0x5D, 0x2, 0x2, 0, 0},
10015         {0x5E, 0, 0, 0, 0},
10016         {0x5F, 0x7, 0x7, 0, 0},
10017         {0x60, 0x7, 0x7, 1, 1},
10018         {0x61, 0x8, 0x8, 0, 0},
10019         {0x62, 0x3, 0x3, 0, 0},
10020         {0x63, 0, 0, 0, 0},
10021         {0x64, 0, 0, 0, 0},
10022         {0x65, 0, 0, 0, 0},
10023         {0x66, 0, 0, 0, 0},
10024         {0x67, 0, 0, 0, 0},
10025         {0x68, 0x40, 0x40, 0, 0},
10026         {0x69, 0, 0, 0, 0},
10027         {0x6A, 0, 0, 0, 0},
10028         {0x6B, 0, 0, 0, 0},
10029         {0x6C, 0, 0, 0, 0},
10030         {0x6D, 0x1, 0x1, 0, 0},
10031         {0x6E, 0, 0, 0, 0},
10032         {0x6F, 0, 0, 0, 0},
10033         {0x70, 0x60, 0x60, 0, 0},
10034         {0x71, 0x66, 0x66, 0, 0},
10035         {0x72, 0xc, 0xc, 0, 0},
10036         {0x73, 0x66, 0x66, 0, 0},
10037         {0x74, 0x8f, 0x8f, 1, 1},
10038         {0x75, 0, 0, 0, 0},
10039         {0x76, 0xcc, 0xcc, 0, 0},
10040         {0x77, 0x1, 0x1, 0, 0},
10041         {0x78, 0x66, 0x66, 0, 0},
10042         {0x79, 0x66, 0x66, 0, 0},
10043         {0x7A, 0, 0, 0, 0},
10044         {0x7B, 0, 0, 0, 0},
10045         {0x7C, 0, 0, 0, 0},
10046         {0x7D, 0, 0, 0, 0},
10047         {0x7E, 0, 0, 0, 0},
10048         {0x7F, 0, 0, 0, 0},
10049         {0x80, 0, 0, 0, 0},
10050         {0x81, 0, 0, 0, 0},
10051         {0x82, 0, 0, 0, 0},
10052         {0x83, 0, 0, 0, 0},
10053         {0x84, 0, 0, 0, 0},
10054         {0x85, 0xff, 0xff, 0, 0},
10055         {0x86, 0, 0, 0, 0},
10056         {0x87, 0, 0, 0, 0},
10057         {0x88, 0, 0, 0, 0},
10058         {0x89, 0, 0, 0, 0},
10059         {0x8A, 0, 0, 0, 0},
10060         {0x8B, 0, 0, 0, 0},
10061         {0x8C, 0, 0, 0, 0},
10062         {0x8D, 0, 0, 0, 0},
10063         {0x8E, 0, 0, 0, 0},
10064         {0x8F, 0, 0, 0, 0},
10065         {0x90, 0, 0, 0, 0},
10066         {0x91, 0, 0, 0, 0},
10067         {0x92, 0, 0, 0, 0},
10068         {0x93, 0, 0, 0, 0},
10069         {0x94, 0, 0, 0, 0},
10070         {0x95, 0, 0, 0, 0},
10071         {0x96, 0, 0, 0, 0},
10072         {0x97, 0, 0, 0, 0},
10073         {0x98, 0, 0, 0, 0},
10074         {0x99, 0, 0, 0, 0},
10075         {0x9A, 0, 0, 0, 0},
10076         {0x9B, 0, 0, 0, 0},
10077         {0x9C, 0, 0, 0, 0},
10078         {0x9D, 0, 0, 0, 0},
10079         {0x9E, 0, 0, 0, 0},
10080         {0x9F, 0x6, 0x6, 0, 0},
10081         {0xA0, 0x66, 0x66, 0, 0},
10082         {0xA1, 0x66, 0x66, 0, 0},
10083         {0xA2, 0x66, 0x66, 0, 0},
10084         {0xA3, 0x66, 0x66, 0, 0},
10085         {0xA4, 0x66, 0x66, 0, 0},
10086         {0xA5, 0x66, 0x66, 0, 0},
10087         {0xA6, 0x66, 0x66, 0, 0},
10088         {0xA7, 0x66, 0x66, 0, 0},
10089         {0xA8, 0x66, 0x66, 0, 0},
10090         {0xA9, 0x66, 0x66, 0, 0},
10091         {0xAA, 0x66, 0x66, 0, 0},
10092         {0xAB, 0x66, 0x66, 0, 0},
10093         {0xAC, 0x66, 0x66, 0, 0},
10094         {0xAD, 0x66, 0x66, 0, 0},
10095         {0xAE, 0x66, 0x66, 0, 0},
10096         {0xAF, 0x66, 0x66, 0, 0},
10097         {0xB0, 0x66, 0x66, 0, 0},
10098         {0xB1, 0x66, 0x66, 0, 0},
10099         {0xB2, 0x66, 0x66, 0, 0},
10100         {0xB3, 0xa, 0xa, 0, 0},
10101         {0xB4, 0, 0, 0, 0},
10102         {0xB5, 0, 0, 0, 0},
10103         {0xB6, 0, 0, 0, 0},
10104         {0xFFFF, 0, 0, 0, 0},
10105 };
10106
10107 radio_regs_t regs_TX_2056_rev7[] = {
10108         {0x02, 0, 0, 0, 0},
10109         {0x03, 0, 0, 0, 0},
10110         {0x04, 0, 0, 0, 0},
10111         {0x05, 0, 0, 0, 0},
10112         {0x06, 0, 0, 0, 0},
10113         {0x07, 0, 0, 0, 0},
10114         {0x08, 0, 0, 0, 0},
10115         {0x09, 0, 0, 0, 0},
10116         {0x0A, 0, 0, 0, 0},
10117         {0x0B, 0, 0, 0, 0},
10118         {0x0C, 0, 0, 0, 0},
10119         {0x0D, 0, 0, 0, 0},
10120         {0x0E, 0, 0, 0, 0},
10121         {0x0F, 0, 0, 0, 0},
10122         {0x10, 0, 0, 0, 0},
10123         {0x11, 0, 0, 0, 0},
10124         {0x12, 0, 0, 0, 0},
10125         {0x13, 0, 0, 0, 0},
10126         {0x14, 0, 0, 0, 0},
10127         {0x15, 0, 0, 0, 0},
10128         {0x16, 0, 0, 0, 0},
10129         {0x17, 0, 0, 0, 0},
10130         {0x18, 0, 0, 0, 0},
10131         {0x19, 0, 0, 0, 0},
10132         {0x1A, 0, 0, 0, 0},
10133         {0x1B, 0, 0, 0, 0},
10134         {0x1C, 0, 0, 0, 0},
10135         {0x1D, 0, 0, 0, 0},
10136         {0x1E, 0, 0, 0, 0},
10137         {0x1F, 0, 0, 0, 0},
10138         {0x20, 0, 0, 0, 0},
10139         {0x21, 0x88, 0x88, 0, 0},
10140         {0x22, 0x88, 0x88, 0, 0},
10141         {0x23, 0x88, 0x88, 0, 0},
10142         {0x24, 0x88, 0x88, 0, 0},
10143         {0x25, 0xc, 0xc, 0, 0},
10144         {0x26, 0, 0, 0, 0},
10145         {0x27, 0x3, 0x3, 0, 0},
10146         {0x28, 0, 0, 0, 0},
10147         {0x29, 0x3, 0x3, 0, 0},
10148         {0x2A, 0x37, 0x37, 0, 0},
10149         {0x2B, 0x3, 0x3, 0, 0},
10150         {0x2C, 0, 0, 0, 0},
10151         {0x2D, 0, 0, 0, 0},
10152         {0x2E, 0x1, 0x1, 0, 0},
10153         {0x2F, 0x1, 0x1, 0, 0},
10154         {0x30, 0, 0, 0, 0},
10155         {0x31, 0, 0, 0, 0},
10156         {0x32, 0, 0, 0, 0},
10157         {0x33, 0x11, 0x11, 0, 0},
10158         {0x34, 0xee, 0xee, 1, 1},
10159         {0x35, 0, 0, 0, 0},
10160         {0x36, 0, 0, 0, 0},
10161         {0x37, 0x3, 0x3, 0, 0},
10162         {0x38, 0x50, 0x50, 1, 1},
10163         {0x39, 0, 0, 0, 0},
10164         {0x3A, 0x50, 0x50, 1, 1},
10165         {0x3B, 0, 0, 0, 0},
10166         {0x3C, 0x6e, 0x6e, 0, 0},
10167         {0x3D, 0xf0, 0xf0, 1, 1},
10168         {0x3E, 0, 0, 0, 0},
10169         {0x3F, 0, 0, 0, 0},
10170         {0x40, 0, 0, 0, 0},
10171         {0x41, 0x3, 0x3, 0, 0},
10172         {0x42, 0x3, 0x3, 0, 0},
10173         {0x43, 0, 0, 0, 0},
10174         {0x44, 0x1e, 0x1e, 0, 0},
10175         {0x45, 0, 0, 0, 0},
10176         {0x46, 0x6e, 0x6e, 0, 0},
10177         {0x47, 0xf0, 0xf0, 1, 1},
10178         {0x48, 0, 0, 0, 0},
10179         {0x49, 0x2, 0x2, 0, 0},
10180         {0x4A, 0xff, 0xff, 1, 1},
10181         {0x4B, 0xc, 0xc, 0, 0},
10182         {0x4C, 0, 0, 0, 0},
10183         {0x4D, 0x38, 0x38, 0, 0},
10184         {0x4E, 0x70, 0x70, 1, 1},
10185         {0x4F, 0x2, 0x2, 0, 0},
10186         {0x50, 0x88, 0x88, 0, 0},
10187         {0x51, 0xc, 0xc, 0, 0},
10188         {0x52, 0, 0, 0, 0},
10189         {0x53, 0x8, 0x8, 0, 0},
10190         {0x54, 0x70, 0x70, 1, 1},
10191         {0x55, 0x2, 0x2, 0, 0},
10192         {0x56, 0xff, 0xff, 1, 1},
10193         {0x57, 0, 0, 0, 0},
10194         {0x58, 0x83, 0x83, 0, 0},
10195         {0x59, 0x77, 0x77, 1, 1},
10196         {0x5A, 0, 0, 0, 0},
10197         {0x5B, 0x2, 0x2, 0, 0},
10198         {0x5C, 0x88, 0x88, 0, 0},
10199         {0x5D, 0, 0, 0, 0},
10200         {0x5E, 0x8, 0x8, 0, 0},
10201         {0x5F, 0x77, 0x77, 1, 1},
10202         {0x60, 0x1, 0x1, 0, 0},
10203         {0x61, 0, 0, 0, 0},
10204         {0x62, 0x7, 0x7, 0, 0},
10205         {0x63, 0, 0, 0, 0},
10206         {0x64, 0x7, 0x7, 0, 0},
10207         {0x65, 0, 0, 0, 0},
10208         {0x66, 0, 0, 0, 0},
10209         {0x67, 0, 0, 1, 1},
10210         {0x68, 0, 0, 0, 0},
10211         {0x69, 0xa, 0xa, 0, 0},
10212         {0x6A, 0, 0, 0, 0},
10213         {0x6B, 0, 0, 0, 0},
10214         {0x6C, 0, 0, 0, 0},
10215         {0x6D, 0, 0, 0, 0},
10216         {0x6E, 0, 0, 0, 0},
10217         {0x6F, 0, 0, 0, 0},
10218         {0x70, 0, 0, 0, 0},
10219         {0x71, 0x2, 0x2, 0, 0},
10220         {0x72, 0, 0, 0, 0},
10221         {0x73, 0, 0, 0, 0},
10222         {0x74, 0xe, 0xe, 0, 0},
10223         {0x75, 0xe, 0xe, 0, 0},
10224         {0x76, 0xe, 0xe, 0, 0},
10225         {0x77, 0x13, 0x13, 0, 0},
10226         {0x78, 0x13, 0x13, 0, 0},
10227         {0x79, 0x1b, 0x1b, 0, 0},
10228         {0x7A, 0x1b, 0x1b, 0, 0},
10229         {0x7B, 0x55, 0x55, 0, 0},
10230         {0x7C, 0x5b, 0x5b, 0, 0},
10231         {0x7D, 0x30, 0x30, 1, 1},
10232         {0x7E, 0, 0, 0, 0},
10233         {0x7F, 0, 0, 0, 0},
10234         {0x80, 0, 0, 0, 0},
10235         {0x81, 0, 0, 0, 0},
10236         {0x82, 0, 0, 0, 0},
10237         {0x83, 0, 0, 0, 0},
10238         {0x84, 0, 0, 0, 0},
10239         {0x85, 0, 0, 0, 0},
10240         {0x86, 0, 0, 0, 0},
10241         {0x87, 0, 0, 0, 0},
10242         {0x88, 0, 0, 0, 0},
10243         {0x89, 0, 0, 0, 0},
10244         {0x8A, 0, 0, 0, 0},
10245         {0x8B, 0, 0, 0, 0},
10246         {0x8C, 0, 0, 0, 0},
10247         {0x8D, 0, 0, 0, 0},
10248         {0x8E, 0, 0, 0, 0},
10249         {0x8F, 0, 0, 0, 0},
10250         {0x90, 0, 0, 0, 0},
10251         {0x91, 0, 0, 0, 0},
10252         {0x92, 0, 0, 0, 0},
10253         {0x93, 0x70, 0x70, 0, 0},
10254         {0x94, 0x70, 0x70, 0, 0},
10255         {0x95, 0x71, 0x71, 1, 1},
10256         {0x96, 0x71, 0x71, 1, 1},
10257         {0x97, 0x72, 0x72, 1, 1},
10258         {0x98, 0x73, 0x73, 1, 1},
10259         {0x99, 0x74, 0x74, 1, 1},
10260         {0x9A, 0x75, 0x75, 1, 1},
10261         {0xFFFF, 0, 0, 0, 0},
10262 };
10263
10264 radio_regs_t regs_RX_2056_rev7[] = {
10265         {0x02, 0, 0, 0, 0},
10266         {0x03, 0, 0, 0, 0},
10267         {0x04, 0, 0, 0, 0},
10268         {0x05, 0, 0, 0, 0},
10269         {0x06, 0, 0, 0, 0},
10270         {0x07, 0, 0, 0, 0},
10271         {0x08, 0, 0, 0, 0},
10272         {0x09, 0, 0, 0, 0},
10273         {0x0A, 0, 0, 0, 0},
10274         {0x0B, 0, 0, 0, 0},
10275         {0x0C, 0, 0, 0, 0},
10276         {0x0D, 0, 0, 0, 0},
10277         {0x0E, 0, 0, 0, 0},
10278         {0x0F, 0, 0, 0, 0},
10279         {0x10, 0, 0, 0, 0},
10280         {0x11, 0, 0, 0, 0},
10281         {0x12, 0, 0, 0, 0},
10282         {0x13, 0, 0, 0, 0},
10283         {0x14, 0, 0, 0, 0},
10284         {0x15, 0, 0, 0, 0},
10285         {0x16, 0, 0, 0, 0},
10286         {0x17, 0, 0, 0, 0},
10287         {0x18, 0, 0, 0, 0},
10288         {0x19, 0, 0, 0, 0},
10289         {0x1A, 0, 0, 0, 0},
10290         {0x1B, 0, 0, 0, 0},
10291         {0x1C, 0, 0, 0, 0},
10292         {0x1D, 0, 0, 0, 0},
10293         {0x1E, 0, 0, 0, 0},
10294         {0x1F, 0, 0, 0, 0},
10295         {0x20, 0x3, 0x3, 0, 0},
10296         {0x21, 0, 0, 0, 0},
10297         {0x22, 0, 0, 0, 0},
10298         {0x23, 0x90, 0x90, 0, 0},
10299         {0x24, 0x55, 0x55, 0, 0},
10300         {0x25, 0x15, 0x15, 0, 0},
10301         {0x26, 0x5, 0x5, 0, 0},
10302         {0x27, 0x15, 0x15, 0, 0},
10303         {0x28, 0x5, 0x5, 0, 0},
10304         {0x29, 0x20, 0x20, 0, 0},
10305         {0x2A, 0x11, 0x11, 0, 0},
10306         {0x2B, 0x90, 0x90, 0, 0},
10307         {0x2C, 0, 0, 0, 0},
10308         {0x2D, 0x88, 0x88, 0, 0},
10309         {0x2E, 0x32, 0x32, 0, 0},
10310         {0x2F, 0x77, 0x77, 0, 0},
10311         {0x30, 0x17, 0x17, 1, 1},
10312         {0x31, 0xff, 0xff, 1, 1},
10313         {0x32, 0x20, 0x20, 0, 0},
10314         {0x33, 0, 0, 0, 0},
10315         {0x34, 0x88, 0x88, 0, 0},
10316         {0x35, 0x32, 0x32, 0, 0},
10317         {0x36, 0x77, 0x77, 0, 0},
10318         {0x37, 0x17, 0x17, 1, 1},
10319         {0x38, 0xf0, 0xf0, 1, 1},
10320         {0x39, 0x20, 0x20, 0, 0},
10321         {0x3A, 0x8, 0x8, 0, 0},
10322         {0x3B, 0x55, 0x55, 1, 1},
10323         {0x3C, 0, 0, 0, 0},
10324         {0x3D, 0x88, 0x88, 1, 1},
10325         {0x3E, 0, 0, 0, 0},
10326         {0x3F, 0, 0, 1, 1},
10327         {0x40, 0x7, 0x7, 1, 1},
10328         {0x41, 0x6, 0x6, 0, 0},
10329         {0x42, 0x4, 0x4, 0, 0},
10330         {0x43, 0, 0, 0, 0},
10331         {0x44, 0x8, 0x8, 0, 0},
10332         {0x45, 0x55, 0x55, 1, 1},
10333         {0x46, 0, 0, 0, 0},
10334         {0x47, 0x11, 0x11, 0, 0},
10335         {0x48, 0, 0, 0, 0},
10336         {0x49, 0, 0, 1, 1},
10337         {0x4A, 0x7, 0x7, 0, 0},
10338         {0x4B, 0x6, 0x6, 0, 0},
10339         {0x4C, 0x4, 0x4, 0, 0},
10340         {0x4D, 0, 0, 0, 0},
10341         {0x4E, 0, 0, 0, 0},
10342         {0x4F, 0x26, 0x26, 1, 1},
10343         {0x50, 0x26, 0x26, 1, 1},
10344         {0x51, 0xf, 0xf, 1, 1},
10345         {0x52, 0xf, 0xf, 1, 1},
10346         {0x53, 0x44, 0x44, 0, 0},
10347         {0x54, 0, 0, 0, 0},
10348         {0x55, 0, 0, 0, 0},
10349         {0x56, 0x8, 0x8, 0, 0},
10350         {0x57, 0x8, 0x8, 0, 0},
10351         {0x58, 0x7, 0x7, 0, 0},
10352         {0x59, 0x22, 0x22, 0, 0},
10353         {0x5A, 0x22, 0x22, 0, 0},
10354         {0x5B, 0x2, 0x2, 0, 0},
10355         {0x5C, 0x4, 0x4, 1, 1},
10356         {0x5D, 0x7, 0x7, 0, 0},
10357         {0x5E, 0x55, 0x55, 0, 0},
10358         {0x5F, 0x23, 0x23, 0, 0},
10359         {0x60, 0x41, 0x41, 0, 0},
10360         {0x61, 0x1, 0x1, 0, 0},
10361         {0x62, 0xa, 0xa, 0, 0},
10362         {0x63, 0, 0, 0, 0},
10363         {0x64, 0, 0, 0, 0},
10364         {0x65, 0, 0, 0, 0},
10365         {0x66, 0, 0, 0, 0},
10366         {0x67, 0, 0, 0, 0},
10367         {0x68, 0, 0, 0, 0},
10368         {0x69, 0, 0, 0, 0},
10369         {0x6A, 0, 0, 0, 0},
10370         {0x6B, 0xc, 0xc, 0, 0},
10371         {0x6C, 0, 0, 0, 0},
10372         {0x6D, 0, 0, 0, 0},
10373         {0x6E, 0, 0, 0, 0},
10374         {0x6F, 0, 0, 0, 0},
10375         {0x70, 0, 0, 0, 0},
10376         {0x71, 0, 0, 0, 0},
10377         {0x72, 0x22, 0x22, 0, 0},
10378         {0x73, 0x22, 0x22, 0, 0},
10379         {0x74, 0, 0, 1, 1},
10380         {0x75, 0xa, 0xa, 0, 0},
10381         {0x76, 0x1, 0x1, 0, 0},
10382         {0x77, 0x22, 0x22, 0, 0},
10383         {0x78, 0x30, 0x30, 0, 0},
10384         {0x79, 0, 0, 0, 0},
10385         {0x7A, 0, 0, 0, 0},
10386         {0x7B, 0, 0, 0, 0},
10387         {0x7C, 0, 0, 0, 0},
10388         {0x7D, 0, 0, 0, 0},
10389         {0x7E, 0, 0, 0, 0},
10390         {0x7F, 0, 0, 0, 0},
10391         {0x80, 0, 0, 0, 0},
10392         {0x81, 0, 0, 0, 0},
10393         {0x82, 0, 0, 0, 0},
10394         {0x83, 0, 0, 0, 0},
10395         {0x84, 0, 0, 0, 0},
10396         {0x85, 0, 0, 0, 0},
10397         {0x86, 0, 0, 0, 0},
10398         {0x87, 0, 0, 0, 0},
10399         {0x88, 0, 0, 0, 0},
10400         {0x89, 0, 0, 0, 0},
10401         {0x8A, 0, 0, 0, 0},
10402         {0x8B, 0, 0, 0, 0},
10403         {0x8C, 0, 0, 0, 0},
10404         {0x8D, 0, 0, 0, 0},
10405         {0x8E, 0, 0, 0, 0},
10406         {0x8F, 0, 0, 0, 0},
10407         {0x90, 0, 0, 0, 0},
10408         {0x91, 0, 0, 0, 0},
10409         {0x92, 0, 0, 0, 0},
10410         {0x93, 0, 0, 0, 0},
10411         {0x94, 0, 0, 0, 0},
10412         {0xFFFF, 0, 0, 0, 0},
10413 };
10414
10415 radio_regs_t regs_SYN_2056_rev8[] = {
10416         {0x02, 0, 0, 0, 0},
10417         {0x03, 0, 0, 0, 0},
10418         {0x04, 0, 0, 0, 0},
10419         {0x05, 0, 0, 0, 0},
10420         {0x06, 0, 0, 0, 0},
10421         {0x07, 0, 0, 0, 0},
10422         {0x08, 0, 0, 0, 0},
10423         {0x09, 0x1, 0x1, 0, 0},
10424         {0x0A, 0, 0, 0, 0},
10425         {0x0B, 0, 0, 0, 0},
10426         {0x0C, 0, 0, 0, 0},
10427         {0x0D, 0, 0, 0, 0},
10428         {0x0E, 0, 0, 0, 0},
10429         {0x0F, 0, 0, 0, 0},
10430         {0x10, 0, 0, 0, 0},
10431         {0x11, 0, 0, 0, 0},
10432         {0x12, 0, 0, 0, 0},
10433         {0x13, 0, 0, 0, 0},
10434         {0x14, 0, 0, 0, 0},
10435         {0x15, 0, 0, 0, 0},
10436         {0x16, 0, 0, 0, 0},
10437         {0x17, 0, 0, 0, 0},
10438         {0x18, 0, 0, 0, 0},
10439         {0x19, 0, 0, 0, 0},
10440         {0x1A, 0, 0, 0, 0},
10441         {0x1B, 0, 0, 0, 0},
10442         {0x1C, 0, 0, 0, 0},
10443         {0x1D, 0, 0, 0, 0},
10444         {0x1E, 0, 0, 0, 0},
10445         {0x1F, 0, 0, 0, 0},
10446         {0x20, 0, 0, 0, 0},
10447         {0x21, 0, 0, 0, 0},
10448         {0x22, 0x60, 0x60, 0, 0},
10449         {0x23, 0x6, 0x6, 0, 0},
10450         {0x24, 0xc, 0xc, 0, 0},
10451         {0x25, 0, 0, 0, 0},
10452         {0x26, 0, 0, 0, 0},
10453         {0x27, 0, 0, 0, 0},
10454         {0x28, 0x1, 0x1, 0, 0},
10455         {0x29, 0, 0, 0, 0},
10456         {0x2A, 0, 0, 0, 0},
10457         {0x2B, 0, 0, 0, 0},
10458         {0x2C, 0, 0, 0, 0},
10459         {0x2D, 0, 0, 0, 0},
10460         {0x2E, 0, 0, 0, 0},
10461         {0x2F, 0x1f, 0x1f, 0, 0},
10462         {0x30, 0x15, 0x15, 0, 0},
10463         {0x31, 0xf, 0xf, 0, 0},
10464         {0x32, 0, 0, 0, 0},
10465         {0x33, 0, 0, 0, 0},
10466         {0x34, 0, 0, 0, 0},
10467         {0x35, 0, 0, 0, 0},
10468         {0x36, 0, 0, 0, 0},
10469         {0x37, 0, 0, 0, 0},
10470         {0x38, 0, 0, 0, 0},
10471         {0x39, 0, 0, 0, 0},
10472         {0x3A, 0, 0, 0, 0},
10473         {0x3B, 0, 0, 0, 0},
10474         {0x3C, 0x13, 0x13, 0, 0},
10475         {0x3D, 0xf, 0xf, 0, 0},
10476         {0x3E, 0x18, 0x18, 0, 0},
10477         {0x3F, 0, 0, 0, 0},
10478         {0x40, 0, 0, 0, 0},
10479         {0x41, 0x20, 0x20, 0, 0},
10480         {0x42, 0x20, 0x20, 0, 0},
10481         {0x43, 0, 0, 0, 0},
10482         {0x44, 0x77, 0x77, 0, 0},
10483         {0x45, 0x7, 0x7, 0, 0},
10484         {0x46, 0x1, 0x1, 0, 0},
10485         {0x47, 0x4, 0x4, 0, 0},
10486         {0x48, 0xf, 0xf, 0, 0},
10487         {0x49, 0x30, 0x30, 0, 0},
10488         {0x4A, 0x32, 0x32, 0, 0},
10489         {0x4B, 0xd, 0xd, 0, 0},
10490         {0x4C, 0xd, 0xd, 0, 0},
10491         {0x4D, 0x4, 0x4, 0, 0},
10492         {0x4E, 0x6, 0x6, 0, 0},
10493         {0x4F, 0x1, 0x1, 0, 0},
10494         {0x50, 0x1c, 0x1c, 0, 0},
10495         {0x51, 0x2, 0x2, 0, 0},
10496         {0x52, 0x2, 0x2, 0, 0},
10497         {0x53, 0xf7, 0xf7, 1, 1},
10498         {0x54, 0xb4, 0xb4, 0, 0},
10499         {0x55, 0xd2, 0xd2, 0, 0},
10500         {0x56, 0, 0, 0, 0},
10501         {0x57, 0, 0, 0, 0},
10502         {0x58, 0x4, 0x4, 0, 0},
10503         {0x59, 0x96, 0x96, 0, 0},
10504         {0x5A, 0x3e, 0x3e, 0, 0},
10505         {0x5B, 0x3e, 0x3e, 0, 0},
10506         {0x5C, 0x13, 0x13, 0, 0},
10507         {0x5D, 0x2, 0x2, 0, 0},
10508         {0x5E, 0, 0, 0, 0},
10509         {0x5F, 0x7, 0x7, 0, 0},
10510         {0x60, 0x7, 0x7, 1, 1},
10511         {0x61, 0x8, 0x8, 0, 0},
10512         {0x62, 0x3, 0x3, 0, 0},
10513         {0x63, 0, 0, 0, 0},
10514         {0x64, 0, 0, 0, 0},
10515         {0x65, 0, 0, 0, 0},
10516         {0x66, 0, 0, 0, 0},
10517         {0x67, 0, 0, 0, 0},
10518         {0x68, 0x40, 0x40, 0, 0},
10519         {0x69, 0, 0, 0, 0},
10520         {0x6A, 0, 0, 0, 0},
10521         {0x6B, 0, 0, 0, 0},
10522         {0x6C, 0, 0, 0, 0},
10523         {0x6D, 0x1, 0x1, 0, 0},
10524         {0x6E, 0, 0, 0, 0},
10525         {0x6F, 0, 0, 0, 0},
10526         {0x70, 0x60, 0x60, 0, 0},
10527         {0x71, 0x66, 0x66, 0, 0},
10528         {0x72, 0xc, 0xc, 0, 0},
10529         {0x73, 0x66, 0x66, 0, 0},
10530         {0x74, 0x8f, 0x8f, 1, 1},
10531         {0x75, 0, 0, 0, 0},
10532         {0x76, 0xcc, 0xcc, 0, 0},
10533         {0x77, 0x1, 0x1, 0, 0},
10534         {0x78, 0x66, 0x66, 0, 0},
10535         {0x79, 0x66, 0x66, 0, 0},
10536         {0x7A, 0, 0, 0, 0},
10537         {0x7B, 0, 0, 0, 0},
10538         {0x7C, 0, 0, 0, 0},
10539         {0x7D, 0, 0, 0, 0},
10540         {0x7E, 0, 0, 0, 0},
10541         {0x7F, 0, 0, 0, 0},
10542         {0x80, 0, 0, 0, 0},
10543         {0x81, 0, 0, 0, 0},
10544         {0x82, 0, 0, 0, 0},
10545         {0x83, 0, 0, 0, 0},
10546         {0x84, 0, 0, 0, 0},
10547         {0x85, 0xff, 0xff, 0, 0},
10548         {0x86, 0, 0, 0, 0},
10549         {0x87, 0, 0, 0, 0},
10550         {0x88, 0, 0, 0, 0},
10551         {0x89, 0, 0, 0, 0},
10552         {0x8A, 0, 0, 0, 0},
10553         {0x8B, 0, 0, 0, 0},
10554         {0x8C, 0, 0, 0, 0},
10555         {0x8D, 0, 0, 0, 0},
10556         {0x8E, 0, 0, 0, 0},
10557         {0x8F, 0, 0, 0, 0},
10558         {0x90, 0, 0, 0, 0},
10559         {0x91, 0, 0, 0, 0},
10560         {0x92, 0, 0, 0, 0},
10561         {0x93, 0, 0, 0, 0},
10562         {0x94, 0, 0, 0, 0},
10563         {0x95, 0, 0, 0, 0},
10564         {0x96, 0, 0, 0, 0},
10565         {0x97, 0, 0, 0, 0},
10566         {0x98, 0, 0, 0, 0},
10567         {0x99, 0, 0, 0, 0},
10568         {0x9A, 0, 0, 0, 0},
10569         {0x9B, 0, 0, 0, 0},
10570         {0x9C, 0, 0, 0, 0},
10571         {0x9D, 0, 0, 0, 0},
10572         {0x9E, 0, 0, 0, 0},
10573         {0x9F, 0x6, 0x6, 0, 0},
10574         {0xA0, 0x66, 0x66, 0, 0},
10575         {0xA1, 0x66, 0x66, 0, 0},
10576         {0xA2, 0x66, 0x66, 0, 0},
10577         {0xA3, 0x66, 0x66, 0, 0},
10578         {0xA4, 0x66, 0x66, 0, 0},
10579         {0xA5, 0x66, 0x66, 0, 0},
10580         {0xA6, 0x66, 0x66, 0, 0},
10581         {0xA7, 0x66, 0x66, 0, 0},
10582         {0xA8, 0x66, 0x66, 0, 0},
10583         {0xA9, 0x66, 0x66, 0, 0},
10584         {0xAA, 0x66, 0x66, 0, 0},
10585         {0xAB, 0x66, 0x66, 0, 0},
10586         {0xAC, 0x66, 0x66, 0, 0},
10587         {0xAD, 0x66, 0x66, 0, 0},
10588         {0xAE, 0x66, 0x66, 0, 0},
10589         {0xAF, 0x66, 0x66, 0, 0},
10590         {0xB0, 0x66, 0x66, 0, 0},
10591         {0xB1, 0x66, 0x66, 0, 0},
10592         {0xB2, 0x66, 0x66, 0, 0},
10593         {0xB3, 0xa, 0xa, 0, 0},
10594         {0xB4, 0, 0, 0, 0},
10595         {0xB5, 0, 0, 0, 0},
10596         {0xB6, 0, 0, 0, 0},
10597         {0xFFFF, 0, 0, 0, 0},
10598 };
10599
10600 radio_regs_t regs_TX_2056_rev8[] = {
10601         {0x02, 0, 0, 0, 0},
10602         {0x03, 0, 0, 0, 0},
10603         {0x04, 0, 0, 0, 0},
10604         {0x05, 0, 0, 0, 0},
10605         {0x06, 0, 0, 0, 0},
10606         {0x07, 0, 0, 0, 0},
10607         {0x08, 0, 0, 0, 0},
10608         {0x09, 0, 0, 0, 0},
10609         {0x0A, 0, 0, 0, 0},
10610         {0x0B, 0, 0, 0, 0},
10611         {0x0C, 0, 0, 0, 0},
10612         {0x0D, 0, 0, 0, 0},
10613         {0x0E, 0, 0, 0, 0},
10614         {0x0F, 0, 0, 0, 0},
10615         {0x10, 0, 0, 0, 0},
10616         {0x11, 0, 0, 0, 0},
10617         {0x12, 0, 0, 0, 0},
10618         {0x13, 0, 0, 0, 0},
10619         {0x14, 0, 0, 0, 0},
10620         {0x15, 0, 0, 0, 0},
10621         {0x16, 0, 0, 0, 0},
10622         {0x17, 0, 0, 0, 0},
10623         {0x18, 0, 0, 0, 0},
10624         {0x19, 0, 0, 0, 0},
10625         {0x1A, 0, 0, 0, 0},
10626         {0x1B, 0, 0, 0, 0},
10627         {0x1C, 0, 0, 0, 0},
10628         {0x1D, 0, 0, 0, 0},
10629         {0x1E, 0, 0, 0, 0},
10630         {0x1F, 0, 0, 0, 0},
10631         {0x20, 0, 0, 0, 0},
10632         {0x21, 0x88, 0x88, 0, 0},
10633         {0x22, 0x88, 0x88, 0, 0},
10634         {0x23, 0x88, 0x88, 0, 0},
10635         {0x24, 0x88, 0x88, 0, 0},
10636         {0x25, 0xc, 0xc, 0, 0},
10637         {0x26, 0, 0, 0, 0},
10638         {0x27, 0x3, 0x3, 0, 0},
10639         {0x28, 0, 0, 0, 0},
10640         {0x29, 0x3, 0x3, 0, 0},
10641         {0x2A, 0x37, 0x37, 0, 0},
10642         {0x2B, 0x3, 0x3, 0, 0},
10643         {0x2C, 0, 0, 0, 0},
10644         {0x2D, 0, 0, 0, 0},
10645         {0x2E, 0x1, 0x1, 0, 0},
10646         {0x2F, 0x1, 0x1, 0, 0},
10647         {0x30, 0, 0, 0, 0},
10648         {0x31, 0, 0, 0, 0},
10649         {0x32, 0, 0, 0, 0},
10650         {0x33, 0x11, 0x11, 0, 0},
10651         {0x34, 0xee, 0xee, 1, 1},
10652         {0x35, 0, 0, 0, 0},
10653         {0x36, 0, 0, 0, 0},
10654         {0x37, 0x3, 0x3, 0, 0},
10655         {0x38, 0x50, 0x50, 1, 1},
10656         {0x39, 0, 0, 0, 0},
10657         {0x3A, 0x50, 0x50, 1, 1},
10658         {0x3B, 0, 0, 0, 0},
10659         {0x3C, 0x6e, 0x6e, 0, 0},
10660         {0x3D, 0xf0, 0xf0, 1, 1},
10661         {0x3E, 0, 0, 0, 0},
10662         {0x3F, 0, 0, 0, 0},
10663         {0x40, 0, 0, 0, 0},
10664         {0x41, 0x3, 0x3, 0, 0},
10665         {0x42, 0x3, 0x3, 0, 0},
10666         {0x43, 0, 0, 0, 0},
10667         {0x44, 0x1e, 0x1e, 0, 0},
10668         {0x45, 0, 0, 0, 0},
10669         {0x46, 0x6e, 0x6e, 0, 0},
10670         {0x47, 0xf0, 0xf0, 1, 1},
10671         {0x48, 0, 0, 0, 0},
10672         {0x49, 0x2, 0x2, 0, 0},
10673         {0x4A, 0xff, 0xff, 1, 1},
10674         {0x4B, 0xc, 0xc, 0, 0},
10675         {0x4C, 0, 0, 0, 0},
10676         {0x4D, 0x38, 0x38, 0, 0},
10677         {0x4E, 0x70, 0x70, 1, 1},
10678         {0x4F, 0x2, 0x2, 0, 0},
10679         {0x50, 0x88, 0x88, 0, 0},
10680         {0x51, 0xc, 0xc, 0, 0},
10681         {0x52, 0, 0, 0, 0},
10682         {0x53, 0x8, 0x8, 0, 0},
10683         {0x54, 0x70, 0x70, 1, 1},
10684         {0x55, 0x2, 0x2, 0, 0},
10685         {0x56, 0xff, 0xff, 1, 1},
10686         {0x57, 0, 0, 0, 0},
10687         {0x58, 0x83, 0x83, 0, 0},
10688         {0x59, 0x77, 0x77, 1, 1},
10689         {0x5A, 0, 0, 0, 0},
10690         {0x5B, 0x2, 0x2, 0, 0},
10691         {0x5C, 0x88, 0x88, 0, 0},
10692         {0x5D, 0, 0, 0, 0},
10693         {0x5E, 0x8, 0x8, 0, 0},
10694         {0x5F, 0x77, 0x77, 1, 1},
10695         {0x60, 0x1, 0x1, 0, 0},
10696         {0x61, 0, 0, 0, 0},
10697         {0x62, 0x7, 0x7, 0, 0},
10698         {0x63, 0, 0, 0, 0},
10699         {0x64, 0x7, 0x7, 0, 0},
10700         {0x65, 0, 0, 0, 0},
10701         {0x66, 0, 0, 0, 0},
10702         {0x67, 0, 0, 1, 1},
10703         {0x68, 0, 0, 0, 0},
10704         {0x69, 0xa, 0xa, 0, 0},
10705         {0x6A, 0, 0, 0, 0},
10706         {0x6B, 0, 0, 0, 0},
10707         {0x6C, 0, 0, 0, 0},
10708         {0x6D, 0, 0, 0, 0},
10709         {0x6E, 0, 0, 0, 0},
10710         {0x6F, 0, 0, 0, 0},
10711         {0x70, 0, 0, 0, 0},
10712         {0x71, 0x2, 0x2, 0, 0},
10713         {0x72, 0, 0, 0, 0},
10714         {0x73, 0, 0, 0, 0},
10715         {0x74, 0xe, 0xe, 0, 0},
10716         {0x75, 0xe, 0xe, 0, 0},
10717         {0x76, 0xe, 0xe, 0, 0},
10718         {0x77, 0x13, 0x13, 0, 0},
10719         {0x78, 0x13, 0x13, 0, 0},
10720         {0x79, 0x1b, 0x1b, 0, 0},
10721         {0x7A, 0x1b, 0x1b, 0, 0},
10722         {0x7B, 0x55, 0x55, 0, 0},
10723         {0x7C, 0x5b, 0x5b, 0, 0},
10724         {0x7D, 0x30, 0x30, 1, 1},
10725         {0x7E, 0, 0, 0, 0},
10726         {0x7F, 0, 0, 0, 0},
10727         {0x80, 0, 0, 0, 0},
10728         {0x81, 0, 0, 0, 0},
10729         {0x82, 0, 0, 0, 0},
10730         {0x83, 0, 0, 0, 0},
10731         {0x84, 0, 0, 0, 0},
10732         {0x85, 0, 0, 0, 0},
10733         {0x86, 0, 0, 0, 0},
10734         {0x87, 0, 0, 0, 0},
10735         {0x88, 0, 0, 0, 0},
10736         {0x89, 0, 0, 0, 0},
10737         {0x8A, 0, 0, 0, 0},
10738         {0x8B, 0, 0, 0, 0},
10739         {0x8C, 0, 0, 0, 0},
10740         {0x8D, 0, 0, 0, 0},
10741         {0x8E, 0, 0, 0, 0},
10742         {0x8F, 0, 0, 0, 0},
10743         {0x90, 0, 0, 0, 0},
10744         {0x91, 0, 0, 0, 0},
10745         {0x92, 0, 0, 0, 0},
10746         {0x93, 0x70, 0x70, 0, 0},
10747         {0x94, 0x70, 0x70, 0, 0},
10748         {0x95, 0x70, 0x70, 0, 0},
10749         {0x96, 0x70, 0x70, 0, 0},
10750         {0x97, 0x70, 0x70, 0, 0},
10751         {0x98, 0x70, 0x70, 0, 0},
10752         {0x99, 0x70, 0x70, 0, 0},
10753         {0x9A, 0x70, 0x70, 0, 0},
10754         {0xFFFF, 0, 0, 0, 0},
10755 };
10756
10757 radio_regs_t regs_RX_2056_rev8[] = {
10758         {0x02, 0, 0, 0, 0},
10759         {0x03, 0, 0, 0, 0},
10760         {0x04, 0, 0, 0, 0},
10761         {0x05, 0, 0, 0, 0},
10762         {0x06, 0, 0, 0, 0},
10763         {0x07, 0, 0, 0, 0},
10764         {0x08, 0, 0, 0, 0},
10765         {0x09, 0, 0, 0, 0},
10766         {0x0A, 0, 0, 0, 0},
10767         {0x0B, 0, 0, 0, 0},
10768         {0x0C, 0, 0, 0, 0},
10769         {0x0D, 0, 0, 0, 0},
10770         {0x0E, 0, 0, 0, 0},
10771         {0x0F, 0, 0, 0, 0},
10772         {0x10, 0, 0, 0, 0},
10773         {0x11, 0, 0, 0, 0},
10774         {0x12, 0, 0, 0, 0},
10775         {0x13, 0, 0, 0, 0},
10776         {0x14, 0, 0, 0, 0},
10777         {0x15, 0, 0, 0, 0},
10778         {0x16, 0, 0, 0, 0},
10779         {0x17, 0, 0, 0, 0},
10780         {0x18, 0, 0, 0, 0},
10781         {0x19, 0, 0, 0, 0},
10782         {0x1A, 0, 0, 0, 0},
10783         {0x1B, 0, 0, 0, 0},
10784         {0x1C, 0, 0, 0, 0},
10785         {0x1D, 0, 0, 0, 0},
10786         {0x1E, 0, 0, 0, 0},
10787         {0x1F, 0, 0, 0, 0},
10788         {0x20, 0x3, 0x3, 0, 0},
10789         {0x21, 0, 0, 0, 0},
10790         {0x22, 0, 0, 0, 0},
10791         {0x23, 0x90, 0x90, 0, 0},
10792         {0x24, 0x55, 0x55, 0, 0},
10793         {0x25, 0x15, 0x15, 0, 0},
10794         {0x26, 0x5, 0x5, 0, 0},
10795         {0x27, 0x15, 0x15, 0, 0},
10796         {0x28, 0x5, 0x5, 0, 0},
10797         {0x29, 0x20, 0x20, 0, 0},
10798         {0x2A, 0x11, 0x11, 0, 0},
10799         {0x2B, 0x90, 0x90, 0, 0},
10800         {0x2C, 0, 0, 0, 0},
10801         {0x2D, 0x88, 0x88, 0, 0},
10802         {0x2E, 0x32, 0x32, 0, 0},
10803         {0x2F, 0x77, 0x77, 0, 0},
10804         {0x30, 0x17, 0x17, 1, 1},
10805         {0x31, 0xff, 0xff, 1, 1},
10806         {0x32, 0x20, 0x20, 0, 0},
10807         {0x33, 0, 0, 0, 0},
10808         {0x34, 0x88, 0x88, 0, 0},
10809         {0x35, 0x32, 0x32, 0, 0},
10810         {0x36, 0x77, 0x77, 0, 0},
10811         {0x37, 0x17, 0x17, 1, 1},
10812         {0x38, 0xf0, 0xf0, 1, 1},
10813         {0x39, 0x20, 0x20, 0, 0},
10814         {0x3A, 0x8, 0x8, 0, 0},
10815         {0x3B, 0x55, 0x55, 1, 1},
10816         {0x3C, 0, 0, 0, 0},
10817         {0x3D, 0x88, 0x88, 1, 1},
10818         {0x3E, 0, 0, 0, 0},
10819         {0x3F, 0x44, 0x44, 0, 0},
10820         {0x40, 0x7, 0x7, 1, 1},
10821         {0x41, 0x6, 0x6, 0, 0},
10822         {0x42, 0x4, 0x4, 0, 0},
10823         {0x43, 0, 0, 0, 0},
10824         {0x44, 0x8, 0x8, 0, 0},
10825         {0x45, 0x55, 0x55, 1, 1},
10826         {0x46, 0, 0, 0, 0},
10827         {0x47, 0x11, 0x11, 0, 0},
10828         {0x48, 0, 0, 0, 0},
10829         {0x49, 0x44, 0x44, 0, 0},
10830         {0x4A, 0x7, 0x7, 0, 0},
10831         {0x4B, 0x6, 0x6, 0, 0},
10832         {0x4C, 0x4, 0x4, 0, 0},
10833         {0x4D, 0, 0, 0, 0},
10834         {0x4E, 0, 0, 0, 0},
10835         {0x4F, 0x26, 0x26, 1, 1},
10836         {0x50, 0x26, 0x26, 1, 1},
10837         {0x51, 0xf, 0xf, 1, 1},
10838         {0x52, 0xf, 0xf, 1, 1},
10839         {0x53, 0x44, 0x44, 0, 0},
10840         {0x54, 0, 0, 0, 0},
10841         {0x55, 0, 0, 0, 0},
10842         {0x56, 0x8, 0x8, 0, 0},
10843         {0x57, 0x8, 0x8, 0, 0},
10844         {0x58, 0x7, 0x7, 0, 0},
10845         {0x59, 0x22, 0x22, 0, 0},
10846         {0x5A, 0x22, 0x22, 0, 0},
10847         {0x5B, 0x2, 0x2, 0, 0},
10848         {0x5C, 0x4, 0x4, 1, 1},
10849         {0x5D, 0x7, 0x7, 0, 0},
10850         {0x5E, 0x55, 0x55, 0, 0},
10851         {0x5F, 0x23, 0x23, 0, 0},
10852         {0x60, 0x41, 0x41, 0, 0},
10853         {0x61, 0x1, 0x1, 0, 0},
10854         {0x62, 0xa, 0xa, 0, 0},
10855         {0x63, 0, 0, 0, 0},
10856         {0x64, 0, 0, 0, 0},
10857         {0x65, 0, 0, 0, 0},
10858         {0x66, 0, 0, 0, 0},
10859         {0x67, 0, 0, 0, 0},
10860         {0x68, 0, 0, 0, 0},
10861         {0x69, 0, 0, 0, 0},
10862         {0x6A, 0, 0, 0, 0},
10863         {0x6B, 0xc, 0xc, 0, 0},
10864         {0x6C, 0, 0, 0, 0},
10865         {0x6D, 0, 0, 0, 0},
10866         {0x6E, 0, 0, 0, 0},
10867         {0x6F, 0, 0, 0, 0},
10868         {0x70, 0, 0, 0, 0},
10869         {0x71, 0, 0, 0, 0},
10870         {0x72, 0x22, 0x22, 0, 0},
10871         {0x73, 0x22, 0x22, 0, 0},
10872         {0x74, 0, 0, 1, 1},
10873         {0x75, 0xa, 0xa, 0, 0},
10874         {0x76, 0x1, 0x1, 0, 0},
10875         {0x77, 0x22, 0x22, 0, 0},
10876         {0x78, 0x30, 0x30, 0, 0},
10877         {0x79, 0, 0, 0, 0},
10878         {0x7A, 0, 0, 0, 0},
10879         {0x7B, 0, 0, 0, 0},
10880         {0x7C, 0, 0, 0, 0},
10881         {0x7D, 0x5, 0x5, 1, 1},
10882         {0x7E, 0, 0, 0, 0},
10883         {0x7F, 0, 0, 0, 0},
10884         {0x80, 0, 0, 0, 0},
10885         {0x81, 0, 0, 0, 0},
10886         {0x82, 0, 0, 0, 0},
10887         {0x83, 0, 0, 0, 0},
10888         {0x84, 0, 0, 0, 0},
10889         {0x85, 0, 0, 0, 0},
10890         {0x86, 0, 0, 0, 0},
10891         {0x87, 0, 0, 0, 0},
10892         {0x88, 0, 0, 0, 0},
10893         {0x89, 0, 0, 0, 0},
10894         {0x8A, 0, 0, 0, 0},
10895         {0x8B, 0, 0, 0, 0},
10896         {0x8C, 0, 0, 0, 0},
10897         {0x8D, 0, 0, 0, 0},
10898         {0x8E, 0, 0, 0, 0},
10899         {0x8F, 0, 0, 0, 0},
10900         {0x90, 0, 0, 0, 0},
10901         {0x91, 0, 0, 0, 0},
10902         {0x92, 0, 0, 0, 0},
10903         {0x93, 0, 0, 0, 0},
10904         {0x94, 0, 0, 0, 0},
10905         {0xFFFF, 0, 0, 0, 0},
10906 };
10907
10908 radio_regs_t regs_SYN_2056_rev11[] = {
10909         {0x02, 0, 0, 0, 0},
10910         {0x03, 0, 0, 0, 0},
10911         {0x04, 0, 0, 0, 0},
10912         {0x05, 0, 0, 0, 0},
10913         {0x06, 0, 0, 0, 0},
10914         {0x07, 0, 0, 0, 0},
10915         {0x08, 0, 0, 0, 0},
10916         {0x09, 0x1, 0x1, 0, 0},
10917         {0x0A, 0, 0, 0, 0},
10918         {0x0B, 0, 0, 0, 0},
10919         {0x0C, 0, 0, 0, 0},
10920         {0x0D, 0, 0, 0, 0},
10921         {0x0E, 0, 0, 0, 0},
10922         {0x0F, 0, 0, 0, 0},
10923         {0x10, 0, 0, 0, 0},
10924         {0x11, 0, 0, 0, 0},
10925         {0x12, 0, 0, 0, 0},
10926         {0x13, 0, 0, 0, 0},
10927         {0x14, 0, 0, 0, 0},
10928         {0x15, 0, 0, 0, 0},
10929         {0x16, 0, 0, 0, 0},
10930         {0x17, 0, 0, 0, 0},
10931         {0x18, 0, 0, 0, 0},
10932         {0x19, 0, 0, 0, 0},
10933         {0x1A, 0, 0, 0, 0},
10934         {0x1B, 0, 0, 0, 0},
10935         {0x1C, 0, 0, 0, 0},
10936         {0x1D, 0, 0, 0, 0},
10937         {0x1E, 0, 0, 0, 0},
10938         {0x1F, 0, 0, 0, 0},
10939         {0x20, 0, 0, 0, 0},
10940         {0x21, 0, 0, 0, 0},
10941         {0x22, 0x60, 0x60, 0, 0},
10942         {0x23, 0x6, 0x6, 0, 0},
10943         {0x24, 0xc, 0xc, 0, 0},
10944         {0x25, 0, 0, 0, 0},
10945         {0x26, 0, 0, 0, 0},
10946         {0x27, 0, 0, 0, 0},
10947         {0x28, 0x1, 0x1, 0, 0},
10948         {0x29, 0, 0, 0, 0},
10949         {0x2A, 0, 0, 0, 0},
10950         {0x2B, 0, 0, 0, 0},
10951         {0x2C, 0, 0, 0, 0},
10952         {0x2D, 0, 0, 0, 0},
10953         {0x2E, 0, 0, 0, 0},
10954         {0x2F, 0x1f, 0x1f, 0, 0},
10955         {0x30, 0x15, 0x15, 0, 0},
10956         {0x31, 0xf, 0xf, 0, 0},
10957         {0x32, 0, 0, 0, 0},
10958         {0x33, 0, 0, 0, 0},
10959         {0x34, 0, 0, 0, 0},
10960         {0x35, 0, 0, 0, 0},
10961         {0x36, 0, 0, 0, 0},
10962         {0x37, 0, 0, 0, 0},
10963         {0x38, 0, 0, 0, 0},
10964         {0x39, 0, 0, 0, 0},
10965         {0x3A, 0, 0, 0, 0},
10966         {0x3B, 0, 0, 0, 0},
10967         {0x3C, 0x13, 0x13, 0, 0},
10968         {0x3D, 0xf, 0xf, 0, 0},
10969         {0x3E, 0x18, 0x18, 0, 0},
10970         {0x3F, 0, 0, 0, 0},
10971         {0x40, 0, 0, 0, 0},
10972         {0x41, 0x20, 0x20, 0, 0},
10973         {0x42, 0x20, 0x20, 0, 0},
10974         {0x43, 0, 0, 0, 0},
10975         {0x44, 0x77, 0x77, 0, 0},
10976         {0x45, 0x7, 0x7, 0, 0},
10977         {0x46, 0x1, 0x1, 0, 0},
10978         {0x47, 0x6, 0x6, 1, 1},
10979         {0x48, 0xf, 0xf, 0, 0},
10980         {0x49, 0x3f, 0x3f, 1, 1},
10981         {0x4A, 0x32, 0x32, 0, 0},
10982         {0x4B, 0x6, 0x6, 1, 1},
10983         {0x4C, 0x6, 0x6, 1, 1},
10984         {0x4D, 0x4, 0x4, 0, 0},
10985         {0x4E, 0x2b, 0x2b, 1, 1},
10986         {0x4F, 0x1, 0x1, 0, 0},
10987         {0x50, 0x1c, 0x1c, 0, 0},
10988         {0x51, 0x2, 0x2, 0, 0},
10989         {0x52, 0x2, 0x2, 0, 0},
10990         {0x53, 0xf7, 0xf7, 1, 1},
10991         {0x54, 0xb4, 0xb4, 0, 0},
10992         {0x55, 0xd2, 0xd2, 0, 0},
10993         {0x56, 0, 0, 0, 0},
10994         {0x57, 0, 0, 0, 0},
10995         {0x58, 0x4, 0x4, 0, 0},
10996         {0x59, 0x96, 0x96, 0, 0},
10997         {0x5A, 0x3e, 0x3e, 0, 0},
10998         {0x5B, 0x3e, 0x3e, 0, 0},
10999         {0x5C, 0x13, 0x13, 0, 0},
11000         {0x5D, 0x2, 0x2, 0, 0},
11001         {0x5E, 0, 0, 0, 0},
11002         {0x5F, 0x7, 0x7, 0, 0},
11003         {0x60, 0x7, 0x7, 1, 1},
11004         {0x61, 0x8, 0x8, 0, 0},
11005         {0x62, 0x3, 0x3, 0, 0},
11006         {0x63, 0, 0, 0, 0},
11007         {0x64, 0, 0, 0, 0},
11008         {0x65, 0, 0, 0, 0},
11009         {0x66, 0, 0, 0, 0},
11010         {0x67, 0, 0, 0, 0},
11011         {0x68, 0x40, 0x40, 0, 0},
11012         {0x69, 0, 0, 0, 0},
11013         {0x6A, 0, 0, 0, 0},
11014         {0x6B, 0, 0, 0, 0},
11015         {0x6C, 0, 0, 0, 0},
11016         {0x6D, 0x1, 0x1, 0, 0},
11017         {0x6E, 0, 0, 0, 0},
11018         {0x6F, 0, 0, 0, 0},
11019         {0x70, 0x60, 0x60, 0, 0},
11020         {0x71, 0x66, 0x66, 0, 0},
11021         {0x72, 0xc, 0xc, 0, 0},
11022         {0x73, 0x66, 0x66, 0, 0},
11023         {0x74, 0x8f, 0x8f, 1, 1},
11024         {0x75, 0, 0, 0, 0},
11025         {0x76, 0xcc, 0xcc, 0, 0},
11026         {0x77, 0x1, 0x1, 0, 0},
11027         {0x78, 0x66, 0x66, 0, 0},
11028         {0x79, 0x66, 0x66, 0, 0},
11029         {0x7A, 0, 0, 0, 0},
11030         {0x7B, 0, 0, 0, 0},
11031         {0x7C, 0, 0, 0, 0},
11032         {0x7D, 0, 0, 0, 0},
11033         {0x7E, 0, 0, 0, 0},
11034         {0x7F, 0, 0, 0, 0},
11035         {0x80, 0, 0, 0, 0},
11036         {0x81, 0, 0, 0, 0},
11037         {0x82, 0, 0, 0, 0},
11038         {0x83, 0, 0, 0, 0},
11039         {0x84, 0, 0, 0, 0},
11040         {0x85, 0xff, 0xff, 0, 0},
11041         {0x86, 0, 0, 0, 0},
11042         {0x87, 0, 0, 0, 0},
11043         {0x88, 0, 0, 0, 0},
11044         {0x89, 0, 0, 0, 0},
11045         {0x8A, 0, 0, 0, 0},
11046         {0x8B, 0, 0, 0, 0},
11047         {0x8C, 0, 0, 0, 0},
11048         {0x8D, 0, 0, 0, 0},
11049         {0x8E, 0, 0, 0, 0},
11050         {0x8F, 0, 0, 0, 0},
11051         {0x90, 0, 0, 0, 0},
11052         {0x91, 0, 0, 0, 0},
11053         {0x92, 0, 0, 0, 0},
11054         {0x93, 0, 0, 0, 0},
11055         {0x94, 0, 0, 0, 0},
11056         {0x95, 0, 0, 0, 0},
11057         {0x96, 0, 0, 0, 0},
11058         {0x97, 0, 0, 0, 0},
11059         {0x98, 0, 0, 0, 0},
11060         {0x99, 0, 0, 0, 0},
11061         {0x9A, 0, 0, 0, 0},
11062         {0x9B, 0, 0, 0, 0},
11063         {0x9C, 0, 0, 0, 0},
11064         {0x9D, 0, 0, 0, 0},
11065         {0x9E, 0, 0, 0, 0},
11066         {0x9F, 0x6, 0x6, 0, 0},
11067         {0xA0, 0x66, 0x66, 0, 0},
11068         {0xA1, 0x66, 0x66, 0, 0},
11069         {0xA2, 0x66, 0x66, 0, 0},
11070         {0xA3, 0x66, 0x66, 0, 0},
11071         {0xA4, 0x66, 0x66, 0, 0},
11072         {0xA5, 0x66, 0x66, 0, 0},
11073         {0xA6, 0x66, 0x66, 0, 0},
11074         {0xA7, 0x66, 0x66, 0, 0},
11075         {0xA8, 0x66, 0x66, 0, 0},
11076         {0xA9, 0x66, 0x66, 0, 0},
11077         {0xAA, 0x66, 0x66, 0, 0},
11078         {0xAB, 0x66, 0x66, 0, 0},
11079         {0xAC, 0x66, 0x66, 0, 0},
11080         {0xAD, 0x66, 0x66, 0, 0},
11081         {0xAE, 0x66, 0x66, 0, 0},
11082         {0xAF, 0x66, 0x66, 0, 0},
11083         {0xB0, 0x66, 0x66, 0, 0},
11084         {0xB1, 0x66, 0x66, 0, 0},
11085         {0xB2, 0x66, 0x66, 0, 0},
11086         {0xB3, 0xa, 0xa, 0, 0},
11087         {0xB4, 0, 0, 0, 0},
11088         {0xB5, 0, 0, 0, 0},
11089         {0xB6, 0, 0, 0, 0},
11090         {0xFFFF, 0, 0, 0, 0},
11091 };
11092
11093 radio_regs_t regs_TX_2056_rev11[] = {
11094         {0x02, 0, 0, 0, 0},
11095         {0x03, 0, 0, 0, 0},
11096         {0x04, 0, 0, 0, 0},
11097         {0x05, 0, 0, 0, 0},
11098         {0x06, 0, 0, 0, 0},
11099         {0x07, 0, 0, 0, 0},
11100         {0x08, 0, 0, 0, 0},
11101         {0x09, 0, 0, 0, 0},
11102         {0x0A, 0, 0, 0, 0},
11103         {0x0B, 0, 0, 0, 0},
11104         {0x0C, 0, 0, 0, 0},
11105         {0x0D, 0, 0, 0, 0},
11106         {0x0E, 0, 0, 0, 0},
11107         {0x0F, 0, 0, 0, 0},
11108         {0x10, 0, 0, 0, 0},
11109         {0x11, 0, 0, 0, 0},
11110         {0x12, 0, 0, 0, 0},
11111         {0x13, 0, 0, 0, 0},
11112         {0x14, 0, 0, 0, 0},
11113         {0x15, 0, 0, 0, 0},
11114         {0x16, 0, 0, 0, 0},
11115         {0x17, 0, 0, 0, 0},
11116         {0x18, 0, 0, 0, 0},
11117         {0x19, 0, 0, 0, 0},
11118         {0x1A, 0, 0, 0, 0},
11119         {0x1B, 0, 0, 0, 0},
11120         {0x1C, 0, 0, 0, 0},
11121         {0x1D, 0, 0, 0, 0},
11122         {0x1E, 0, 0, 0, 0},
11123         {0x1F, 0, 0, 0, 0},
11124         {0x20, 0, 0, 0, 0},
11125         {0x21, 0x88, 0x88, 0, 0},
11126         {0x22, 0x88, 0x88, 0, 0},
11127         {0x23, 0x88, 0x88, 0, 0},
11128         {0x24, 0x88, 0x88, 0, 0},
11129         {0x25, 0xc, 0xc, 0, 0},
11130         {0x26, 0, 0, 0, 0},
11131         {0x27, 0x3, 0x3, 0, 0},
11132         {0x28, 0, 0, 0, 0},
11133         {0x29, 0x3, 0x3, 0, 0},
11134         {0x2A, 0x37, 0x37, 0, 0},
11135         {0x2B, 0x3, 0x3, 0, 0},
11136         {0x2C, 0, 0, 0, 0},
11137         {0x2D, 0, 0, 0, 0},
11138         {0x2E, 0x1, 0x1, 0, 0},
11139         {0x2F, 0x1, 0x1, 0, 0},
11140         {0x30, 0, 0, 0, 0},
11141         {0x31, 0, 0, 0, 0},
11142         {0x32, 0, 0, 0, 0},
11143         {0x33, 0x11, 0x11, 0, 0},
11144         {0x34, 0xee, 0xee, 1, 1},
11145         {0x35, 0, 0, 0, 0},
11146         {0x36, 0, 0, 0, 0},
11147         {0x37, 0x3, 0x3, 0, 0},
11148         {0x38, 0x50, 0x50, 1, 1},
11149         {0x39, 0, 0, 0, 0},
11150         {0x3A, 0x50, 0x50, 1, 1},
11151         {0x3B, 0, 0, 0, 0},
11152         {0x3C, 0x6e, 0x6e, 0, 0},
11153         {0x3D, 0xf0, 0xf0, 1, 1},
11154         {0x3E, 0, 0, 0, 0},
11155         {0x3F, 0, 0, 0, 0},
11156         {0x40, 0, 0, 0, 0},
11157         {0x41, 0x3, 0x3, 0, 0},
11158         {0x42, 0x3, 0x3, 0, 0},
11159         {0x43, 0, 0, 0, 0},
11160         {0x44, 0x1e, 0x1e, 0, 0},
11161         {0x45, 0, 0, 0, 0},
11162         {0x46, 0x6e, 0x6e, 0, 0},
11163         {0x47, 0xf0, 0xf0, 1, 1},
11164         {0x48, 0, 0, 0, 0},
11165         {0x49, 0x2, 0x2, 0, 0},
11166         {0x4A, 0xff, 0xff, 1, 1},
11167         {0x4B, 0xc, 0xc, 0, 0},
11168         {0x4C, 0, 0, 0, 0},
11169         {0x4D, 0x38, 0x38, 0, 0},
11170         {0x4E, 0x70, 0x70, 1, 1},
11171         {0x4F, 0x2, 0x2, 0, 0},
11172         {0x50, 0x88, 0x88, 0, 0},
11173         {0x51, 0xc, 0xc, 0, 0},
11174         {0x52, 0, 0, 0, 0},
11175         {0x53, 0x8, 0x8, 0, 0},
11176         {0x54, 0x70, 0x70, 1, 1},
11177         {0x55, 0x2, 0x2, 0, 0},
11178         {0x56, 0xff, 0xff, 1, 1},
11179         {0x57, 0, 0, 0, 0},
11180         {0x58, 0x83, 0x83, 0, 0},
11181         {0x59, 0x77, 0x77, 1, 1},
11182         {0x5A, 0, 0, 0, 0},
11183         {0x5B, 0x2, 0x2, 0, 0},
11184         {0x5C, 0x88, 0x88, 0, 0},
11185         {0x5D, 0, 0, 0, 0},
11186         {0x5E, 0x8, 0x8, 0, 0},
11187         {0x5F, 0x77, 0x77, 1, 1},
11188         {0x60, 0x1, 0x1, 0, 0},
11189         {0x61, 0, 0, 0, 0},
11190         {0x62, 0x7, 0x7, 0, 0},
11191         {0x63, 0, 0, 0, 0},
11192         {0x64, 0x7, 0x7, 0, 0},
11193         {0x65, 0, 0, 0, 0},
11194         {0x66, 0, 0, 0, 0},
11195         {0x67, 0, 0, 1, 1},
11196         {0x68, 0, 0, 0, 0},
11197         {0x69, 0xa, 0xa, 0, 0},
11198         {0x6A, 0, 0, 0, 0},
11199         {0x6B, 0, 0, 0, 0},
11200         {0x6C, 0, 0, 0, 0},
11201         {0x6D, 0, 0, 0, 0},
11202         {0x6E, 0, 0, 0, 0},
11203         {0x6F, 0, 0, 0, 0},
11204         {0x70, 0, 0, 0, 0},
11205         {0x71, 0x2, 0x2, 0, 0},
11206         {0x72, 0, 0, 0, 0},
11207         {0x73, 0, 0, 0, 0},
11208         {0x74, 0xe, 0xe, 0, 0},
11209         {0x75, 0xe, 0xe, 0, 0},
11210         {0x76, 0xe, 0xe, 0, 0},
11211         {0x77, 0x13, 0x13, 0, 0},
11212         {0x78, 0x13, 0x13, 0, 0},
11213         {0x79, 0x1b, 0x1b, 0, 0},
11214         {0x7A, 0x1b, 0x1b, 0, 0},
11215         {0x7B, 0x55, 0x55, 0, 0},
11216         {0x7C, 0x5b, 0x5b, 0, 0},
11217         {0x7D, 0x30, 0x30, 1, 1},
11218         {0x7E, 0, 0, 0, 0},
11219         {0x7F, 0, 0, 0, 0},
11220         {0x80, 0, 0, 0, 0},
11221         {0x81, 0, 0, 0, 0},
11222         {0x82, 0, 0, 0, 0},
11223         {0x83, 0, 0, 0, 0},
11224         {0x84, 0, 0, 0, 0},
11225         {0x85, 0, 0, 0, 0},
11226         {0x86, 0, 0, 0, 0},
11227         {0x87, 0, 0, 0, 0},
11228         {0x88, 0, 0, 0, 0},
11229         {0x89, 0, 0, 0, 0},
11230         {0x8A, 0, 0, 0, 0},
11231         {0x8B, 0, 0, 0, 0},
11232         {0x8C, 0, 0, 0, 0},
11233         {0x8D, 0, 0, 0, 0},
11234         {0x8E, 0, 0, 0, 0},
11235         {0x8F, 0, 0, 0, 0},
11236         {0x90, 0, 0, 0, 0},
11237         {0x91, 0, 0, 0, 0},
11238         {0x92, 0, 0, 0, 0},
11239         {0x93, 0x70, 0x70, 0, 0},
11240         {0x94, 0x70, 0x70, 0, 0},
11241         {0x95, 0x70, 0x70, 0, 0},
11242         {0x96, 0x70, 0x70, 0, 0},
11243         {0x97, 0x70, 0x70, 0, 0},
11244         {0x98, 0x70, 0x70, 0, 0},
11245         {0x99, 0x70, 0x70, 0, 0},
11246         {0x9A, 0x70, 0x70, 0, 0},
11247         {0xFFFF, 0, 0, 0, 0},
11248 };
11249
11250 radio_regs_t regs_RX_2056_rev11[] = {
11251         {0x02, 0, 0, 0, 0},
11252         {0x03, 0, 0, 0, 0},
11253         {0x04, 0, 0, 0, 0},
11254         {0x05, 0, 0, 0, 0},
11255         {0x06, 0, 0, 0, 0},
11256         {0x07, 0, 0, 0, 0},
11257         {0x08, 0, 0, 0, 0},
11258         {0x09, 0, 0, 0, 0},
11259         {0x0A, 0, 0, 0, 0},
11260         {0x0B, 0, 0, 0, 0},
11261         {0x0C, 0, 0, 0, 0},
11262         {0x0D, 0, 0, 0, 0},
11263         {0x0E, 0, 0, 0, 0},
11264         {0x0F, 0, 0, 0, 0},
11265         {0x10, 0, 0, 0, 0},
11266         {0x11, 0, 0, 0, 0},
11267         {0x12, 0, 0, 0, 0},
11268         {0x13, 0, 0, 0, 0},
11269         {0x14, 0, 0, 0, 0},
11270         {0x15, 0, 0, 0, 0},
11271         {0x16, 0, 0, 0, 0},
11272         {0x17, 0, 0, 0, 0},
11273         {0x18, 0, 0, 0, 0},
11274         {0x19, 0, 0, 0, 0},
11275         {0x1A, 0, 0, 0, 0},
11276         {0x1B, 0, 0, 0, 0},
11277         {0x1C, 0, 0, 0, 0},
11278         {0x1D, 0, 0, 0, 0},
11279         {0x1E, 0, 0, 0, 0},
11280         {0x1F, 0, 0, 0, 0},
11281         {0x20, 0x3, 0x3, 0, 0},
11282         {0x21, 0, 0, 0, 0},
11283         {0x22, 0, 0, 0, 0},
11284         {0x23, 0x90, 0x90, 0, 0},
11285         {0x24, 0x55, 0x55, 0, 0},
11286         {0x25, 0x15, 0x15, 0, 0},
11287         {0x26, 0x5, 0x5, 0, 0},
11288         {0x27, 0x15, 0x15, 0, 0},
11289         {0x28, 0x5, 0x5, 0, 0},
11290         {0x29, 0x20, 0x20, 0, 0},
11291         {0x2A, 0x11, 0x11, 0, 0},
11292         {0x2B, 0x90, 0x90, 0, 0},
11293         {0x2C, 0, 0, 0, 0},
11294         {0x2D, 0x88, 0x88, 0, 0},
11295         {0x2E, 0x32, 0x32, 0, 0},
11296         {0x2F, 0x77, 0x77, 0, 0},
11297         {0x30, 0x17, 0x17, 1, 1},
11298         {0x31, 0xff, 0xff, 1, 1},
11299         {0x32, 0x20, 0x20, 0, 0},
11300         {0x33, 0, 0, 0, 0},
11301         {0x34, 0x88, 0x88, 0, 0},
11302         {0x35, 0x32, 0x32, 0, 0},
11303         {0x36, 0x77, 0x77, 0, 0},
11304         {0x37, 0x17, 0x17, 1, 1},
11305         {0x38, 0xf0, 0xf0, 1, 1},
11306         {0x39, 0x20, 0x20, 0, 0},
11307         {0x3A, 0x8, 0x8, 0, 0},
11308         {0x3B, 0x55, 0x55, 1, 1},
11309         {0x3C, 0, 0, 0, 0},
11310         {0x3D, 0x88, 0x88, 1, 1},
11311         {0x3E, 0, 0, 0, 0},
11312         {0x3F, 0x44, 0x44, 0, 0},
11313         {0x40, 0x7, 0x7, 1, 1},
11314         {0x41, 0x6, 0x6, 0, 0},
11315         {0x42, 0x4, 0x4, 0, 0},
11316         {0x43, 0, 0, 0, 0},
11317         {0x44, 0x8, 0x8, 0, 0},
11318         {0x45, 0x55, 0x55, 1, 1},
11319         {0x46, 0, 0, 0, 0},
11320         {0x47, 0x11, 0x11, 0, 0},
11321         {0x48, 0, 0, 0, 0},
11322         {0x49, 0x44, 0x44, 0, 0},
11323         {0x4A, 0x7, 0x7, 0, 0},
11324         {0x4B, 0x6, 0x6, 0, 0},
11325         {0x4C, 0x4, 0x4, 0, 0},
11326         {0x4D, 0, 0, 0, 0},
11327         {0x4E, 0, 0, 0, 0},
11328         {0x4F, 0x26, 0x26, 1, 1},
11329         {0x50, 0x26, 0x26, 1, 1},
11330         {0x51, 0xf, 0xf, 1, 1},
11331         {0x52, 0xf, 0xf, 1, 1},
11332         {0x53, 0x44, 0x44, 0, 0},
11333         {0x54, 0, 0, 0, 0},
11334         {0x55, 0, 0, 0, 0},
11335         {0x56, 0x8, 0x8, 0, 0},
11336         {0x57, 0x8, 0x8, 0, 0},
11337         {0x58, 0x7, 0x7, 0, 0},
11338         {0x59, 0x22, 0x22, 0, 0},
11339         {0x5A, 0x22, 0x22, 0, 0},
11340         {0x5B, 0x2, 0x2, 0, 0},
11341         {0x5C, 0x4, 0x4, 1, 1},
11342         {0x5D, 0x7, 0x7, 0, 0},
11343         {0x5E, 0x55, 0x55, 0, 0},
11344         {0x5F, 0x23, 0x23, 0, 0},
11345         {0x60, 0x41, 0x41, 0, 0},
11346         {0x61, 0x1, 0x1, 0, 0},
11347         {0x62, 0xa, 0xa, 0, 0},
11348         {0x63, 0, 0, 0, 0},
11349         {0x64, 0, 0, 0, 0},
11350         {0x65, 0, 0, 0, 0},
11351         {0x66, 0, 0, 0, 0},
11352         {0x67, 0, 0, 0, 0},
11353         {0x68, 0, 0, 0, 0},
11354         {0x69, 0, 0, 0, 0},
11355         {0x6A, 0, 0, 0, 0},
11356         {0x6B, 0xc, 0xc, 0, 0},
11357         {0x6C, 0, 0, 0, 0},
11358         {0x6D, 0, 0, 0, 0},
11359         {0x6E, 0, 0, 0, 0},
11360         {0x6F, 0, 0, 0, 0},
11361         {0x70, 0, 0, 0, 0},
11362         {0x71, 0, 0, 0, 0},
11363         {0x72, 0x22, 0x22, 0, 0},
11364         {0x73, 0x22, 0x22, 0, 0},
11365         {0x74, 0, 0, 1, 1},
11366         {0x75, 0xa, 0xa, 0, 0},
11367         {0x76, 0x1, 0x1, 0, 0},
11368         {0x77, 0x22, 0x22, 0, 0},
11369         {0x78, 0x30, 0x30, 0, 0},
11370         {0x79, 0, 0, 0, 0},
11371         {0x7A, 0, 0, 0, 0},
11372         {0x7B, 0, 0, 0, 0},
11373         {0x7C, 0, 0, 0, 0},
11374         {0x7D, 0x5, 0x5, 1, 1},
11375         {0x7E, 0, 0, 0, 0},
11376         {0x7F, 0, 0, 0, 0},
11377         {0x80, 0, 0, 0, 0},
11378         {0x81, 0, 0, 0, 0},
11379         {0x82, 0, 0, 0, 0},
11380         {0x83, 0, 0, 0, 0},
11381         {0x84, 0, 0, 0, 0},
11382         {0x85, 0, 0, 0, 0},
11383         {0x86, 0, 0, 0, 0},
11384         {0x87, 0, 0, 0, 0},
11385         {0x88, 0, 0, 0, 0},
11386         {0x89, 0, 0, 0, 0},
11387         {0x8A, 0, 0, 0, 0},
11388         {0x8B, 0, 0, 0, 0},
11389         {0x8C, 0, 0, 0, 0},
11390         {0x8D, 0, 0, 0, 0},
11391         {0x8E, 0, 0, 0, 0},
11392         {0x8F, 0, 0, 0, 0},
11393         {0x90, 0, 0, 0, 0},
11394         {0x91, 0, 0, 0, 0},
11395         {0x92, 0, 0, 0, 0},
11396         {0x93, 0, 0, 0, 0},
11397         {0x94, 0, 0, 0, 0},
11398         {0xFFFF, 0, 0, 0, 0},
11399 };
11400
11401 radio_20xx_regs_t regs_2057_rev4[] = {
11402         {0x00, 0x84, 0},
11403         {0x01, 0, 0},
11404         {0x02, 0x60, 0},
11405         {0x03, 0x1f, 0},
11406         {0x04, 0x4, 0},
11407         {0x05, 0x2, 0},
11408         {0x06, 0x1, 0},
11409         {0x07, 0x1, 0},
11410         {0x08, 0x1, 0},
11411         {0x09, 0x69, 0},
11412         {0x0A, 0x66, 0},
11413         {0x0B, 0x6, 0},
11414         {0x0C, 0x18, 0},
11415         {0x0D, 0x3, 0},
11416         {0x0E, 0x20, 1},
11417         {0x0F, 0x20, 0},
11418         {0x10, 0, 0},
11419         {0x11, 0x7c, 0},
11420         {0x12, 0x42, 0},
11421         {0x13, 0xbd, 0},
11422         {0x14, 0x7, 0},
11423         {0x15, 0xf7, 0},
11424         {0x16, 0x8, 0},
11425         {0x17, 0x17, 0},
11426         {0x18, 0x7, 0},
11427         {0x19, 0, 0},
11428         {0x1A, 0x2, 0},
11429         {0x1B, 0x13, 0},
11430         {0x1C, 0x3e, 0},
11431         {0x1D, 0x3e, 0},
11432         {0x1E, 0x96, 0},
11433         {0x1F, 0x4, 0},
11434         {0x20, 0, 0},
11435         {0x21, 0, 0},
11436         {0x22, 0x17, 0},
11437         {0x23, 0x4, 0},
11438         {0x24, 0x1, 0},
11439         {0x25, 0x6, 0},
11440         {0x26, 0x4, 0},
11441         {0x27, 0xd, 0},
11442         {0x28, 0xd, 0},
11443         {0x29, 0x30, 0},
11444         {0x2A, 0x32, 0},
11445         {0x2B, 0x8, 0},
11446         {0x2C, 0x1c, 0},
11447         {0x2D, 0x2, 0},
11448         {0x2E, 0x4, 0},
11449         {0x2F, 0x7f, 0},
11450         {0x30, 0x27, 0},
11451         {0x31, 0, 1},
11452         {0x32, 0, 1},
11453         {0x33, 0, 1},
11454         {0x34, 0, 0},
11455         {0x35, 0x26, 1},
11456         {0x36, 0x18, 0},
11457         {0x37, 0x7, 0},
11458         {0x38, 0x66, 0},
11459         {0x39, 0x66, 0},
11460         {0x3A, 0x66, 0},
11461         {0x3B, 0x66, 0},
11462         {0x3C, 0xff, 1},
11463         {0x3D, 0xff, 1},
11464         {0x3E, 0xff, 1},
11465         {0x3F, 0xff, 1},
11466         {0x40, 0x16, 0},
11467         {0x41, 0x7, 0},
11468         {0x42, 0x19, 0},
11469         {0x43, 0x7, 0},
11470         {0x44, 0x6, 0},
11471         {0x45, 0x3, 0},
11472         {0x46, 0x1, 0},
11473         {0x47, 0x7, 0},
11474         {0x48, 0x33, 0},
11475         {0x49, 0x5, 0},
11476         {0x4A, 0x77, 0},
11477         {0x4B, 0x66, 0},
11478         {0x4C, 0x66, 0},
11479         {0x4D, 0, 0},
11480         {0x4E, 0x4, 0},
11481         {0x4F, 0xc, 0},
11482         {0x50, 0, 0},
11483         {0x51, 0x75, 0},
11484         {0x56, 0x7, 0},
11485         {0x57, 0, 0},
11486         {0x58, 0, 0},
11487         {0x59, 0xa8, 0},
11488         {0x5A, 0, 0},
11489         {0x5B, 0x1f, 0},
11490         {0x5C, 0x30, 0},
11491         {0x5D, 0x1, 0},
11492         {0x5E, 0x30, 0},
11493         {0x5F, 0x70, 0},
11494         {0x60, 0, 0},
11495         {0x61, 0, 0},
11496         {0x62, 0x33, 1},
11497         {0x63, 0x19, 0},
11498         {0x64, 0x62, 0},
11499         {0x65, 0, 0},
11500         {0x66, 0x11, 0},
11501         {0x69, 0, 0},
11502         {0x6A, 0x7e, 0},
11503         {0x6B, 0x3f, 0},
11504         {0x6C, 0x7f, 0},
11505         {0x6D, 0x78, 0},
11506         {0x6E, 0xc8, 0},
11507         {0x6F, 0x88, 0},
11508         {0x70, 0x8, 0},
11509         {0x71, 0xf, 0},
11510         {0x72, 0xbc, 0},
11511         {0x73, 0x8, 0},
11512         {0x74, 0x60, 0},
11513         {0x75, 0x1e, 0},
11514         {0x76, 0x70, 0},
11515         {0x77, 0, 0},
11516         {0x78, 0, 0},
11517         {0x79, 0, 0},
11518         {0x7A, 0x33, 0},
11519         {0x7B, 0x1e, 0},
11520         {0x7C, 0x62, 0},
11521         {0x7D, 0x11, 0},
11522         {0x80, 0x3c, 0},
11523         {0x81, 0x9c, 0},
11524         {0x82, 0xa, 0},
11525         {0x83, 0x9d, 0},
11526         {0x84, 0xa, 0},
11527         {0x85, 0, 0},
11528         {0x86, 0x40, 0},
11529         {0x87, 0x40, 0},
11530         {0x88, 0x88, 0},
11531         {0x89, 0x10, 0},
11532         {0x8A, 0xf0, 1},
11533         {0x8B, 0x10, 1},
11534         {0x8C, 0xf0, 1},
11535         {0x8D, 0, 0},
11536         {0x8E, 0, 0},
11537         {0x8F, 0x10, 0},
11538         {0x90, 0x55, 0},
11539         {0x91, 0x3f, 1},
11540         {0x92, 0x36, 1},
11541         {0x93, 0, 0},
11542         {0x94, 0, 0},
11543         {0x95, 0, 0},
11544         {0x96, 0x87, 0},
11545         {0x97, 0x11, 0},
11546         {0x98, 0, 0},
11547         {0x99, 0x33, 0},
11548         {0x9A, 0x88, 0},
11549         {0x9B, 0, 0},
11550         {0x9C, 0x87, 0},
11551         {0x9D, 0x11, 0},
11552         {0x9E, 0, 0},
11553         {0x9F, 0x33, 0},
11554         {0xA0, 0x88, 0},
11555         {0xA1, 0xe1, 0},
11556         {0xA2, 0x3f, 0},
11557         {0xA3, 0x44, 0},
11558         {0xA4, 0x8c, 1},
11559         {0xA5, 0x6d, 0},
11560         {0xA6, 0x22, 0},
11561         {0xA7, 0xbe, 0},
11562         {0xA8, 0x55, 1},
11563         {0xA9, 0xc, 0},
11564         {0xAA, 0xc, 0},
11565         {0xAB, 0xaa, 0},
11566         {0xAC, 0x2, 0},
11567         {0xAD, 0, 0},
11568         {0xAE, 0x10, 0},
11569         {0xAF, 0x1, 1},
11570         {0xB0, 0, 0},
11571         {0xB1, 0, 0},
11572         {0xB2, 0x80, 0},
11573         {0xB3, 0x60, 0},
11574         {0xB4, 0x44, 0},
11575         {0xB5, 0x55, 0},
11576         {0xB6, 0x1, 0},
11577         {0xB7, 0x55, 0},
11578         {0xB8, 0x1, 0},
11579         {0xB9, 0x5, 0},
11580         {0xBA, 0x55, 0},
11581         {0xBB, 0x55, 0},
11582         {0xC1, 0, 0},
11583         {0xC2, 0, 0},
11584         {0xC3, 0, 0},
11585         {0xC4, 0, 0},
11586         {0xC5, 0, 0},
11587         {0xC6, 0, 0},
11588         {0xC7, 0, 0},
11589         {0xC8, 0, 0},
11590         {0xC9, 0, 0},
11591         {0xCA, 0, 0},
11592         {0xCB, 0, 0},
11593         {0xCC, 0, 0},
11594         {0xCD, 0, 0},
11595         {0xCE, 0x5e, 0},
11596         {0xCF, 0xc, 0},
11597         {0xD0, 0xc, 0},
11598         {0xD1, 0xc, 0},
11599         {0xD2, 0, 0},
11600         {0xD3, 0x2b, 0},
11601         {0xD4, 0xc, 0},
11602         {0xD5, 0, 0},
11603         {0xD6, 0x75, 0},
11604         {0xDB, 0x7, 0},
11605         {0xDC, 0, 0},
11606         {0xDD, 0, 0},
11607         {0xDE, 0xa8, 0},
11608         {0xDF, 0, 0},
11609         {0xE0, 0x1f, 0},
11610         {0xE1, 0x30, 0},
11611         {0xE2, 0x1, 0},
11612         {0xE3, 0x30, 0},
11613         {0xE4, 0x70, 0},
11614         {0xE5, 0, 0},
11615         {0xE6, 0, 0},
11616         {0xE7, 0x33, 0},
11617         {0xE8, 0x19, 0},
11618         {0xE9, 0x62, 0},
11619         {0xEA, 0, 0},
11620         {0xEB, 0x11, 0},
11621         {0xEE, 0, 0},
11622         {0xEF, 0x7e, 0},
11623         {0xF0, 0x3f, 0},
11624         {0xF1, 0x7f, 0},
11625         {0xF2, 0x78, 0},
11626         {0xF3, 0xc8, 0},
11627         {0xF4, 0x88, 0},
11628         {0xF5, 0x8, 0},
11629         {0xF6, 0xf, 0},
11630         {0xF7, 0xbc, 0},
11631         {0xF8, 0x8, 0},
11632         {0xF9, 0x60, 0},
11633         {0xFA, 0x1e, 0},
11634         {0xFB, 0x70, 0},
11635         {0xFC, 0, 0},
11636         {0xFD, 0, 0},
11637         {0xFE, 0, 0},
11638         {0xFF, 0x33, 0},
11639         {0x100, 0x1e, 0},
11640         {0x101, 0x62, 0},
11641         {0x102, 0x11, 0},
11642         {0x105, 0x3c, 0},
11643         {0x106, 0x9c, 0},
11644         {0x107, 0xa, 0},
11645         {0x108, 0x9d, 0},
11646         {0x109, 0xa, 0},
11647         {0x10A, 0, 0},
11648         {0x10B, 0x40, 0},
11649         {0x10C, 0x40, 0},
11650         {0x10D, 0x88, 0},
11651         {0x10E, 0x10, 0},
11652         {0x10F, 0xf0, 1},
11653         {0x110, 0x10, 1},
11654         {0x111, 0xf0, 1},
11655         {0x112, 0, 0},
11656         {0x113, 0, 0},
11657         {0x114, 0x10, 0},
11658         {0x115, 0x55, 0},
11659         {0x116, 0x3f, 1},
11660         {0x117, 0x36, 1},
11661         {0x118, 0, 0},
11662         {0x119, 0, 0},
11663         {0x11A, 0, 0},
11664         {0x11B, 0x87, 0},
11665         {0x11C, 0x11, 0},
11666         {0x11D, 0, 0},
11667         {0x11E, 0x33, 0},
11668         {0x11F, 0x88, 0},
11669         {0x120, 0, 0},
11670         {0x121, 0x87, 0},
11671         {0x122, 0x11, 0},
11672         {0x123, 0, 0},
11673         {0x124, 0x33, 0},
11674         {0x125, 0x88, 0},
11675         {0x126, 0xe1, 0},
11676         {0x127, 0x3f, 0},
11677         {0x128, 0x44, 0},
11678         {0x129, 0x8c, 1},
11679         {0x12A, 0x6d, 0},
11680         {0x12B, 0x22, 0},
11681         {0x12C, 0xbe, 0},
11682         {0x12D, 0x55, 1},
11683         {0x12E, 0xc, 0},
11684         {0x12F, 0xc, 0},
11685         {0x130, 0xaa, 0},
11686         {0x131, 0x2, 0},
11687         {0x132, 0, 0},
11688         {0x133, 0x10, 0},
11689         {0x134, 0x1, 1},
11690         {0x135, 0, 0},
11691         {0x136, 0, 0},
11692         {0x137, 0x80, 0},
11693         {0x138, 0x60, 0},
11694         {0x139, 0x44, 0},
11695         {0x13A, 0x55, 0},
11696         {0x13B, 0x1, 0},
11697         {0x13C, 0x55, 0},
11698         {0x13D, 0x1, 0},
11699         {0x13E, 0x5, 0},
11700         {0x13F, 0x55, 0},
11701         {0x140, 0x55, 0},
11702         {0x146, 0, 0},
11703         {0x147, 0, 0},
11704         {0x148, 0, 0},
11705         {0x149, 0, 0},
11706         {0x14A, 0, 0},
11707         {0x14B, 0, 0},
11708         {0x14C, 0, 0},
11709         {0x14D, 0, 0},
11710         {0x14E, 0, 0},
11711         {0x14F, 0, 0},
11712         {0x150, 0, 0},
11713         {0x151, 0, 0},
11714         {0x152, 0, 0},
11715         {0x153, 0, 0},
11716         {0x154, 0xc, 0},
11717         {0x155, 0xc, 0},
11718         {0x156, 0xc, 0},
11719         {0x157, 0, 0},
11720         {0x158, 0x2b, 0},
11721         {0x159, 0x84, 0},
11722         {0x15A, 0x15, 0},
11723         {0x15B, 0xf, 0},
11724         {0x15C, 0, 0},
11725         {0x15D, 0, 0},
11726         {0x15E, 0, 1},
11727         {0x15F, 0, 1},
11728         {0x160, 0, 1},
11729         {0x161, 0, 1},
11730         {0x162, 0, 1},
11731         {0x163, 0, 1},
11732         {0x164, 0, 0},
11733         {0x165, 0, 0},
11734         {0x166, 0, 0},
11735         {0x167, 0, 0},
11736         {0x168, 0, 0},
11737         {0x169, 0x2, 1},
11738         {0x16A, 0, 1},
11739         {0x16B, 0, 1},
11740         {0x16C, 0, 1},
11741         {0x16D, 0, 0},
11742         {0x170, 0, 0},
11743         {0x171, 0x77, 0},
11744         {0x172, 0x77, 0},
11745         {0x173, 0x77, 0},
11746         {0x174, 0x77, 0},
11747         {0x175, 0, 0},
11748         {0x176, 0x3, 0},
11749         {0x177, 0x37, 0},
11750         {0x178, 0x3, 0},
11751         {0x179, 0, 0},
11752         {0x17A, 0x21, 0},
11753         {0x17B, 0x21, 0},
11754         {0x17C, 0, 0},
11755         {0x17D, 0xaa, 0},
11756         {0x17E, 0, 0},
11757         {0x17F, 0xaa, 0},
11758         {0x180, 0, 0},
11759         {0x190, 0, 0},
11760         {0x191, 0x77, 0},
11761         {0x192, 0x77, 0},
11762         {0x193, 0x77, 0},
11763         {0x194, 0x77, 0},
11764         {0x195, 0, 0},
11765         {0x196, 0x3, 0},
11766         {0x197, 0x37, 0},
11767         {0x198, 0x3, 0},
11768         {0x199, 0, 0},
11769         {0x19A, 0x21, 0},
11770         {0x19B, 0x21, 0},
11771         {0x19C, 0, 0},
11772         {0x19D, 0xaa, 0},
11773         {0x19E, 0, 0},
11774         {0x19F, 0xaa, 0},
11775         {0x1A0, 0, 0},
11776         {0x1A1, 0x2, 0},
11777         {0x1A2, 0xf, 0},
11778         {0x1A3, 0xf, 0},
11779         {0x1A4, 0, 1},
11780         {0x1A5, 0, 1},
11781         {0x1A6, 0, 1},
11782         {0x1A7, 0x2, 0},
11783         {0x1A8, 0xf, 0},
11784         {0x1A9, 0xf, 0},
11785         {0x1AA, 0, 1},
11786         {0x1AB, 0, 1},
11787         {0x1AC, 0, 1},
11788         {0xFFFF, 0, 0},
11789 };
11790
11791 radio_20xx_regs_t regs_2057_rev5[] = {
11792         {0x00, 0, 1},
11793         {0x01, 0x57, 1},
11794         {0x02, 0x20, 1},
11795         {0x03, 0x1f, 0},
11796         {0x04, 0x4, 0},
11797         {0x05, 0x2, 0},
11798         {0x06, 0x1, 0},
11799         {0x07, 0x1, 0},
11800         {0x08, 0x1, 0},
11801         {0x09, 0x69, 0},
11802         {0x0A, 0x66, 0},
11803         {0x0B, 0x6, 0},
11804         {0x0C, 0x18, 0},
11805         {0x0D, 0x3, 0},
11806         {0x0E, 0x20, 0},
11807         {0x0F, 0x20, 0},
11808         {0x10, 0, 0},
11809         {0x11, 0x7c, 0},
11810         {0x12, 0x42, 0},
11811         {0x13, 0xbd, 0},
11812         {0x14, 0x7, 0},
11813         {0x15, 0x87, 0},
11814         {0x16, 0x8, 0},
11815         {0x17, 0x17, 0},
11816         {0x18, 0x7, 0},
11817         {0x19, 0, 0},
11818         {0x1A, 0x2, 0},
11819         {0x1B, 0x13, 0},
11820         {0x1C, 0x3e, 0},
11821         {0x1D, 0x3e, 0},
11822         {0x1E, 0x96, 0},
11823         {0x1F, 0x4, 0},
11824         {0x20, 0, 0},
11825         {0x21, 0, 0},
11826         {0x22, 0x17, 0},
11827         {0x23, 0x6, 1},
11828         {0x24, 0x1, 0},
11829         {0x25, 0x6, 0},
11830         {0x26, 0x4, 0},
11831         {0x27, 0xd, 0},
11832         {0x28, 0xd, 0},
11833         {0x29, 0x30, 0},
11834         {0x2A, 0x32, 0},
11835         {0x2B, 0x8, 0},
11836         {0x2C, 0x1c, 0},
11837         {0x2D, 0x2, 0},
11838         {0x2E, 0x4, 0},
11839         {0x2F, 0x7f, 0},
11840         {0x30, 0x27, 0},
11841         {0x31, 0, 1},
11842         {0x32, 0, 1},
11843         {0x33, 0, 1},
11844         {0x34, 0, 0},
11845         {0x35, 0x20, 0},
11846         {0x36, 0x18, 0},
11847         {0x37, 0x7, 0},
11848         {0x38, 0x66, 0},
11849         {0x39, 0x66, 0},
11850         {0x3C, 0xff, 0},
11851         {0x3D, 0xff, 0},
11852         {0x40, 0x16, 0},
11853         {0x41, 0x7, 0},
11854         {0x45, 0x3, 0},
11855         {0x46, 0x1, 0},
11856         {0x47, 0x7, 0},
11857         {0x4B, 0x66, 0},
11858         {0x4C, 0x66, 0},
11859         {0x4D, 0, 0},
11860         {0x4E, 0x4, 0},
11861         {0x4F, 0xc, 0},
11862         {0x50, 0, 0},
11863         {0x51, 0x70, 1},
11864         {0x56, 0x7, 0},
11865         {0x57, 0, 0},
11866         {0x58, 0, 0},
11867         {0x59, 0x88, 1},
11868         {0x5A, 0, 0},
11869         {0x5B, 0x1f, 0},
11870         {0x5C, 0x20, 1},
11871         {0x5D, 0x1, 0},
11872         {0x5E, 0x30, 0},
11873         {0x5F, 0x70, 0},
11874         {0x60, 0, 0},
11875         {0x61, 0, 0},
11876         {0x62, 0x33, 1},
11877         {0x63, 0xf, 1},
11878         {0x64, 0xf, 1},
11879         {0x65, 0, 0},
11880         {0x66, 0x11, 0},
11881         {0x80, 0x3c, 0},
11882         {0x81, 0x1, 1},
11883         {0x82, 0xa, 0},
11884         {0x85, 0, 0},
11885         {0x86, 0x40, 0},
11886         {0x87, 0x40, 0},
11887         {0x88, 0x88, 0},
11888         {0x89, 0x10, 0},
11889         {0x8A, 0xf0, 0},
11890         {0x8B, 0x10, 0},
11891         {0x8C, 0xf0, 0},
11892         {0x8F, 0x10, 0},
11893         {0x90, 0x55, 0},
11894         {0x91, 0x3f, 1},
11895         {0x92, 0x36, 1},
11896         {0x93, 0, 0},
11897         {0x94, 0, 0},
11898         {0x95, 0, 0},
11899         {0x96, 0x87, 0},
11900         {0x97, 0x11, 0},
11901         {0x98, 0, 0},
11902         {0x99, 0x33, 0},
11903         {0x9A, 0x88, 0},
11904         {0xA1, 0x20, 1},
11905         {0xA2, 0x3f, 0},
11906         {0xA3, 0x44, 0},
11907         {0xA4, 0x8c, 0},
11908         {0xA5, 0x6c, 0},
11909         {0xA6, 0x22, 0},
11910         {0xA7, 0xbe, 0},
11911         {0xA8, 0x55, 0},
11912         {0xAA, 0xc, 0},
11913         {0xAB, 0xaa, 0},
11914         {0xAC, 0x2, 0},
11915         {0xAD, 0, 0},
11916         {0xAE, 0x10, 0},
11917         {0xAF, 0x1, 0},
11918         {0xB0, 0, 0},
11919         {0xB1, 0, 0},
11920         {0xB2, 0x80, 0},
11921         {0xB3, 0x60, 0},
11922         {0xB4, 0x44, 0},
11923         {0xB5, 0x55, 0},
11924         {0xB6, 0x1, 0},
11925         {0xB7, 0x55, 0},
11926         {0xB8, 0x1, 0},
11927         {0xB9, 0x5, 0},
11928         {0xBA, 0x55, 0},
11929         {0xBB, 0x55, 0},
11930         {0xC3, 0, 0},
11931         {0xC4, 0, 0},
11932         {0xC5, 0, 0},
11933         {0xC6, 0, 0},
11934         {0xC7, 0, 0},
11935         {0xC8, 0, 0},
11936         {0xC9, 0, 0},
11937         {0xCA, 0, 0},
11938         {0xCB, 0, 0},
11939         {0xCD, 0, 0},
11940         {0xCE, 0x5e, 0},
11941         {0xCF, 0xc, 0},
11942         {0xD0, 0xc, 0},
11943         {0xD1, 0xc, 0},
11944         {0xD2, 0, 0},
11945         {0xD3, 0x2b, 0},
11946         {0xD4, 0xc, 0},
11947         {0xD5, 0, 0},
11948         {0xD6, 0x70, 1},
11949         {0xDB, 0x7, 0},
11950         {0xDC, 0, 0},
11951         {0xDD, 0, 0},
11952         {0xDE, 0x88, 1},
11953         {0xDF, 0, 0},
11954         {0xE0, 0x1f, 0},
11955         {0xE1, 0x20, 1},
11956         {0xE2, 0x1, 0},
11957         {0xE3, 0x30, 0},
11958         {0xE4, 0x70, 0},
11959         {0xE5, 0, 0},
11960         {0xE6, 0, 0},
11961         {0xE7, 0x33, 0},
11962         {0xE8, 0xf, 1},
11963         {0xE9, 0xf, 1},
11964         {0xEA, 0, 0},
11965         {0xEB, 0x11, 0},
11966         {0x105, 0x3c, 0},
11967         {0x106, 0x1, 1},
11968         {0x107, 0xa, 0},
11969         {0x10A, 0, 0},
11970         {0x10B, 0x40, 0},
11971         {0x10C, 0x40, 0},
11972         {0x10D, 0x88, 0},
11973         {0x10E, 0x10, 0},
11974         {0x10F, 0xf0, 0},
11975         {0x110, 0x10, 0},
11976         {0x111, 0xf0, 0},
11977         {0x114, 0x10, 0},
11978         {0x115, 0x55, 0},
11979         {0x116, 0x3f, 1},
11980         {0x117, 0x36, 1},
11981         {0x118, 0, 0},
11982         {0x119, 0, 0},
11983         {0x11A, 0, 0},
11984         {0x11B, 0x87, 0},
11985         {0x11C, 0x11, 0},
11986         {0x11D, 0, 0},
11987         {0x11E, 0x33, 0},
11988         {0x11F, 0x88, 0},
11989         {0x126, 0x20, 1},
11990         {0x127, 0x3f, 0},
11991         {0x128, 0x44, 0},
11992         {0x129, 0x8c, 0},
11993         {0x12A, 0x6c, 0},
11994         {0x12B, 0x22, 0},
11995         {0x12C, 0xbe, 0},
11996         {0x12D, 0x55, 0},
11997         {0x12F, 0xc, 0},
11998         {0x130, 0xaa, 0},
11999         {0x131, 0x2, 0},
12000         {0x132, 0, 0},
12001         {0x133, 0x10, 0},
12002         {0x134, 0x1, 0},
12003         {0x135, 0, 0},
12004         {0x136, 0, 0},
12005         {0x137, 0x80, 0},
12006         {0x138, 0x60, 0},
12007         {0x139, 0x44, 0},
12008         {0x13A, 0x55, 0},
12009         {0x13B, 0x1, 0},
12010         {0x13C, 0x55, 0},
12011         {0x13D, 0x1, 0},
12012         {0x13E, 0x5, 0},
12013         {0x13F, 0x55, 0},
12014         {0x140, 0x55, 0},
12015         {0x148, 0, 0},
12016         {0x149, 0, 0},
12017         {0x14A, 0, 0},
12018         {0x14B, 0, 0},
12019         {0x14C, 0, 0},
12020         {0x14D, 0, 0},
12021         {0x14E, 0, 0},
12022         {0x14F, 0, 0},
12023         {0x150, 0, 0},
12024         {0x154, 0xc, 0},
12025         {0x155, 0xc, 0},
12026         {0x156, 0xc, 0},
12027         {0x157, 0, 0},
12028         {0x158, 0x2b, 0},
12029         {0x159, 0x84, 0},
12030         {0x15A, 0x15, 0},
12031         {0x15B, 0xf, 0},
12032         {0x15C, 0, 0},
12033         {0x15D, 0, 0},
12034         {0x15E, 0, 1},
12035         {0x15F, 0, 1},
12036         {0x160, 0, 1},
12037         {0x161, 0, 1},
12038         {0x162, 0, 1},
12039         {0x163, 0, 1},
12040         {0x164, 0, 0},
12041         {0x165, 0, 0},
12042         {0x166, 0, 0},
12043         {0x167, 0, 0},
12044         {0x168, 0, 0},
12045         {0x169, 0, 0},
12046         {0x16A, 0, 1},
12047         {0x16B, 0, 1},
12048         {0x16C, 0, 1},
12049         {0x16D, 0, 0},
12050         {0x170, 0, 0},
12051         {0x171, 0x77, 0},
12052         {0x172, 0x77, 0},
12053         {0x173, 0x77, 0},
12054         {0x174, 0x77, 0},
12055         {0x175, 0, 0},
12056         {0x176, 0x3, 0},
12057         {0x177, 0x37, 0},
12058         {0x178, 0x3, 0},
12059         {0x179, 0, 0},
12060         {0x17B, 0x21, 0},
12061         {0x17C, 0, 0},
12062         {0x17D, 0xaa, 0},
12063         {0x17E, 0, 0},
12064         {0x190, 0, 0},
12065         {0x191, 0x77, 0},
12066         {0x192, 0x77, 0},
12067         {0x193, 0x77, 0},
12068         {0x194, 0x77, 0},
12069         {0x195, 0, 0},
12070         {0x196, 0x3, 0},
12071         {0x197, 0x37, 0},
12072         {0x198, 0x3, 0},
12073         {0x199, 0, 0},
12074         {0x19B, 0x21, 0},
12075         {0x19C, 0, 0},
12076         {0x19D, 0xaa, 0},
12077         {0x19E, 0, 0},
12078         {0x1A1, 0x2, 0},
12079         {0x1A2, 0xf, 0},
12080         {0x1A3, 0xf, 0},
12081         {0x1A4, 0, 1},
12082         {0x1A5, 0, 1},
12083         {0x1A6, 0, 1},
12084         {0x1A7, 0x2, 0},
12085         {0x1A8, 0xf, 0},
12086         {0x1A9, 0xf, 0},
12087         {0x1AA, 0, 1},
12088         {0x1AB, 0, 1},
12089         {0x1AC, 0, 1},
12090         {0x1AD, 0x84, 0},
12091         {0x1AE, 0x60, 0},
12092         {0x1AF, 0x47, 0},
12093         {0x1B0, 0x47, 0},
12094         {0x1B1, 0, 0},
12095         {0x1B2, 0, 0},
12096         {0x1B3, 0, 0},
12097         {0x1B4, 0, 0},
12098         {0x1B5, 0, 0},
12099         {0x1B6, 0, 0},
12100         {0x1B7, 0xc, 1},
12101         {0x1B8, 0, 0},
12102         {0x1B9, 0, 0},
12103         {0x1BA, 0, 0},
12104         {0x1BB, 0, 0},
12105         {0x1BC, 0, 0},
12106         {0x1BD, 0, 0},
12107         {0x1BE, 0, 0},
12108         {0x1BF, 0, 0},
12109         {0x1C0, 0, 0},
12110         {0x1C1, 0x1, 1},
12111         {0x1C2, 0x80, 1},
12112         {0x1C3, 0, 0},
12113         {0x1C4, 0, 0},
12114         {0x1C5, 0, 0},
12115         {0x1C6, 0, 0},
12116         {0x1C7, 0, 0},
12117         {0x1C8, 0, 0},
12118         {0x1C9, 0, 0},
12119         {0x1CA, 0, 0},
12120         {0xFFFF, 0, 0}
12121 };
12122
12123 radio_20xx_regs_t regs_2057_rev5v1[] = {
12124         {0x00, 0x15, 1},
12125         {0x01, 0x57, 1},
12126         {0x02, 0x20, 1},
12127         {0x03, 0x1f, 0},
12128         {0x04, 0x4, 0},
12129         {0x05, 0x2, 0},
12130         {0x06, 0x1, 0},
12131         {0x07, 0x1, 0},
12132         {0x08, 0x1, 0},
12133         {0x09, 0x69, 0},
12134         {0x0A, 0x66, 0},
12135         {0x0B, 0x6, 0},
12136         {0x0C, 0x18, 0},
12137         {0x0D, 0x3, 0},
12138         {0x0E, 0x20, 0},
12139         {0x0F, 0x20, 0},
12140         {0x10, 0, 0},
12141         {0x11, 0x7c, 0},
12142         {0x12, 0x42, 0},
12143         {0x13, 0xbd, 0},
12144         {0x14, 0x7, 0},
12145         {0x15, 0x87, 0},
12146         {0x16, 0x8, 0},
12147         {0x17, 0x17, 0},
12148         {0x18, 0x7, 0},
12149         {0x19, 0, 0},
12150         {0x1A, 0x2, 0},
12151         {0x1B, 0x13, 0},
12152         {0x1C, 0x3e, 0},
12153         {0x1D, 0x3e, 0},
12154         {0x1E, 0x96, 0},
12155         {0x1F, 0x4, 0},
12156         {0x20, 0, 0},
12157         {0x21, 0, 0},
12158         {0x22, 0x17, 0},
12159         {0x23, 0x6, 1},
12160         {0x24, 0x1, 0},
12161         {0x25, 0x6, 0},
12162         {0x26, 0x4, 0},
12163         {0x27, 0xd, 0},
12164         {0x28, 0xd, 0},
12165         {0x29, 0x30, 0},
12166         {0x2A, 0x32, 0},
12167         {0x2B, 0x8, 0},
12168         {0x2C, 0x1c, 0},
12169         {0x2D, 0x2, 0},
12170         {0x2E, 0x4, 0},
12171         {0x2F, 0x7f, 0},
12172         {0x30, 0x27, 0},
12173         {0x31, 0, 1},
12174         {0x32, 0, 1},
12175         {0x33, 0, 1},
12176         {0x34, 0, 0},
12177         {0x35, 0x20, 0},
12178         {0x36, 0x18, 0},
12179         {0x37, 0x7, 0},
12180         {0x38, 0x66, 0},
12181         {0x39, 0x66, 0},
12182         {0x3C, 0xff, 0},
12183         {0x3D, 0xff, 0},
12184         {0x40, 0x16, 0},
12185         {0x41, 0x7, 0},
12186         {0x45, 0x3, 0},
12187         {0x46, 0x1, 0},
12188         {0x47, 0x7, 0},
12189         {0x4B, 0x66, 0},
12190         {0x4C, 0x66, 0},
12191         {0x4D, 0, 0},
12192         {0x4E, 0x4, 0},
12193         {0x4F, 0xc, 0},
12194         {0x50, 0, 0},
12195         {0x51, 0x70, 1},
12196         {0x56, 0x7, 0},
12197         {0x57, 0, 0},
12198         {0x58, 0, 0},
12199         {0x59, 0x88, 1},
12200         {0x5A, 0, 0},
12201         {0x5B, 0x1f, 0},
12202         {0x5C, 0x20, 1},
12203         {0x5D, 0x1, 0},
12204         {0x5E, 0x30, 0},
12205         {0x5F, 0x70, 0},
12206         {0x60, 0, 0},
12207         {0x61, 0, 0},
12208         {0x62, 0x33, 1},
12209         {0x63, 0xf, 1},
12210         {0x64, 0xf, 1},
12211         {0x65, 0, 0},
12212         {0x66, 0x11, 0},
12213         {0x80, 0x3c, 0},
12214         {0x81, 0x1, 1},
12215         {0x82, 0xa, 0},
12216         {0x85, 0, 0},
12217         {0x86, 0x40, 0},
12218         {0x87, 0x40, 0},
12219         {0x88, 0x88, 0},
12220         {0x89, 0x10, 0},
12221         {0x8A, 0xf0, 0},
12222         {0x8B, 0x10, 0},
12223         {0x8C, 0xf0, 0},
12224         {0x8F, 0x10, 0},
12225         {0x90, 0x55, 0},
12226         {0x91, 0x3f, 1},
12227         {0x92, 0x36, 1},
12228         {0x93, 0, 0},
12229         {0x94, 0, 0},
12230         {0x95, 0, 0},
12231         {0x96, 0x87, 0},
12232         {0x97, 0x11, 0},
12233         {0x98, 0, 0},
12234         {0x99, 0x33, 0},
12235         {0x9A, 0x88, 0},
12236         {0xA1, 0x20, 1},
12237         {0xA2, 0x3f, 0},
12238         {0xA3, 0x44, 0},
12239         {0xA4, 0x8c, 0},
12240         {0xA5, 0x6c, 0},
12241         {0xA6, 0x22, 0},
12242         {0xA7, 0xbe, 0},
12243         {0xA8, 0x55, 0},
12244         {0xAA, 0xc, 0},
12245         {0xAB, 0xaa, 0},
12246         {0xAC, 0x2, 0},
12247         {0xAD, 0, 0},
12248         {0xAE, 0x10, 0},
12249         {0xAF, 0x1, 0},
12250         {0xB0, 0, 0},
12251         {0xB1, 0, 0},
12252         {0xB2, 0x80, 0},
12253         {0xB3, 0x60, 0},
12254         {0xB4, 0x44, 0},
12255         {0xB5, 0x55, 0},
12256         {0xB6, 0x1, 0},
12257         {0xB7, 0x55, 0},
12258         {0xB8, 0x1, 0},
12259         {0xB9, 0x5, 0},
12260         {0xBA, 0x55, 0},
12261         {0xBB, 0x55, 0},
12262         {0xC3, 0, 0},
12263         {0xC4, 0, 0},
12264         {0xC5, 0, 0},
12265         {0xC6, 0, 0},
12266         {0xC7, 0, 0},
12267         {0xC8, 0, 0},
12268         {0xC9, 0x1, 1},
12269         {0xCA, 0, 0},
12270         {0xCB, 0, 0},
12271         {0xCD, 0, 0},
12272         {0xCE, 0x5e, 0},
12273         {0xCF, 0xc, 0},
12274         {0xD0, 0xc, 0},
12275         {0xD1, 0xc, 0},
12276         {0xD2, 0, 0},
12277         {0xD3, 0x2b, 0},
12278         {0xD4, 0xc, 0},
12279         {0xD5, 0, 0},
12280         {0xD6, 0x70, 1},
12281         {0xDB, 0x7, 0},
12282         {0xDC, 0, 0},
12283         {0xDD, 0, 0},
12284         {0xDE, 0x88, 1},
12285         {0xDF, 0, 0},
12286         {0xE0, 0x1f, 0},
12287         {0xE1, 0x20, 1},
12288         {0xE2, 0x1, 0},
12289         {0xE3, 0x30, 0},
12290         {0xE4, 0x70, 0},
12291         {0xE5, 0, 0},
12292         {0xE6, 0, 0},
12293         {0xE7, 0x33, 0},
12294         {0xE8, 0xf, 1},
12295         {0xE9, 0xf, 1},
12296         {0xEA, 0, 0},
12297         {0xEB, 0x11, 0},
12298         {0x105, 0x3c, 0},
12299         {0x106, 0x1, 1},
12300         {0x107, 0xa, 0},
12301         {0x10A, 0, 0},
12302         {0x10B, 0x40, 0},
12303         {0x10C, 0x40, 0},
12304         {0x10D, 0x88, 0},
12305         {0x10E, 0x10, 0},
12306         {0x10F, 0xf0, 0},
12307         {0x110, 0x10, 0},
12308         {0x111, 0xf0, 0},
12309         {0x114, 0x10, 0},
12310         {0x115, 0x55, 0},
12311         {0x116, 0x3f, 1},
12312         {0x117, 0x36, 1},
12313         {0x118, 0, 0},
12314         {0x119, 0, 0},
12315         {0x11A, 0, 0},
12316         {0x11B, 0x87, 0},
12317         {0x11C, 0x11, 0},
12318         {0x11D, 0, 0},
12319         {0x11E, 0x33, 0},
12320         {0x11F, 0x88, 0},
12321         {0x126, 0x20, 1},
12322         {0x127, 0x3f, 0},
12323         {0x128, 0x44, 0},
12324         {0x129, 0x8c, 0},
12325         {0x12A, 0x6c, 0},
12326         {0x12B, 0x22, 0},
12327         {0x12C, 0xbe, 0},
12328         {0x12D, 0x55, 0},
12329         {0x12F, 0xc, 0},
12330         {0x130, 0xaa, 0},
12331         {0x131, 0x2, 0},
12332         {0x132, 0, 0},
12333         {0x133, 0x10, 0},
12334         {0x134, 0x1, 0},
12335         {0x135, 0, 0},
12336         {0x136, 0, 0},
12337         {0x137, 0x80, 0},
12338         {0x138, 0x60, 0},
12339         {0x139, 0x44, 0},
12340         {0x13A, 0x55, 0},
12341         {0x13B, 0x1, 0},
12342         {0x13C, 0x55, 0},
12343         {0x13D, 0x1, 0},
12344         {0x13E, 0x5, 0},
12345         {0x13F, 0x55, 0},
12346         {0x140, 0x55, 0},
12347         {0x148, 0, 0},
12348         {0x149, 0, 0},
12349         {0x14A, 0, 0},
12350         {0x14B, 0, 0},
12351         {0x14C, 0, 0},
12352         {0x14D, 0, 0},
12353         {0x14E, 0x1, 1},
12354         {0x14F, 0, 0},
12355         {0x150, 0, 0},
12356         {0x154, 0xc, 0},
12357         {0x155, 0xc, 0},
12358         {0x156, 0xc, 0},
12359         {0x157, 0, 0},
12360         {0x158, 0x2b, 0},
12361         {0x159, 0x84, 0},
12362         {0x15A, 0x15, 0},
12363         {0x15B, 0xf, 0},
12364         {0x15C, 0, 0},
12365         {0x15D, 0, 0},
12366         {0x15E, 0, 1},
12367         {0x15F, 0, 1},
12368         {0x160, 0, 1},
12369         {0x161, 0, 1},
12370         {0x162, 0, 1},
12371         {0x163, 0, 1},
12372         {0x164, 0, 0},
12373         {0x165, 0, 0},
12374         {0x166, 0, 0},
12375         {0x167, 0, 0},
12376         {0x168, 0, 0},
12377         {0x169, 0, 0},
12378         {0x16A, 0, 1},
12379         {0x16B, 0, 1},
12380         {0x16C, 0, 1},
12381         {0x16D, 0, 0},
12382         {0x170, 0, 0},
12383         {0x171, 0x77, 0},
12384         {0x172, 0x77, 0},
12385         {0x173, 0x77, 0},
12386         {0x174, 0x77, 0},
12387         {0x175, 0, 0},
12388         {0x176, 0x3, 0},
12389         {0x177, 0x37, 0},
12390         {0x178, 0x3, 0},
12391         {0x179, 0, 0},
12392         {0x17B, 0x21, 0},
12393         {0x17C, 0, 0},
12394         {0x17D, 0xaa, 0},
12395         {0x17E, 0, 0},
12396         {0x190, 0, 0},
12397         {0x191, 0x77, 0},
12398         {0x192, 0x77, 0},
12399         {0x193, 0x77, 0},
12400         {0x194, 0x77, 0},
12401         {0x195, 0, 0},
12402         {0x196, 0x3, 0},
12403         {0x197, 0x37, 0},
12404         {0x198, 0x3, 0},
12405         {0x199, 0, 0},
12406         {0x19B, 0x21, 0},
12407         {0x19C, 0, 0},
12408         {0x19D, 0xaa, 0},
12409         {0x19E, 0, 0},
12410         {0x1A1, 0x2, 0},
12411         {0x1A2, 0xf, 0},
12412         {0x1A3, 0xf, 0},
12413         {0x1A4, 0, 1},
12414         {0x1A5, 0, 1},
12415         {0x1A6, 0, 1},
12416         {0x1A7, 0x2, 0},
12417         {0x1A8, 0xf, 0},
12418         {0x1A9, 0xf, 0},
12419         {0x1AA, 0, 1},
12420         {0x1AB, 0, 1},
12421         {0x1AC, 0, 1},
12422         {0x1AD, 0x84, 0},
12423         {0x1AE, 0x60, 0},
12424         {0x1AF, 0x47, 0},
12425         {0x1B0, 0x47, 0},
12426         {0x1B1, 0, 0},
12427         {0x1B2, 0, 0},
12428         {0x1B3, 0, 0},
12429         {0x1B4, 0, 0},
12430         {0x1B5, 0, 0},
12431         {0x1B6, 0, 0},
12432         {0x1B7, 0xc, 1},
12433         {0x1B8, 0, 0},
12434         {0x1B9, 0, 0},
12435         {0x1BA, 0, 0},
12436         {0x1BB, 0, 0},
12437         {0x1BC, 0, 0},
12438         {0x1BD, 0, 0},
12439         {0x1BE, 0, 0},
12440         {0x1BF, 0, 0},
12441         {0x1C0, 0, 0},
12442         {0x1C1, 0x1, 1},
12443         {0x1C2, 0x80, 1},
12444         {0x1C3, 0, 0},
12445         {0x1C4, 0, 0},
12446         {0x1C5, 0, 0},
12447         {0x1C6, 0, 0},
12448         {0x1C7, 0, 0},
12449         {0x1C8, 0, 0},
12450         {0x1C9, 0, 0},
12451         {0x1CA, 0, 0},
12452         {0xFFFF, 0, 0}
12453 };
12454
12455 radio_20xx_regs_t regs_2057_rev7[] = {
12456         {0x00, 0, 1},
12457         {0x01, 0x57, 1},
12458         {0x02, 0x20, 1},
12459         {0x03, 0x1f, 0},
12460         {0x04, 0x4, 0},
12461         {0x05, 0x2, 0},
12462         {0x06, 0x1, 0},
12463         {0x07, 0x1, 0},
12464         {0x08, 0x1, 0},
12465         {0x09, 0x69, 0},
12466         {0x0A, 0x66, 0},
12467         {0x0B, 0x6, 0},
12468         {0x0C, 0x18, 0},
12469         {0x0D, 0x3, 0},
12470         {0x0E, 0x20, 0},
12471         {0x0F, 0x20, 0},
12472         {0x10, 0, 0},
12473         {0x11, 0x7c, 0},
12474         {0x12, 0x42, 0},
12475         {0x13, 0xbd, 0},
12476         {0x14, 0x7, 0},
12477         {0x15, 0x87, 0},
12478         {0x16, 0x8, 0},
12479         {0x17, 0x17, 0},
12480         {0x18, 0x7, 0},
12481         {0x19, 0, 0},
12482         {0x1A, 0x2, 0},
12483         {0x1B, 0x13, 0},
12484         {0x1C, 0x3e, 0},
12485         {0x1D, 0x3e, 0},
12486         {0x1E, 0x96, 0},
12487         {0x1F, 0x4, 0},
12488         {0x20, 0, 0},
12489         {0x21, 0, 0},
12490         {0x22, 0x17, 0},
12491         {0x23, 0x6, 0},
12492         {0x24, 0x1, 0},
12493         {0x25, 0x6, 0},
12494         {0x26, 0x4, 0},
12495         {0x27, 0xd, 0},
12496         {0x28, 0xd, 0},
12497         {0x29, 0x30, 0},
12498         {0x2A, 0x32, 0},
12499         {0x2B, 0x8, 0},
12500         {0x2C, 0x1c, 0},
12501         {0x2D, 0x2, 0},
12502         {0x2E, 0x4, 0},
12503         {0x2F, 0x7f, 0},
12504         {0x30, 0x27, 0},
12505         {0x31, 0, 1},
12506         {0x32, 0, 1},
12507         {0x33, 0, 1},
12508         {0x34, 0, 0},
12509         {0x35, 0x20, 0},
12510         {0x36, 0x18, 0},
12511         {0x37, 0x7, 0},
12512         {0x38, 0x66, 0},
12513         {0x39, 0x66, 0},
12514         {0x3A, 0x66, 0},
12515         {0x3B, 0x66, 0},
12516         {0x3C, 0xff, 0},
12517         {0x3D, 0xff, 0},
12518         {0x3E, 0xff, 0},
12519         {0x3F, 0xff, 0},
12520         {0x40, 0x16, 0},
12521         {0x41, 0x7, 0},
12522         {0x42, 0x19, 0},
12523         {0x43, 0x7, 0},
12524         {0x44, 0x6, 0},
12525         {0x45, 0x3, 0},
12526         {0x46, 0x1, 0},
12527         {0x47, 0x7, 0},
12528         {0x48, 0x33, 0},
12529         {0x49, 0x5, 0},
12530         {0x4A, 0x77, 0},
12531         {0x4B, 0x66, 0},
12532         {0x4C, 0x66, 0},
12533         {0x4D, 0, 0},
12534         {0x4E, 0x4, 0},
12535         {0x4F, 0xc, 0},
12536         {0x50, 0, 0},
12537         {0x51, 0x70, 1},
12538         {0x56, 0x7, 0},
12539         {0x57, 0, 0},
12540         {0x58, 0, 0},
12541         {0x59, 0x88, 1},
12542         {0x5A, 0, 0},
12543         {0x5B, 0x1f, 0},
12544         {0x5C, 0x20, 1},
12545         {0x5D, 0x1, 0},
12546         {0x5E, 0x30, 0},
12547         {0x5F, 0x70, 0},
12548         {0x60, 0, 0},
12549         {0x61, 0, 0},
12550         {0x62, 0x33, 1},
12551         {0x63, 0xf, 1},
12552         {0x64, 0x13, 1},
12553         {0x65, 0, 0},
12554         {0x66, 0xee, 1},
12555         {0x69, 0, 0},
12556         {0x6A, 0x7e, 0},
12557         {0x6B, 0x3f, 0},
12558         {0x6C, 0x7f, 0},
12559         {0x6D, 0x78, 0},
12560         {0x6E, 0x58, 1},
12561         {0x6F, 0x88, 0},
12562         {0x70, 0x8, 0},
12563         {0x71, 0xf, 0},
12564         {0x72, 0xbc, 0},
12565         {0x73, 0x8, 0},
12566         {0x74, 0x60, 0},
12567         {0x75, 0x13, 1},
12568         {0x76, 0x70, 0},
12569         {0x77, 0, 0},
12570         {0x78, 0, 0},
12571         {0x79, 0, 0},
12572         {0x7A, 0x33, 0},
12573         {0x7B, 0x13, 1},
12574         {0x7C, 0x14, 1},
12575         {0x7D, 0xee, 1},
12576         {0x80, 0x3c, 0},
12577         {0x81, 0x1, 1},
12578         {0x82, 0xa, 0},
12579         {0x83, 0x9d, 0},
12580         {0x84, 0xa, 0},
12581         {0x85, 0, 0},
12582         {0x86, 0x40, 0},
12583         {0x87, 0x40, 0},
12584         {0x88, 0x88, 0},
12585         {0x89, 0x10, 0},
12586         {0x8A, 0xf0, 0},
12587         {0x8B, 0x10, 0},
12588         {0x8C, 0xf0, 0},
12589         {0x8D, 0, 0},
12590         {0x8E, 0, 0},
12591         {0x8F, 0x10, 0},
12592         {0x90, 0x55, 0},
12593         {0x91, 0x3f, 1},
12594         {0x92, 0x36, 1},
12595         {0x93, 0, 0},
12596         {0x94, 0, 0},
12597         {0x95, 0, 0},
12598         {0x96, 0x87, 0},
12599         {0x97, 0x11, 0},
12600         {0x98, 0, 0},
12601         {0x99, 0x33, 0},
12602         {0x9A, 0x88, 0},
12603         {0x9B, 0, 0},
12604         {0x9C, 0x87, 0},
12605         {0x9D, 0x11, 0},
12606         {0x9E, 0, 0},
12607         {0x9F, 0x33, 0},
12608         {0xA0, 0x88, 0},
12609         {0xA1, 0x20, 1},
12610         {0xA2, 0x3f, 0},
12611         {0xA3, 0x44, 0},
12612         {0xA4, 0x8c, 0},
12613         {0xA5, 0x6c, 0},
12614         {0xA6, 0x22, 0},
12615         {0xA7, 0xbe, 0},
12616         {0xA8, 0x55, 0},
12617         {0xAA, 0xc, 0},
12618         {0xAB, 0xaa, 0},
12619         {0xAC, 0x2, 0},
12620         {0xAD, 0, 0},
12621         {0xAE, 0x10, 0},
12622         {0xAF, 0x1, 0},
12623         {0xB0, 0, 0},
12624         {0xB1, 0, 0},
12625         {0xB2, 0x80, 0},
12626         {0xB3, 0x60, 0},
12627         {0xB4, 0x44, 0},
12628         {0xB5, 0x55, 0},
12629         {0xB6, 0x1, 0},
12630         {0xB7, 0x55, 0},
12631         {0xB8, 0x1, 0},
12632         {0xB9, 0x5, 0},
12633         {0xBA, 0x55, 0},
12634         {0xBB, 0x55, 0},
12635         {0xC1, 0, 0},
12636         {0xC2, 0, 0},
12637         {0xC3, 0, 0},
12638         {0xC4, 0, 0},
12639         {0xC5, 0, 0},
12640         {0xC6, 0, 0},
12641         {0xC7, 0, 0},
12642         {0xC8, 0, 0},
12643         {0xC9, 0, 0},
12644         {0xCA, 0, 0},
12645         {0xCB, 0, 0},
12646         {0xCC, 0, 0},
12647         {0xCD, 0, 0},
12648         {0xCE, 0x5e, 0},
12649         {0xCF, 0xc, 0},
12650         {0xD0, 0xc, 0},
12651         {0xD1, 0xc, 0},
12652         {0xD2, 0, 0},
12653         {0xD3, 0x2b, 0},
12654         {0xD4, 0xc, 0},
12655         {0xD5, 0, 0},
12656         {0xD6, 0x70, 1},
12657         {0xDB, 0x7, 0},
12658         {0xDC, 0, 0},
12659         {0xDD, 0, 0},
12660         {0xDE, 0x88, 1},
12661         {0xDF, 0, 0},
12662         {0xE0, 0x1f, 0},
12663         {0xE1, 0x20, 1},
12664         {0xE2, 0x1, 0},
12665         {0xE3, 0x30, 0},
12666         {0xE4, 0x70, 0},
12667         {0xE5, 0, 0},
12668         {0xE6, 0, 0},
12669         {0xE7, 0x33, 0},
12670         {0xE8, 0xf, 1},
12671         {0xE9, 0x13, 1},
12672         {0xEA, 0, 0},
12673         {0xEB, 0xee, 1},
12674         {0xEE, 0, 0},
12675         {0xEF, 0x7e, 0},
12676         {0xF0, 0x3f, 0},
12677         {0xF1, 0x7f, 0},
12678         {0xF2, 0x78, 0},
12679         {0xF3, 0x58, 1},
12680         {0xF4, 0x88, 0},
12681         {0xF5, 0x8, 0},
12682         {0xF6, 0xf, 0},
12683         {0xF7, 0xbc, 0},
12684         {0xF8, 0x8, 0},
12685         {0xF9, 0x60, 0},
12686         {0xFA, 0x13, 1},
12687         {0xFB, 0x70, 0},
12688         {0xFC, 0, 0},
12689         {0xFD, 0, 0},
12690         {0xFE, 0, 0},
12691         {0xFF, 0x33, 0},
12692         {0x100, 0x13, 1},
12693         {0x101, 0x14, 1},
12694         {0x102, 0xee, 1},
12695         {0x105, 0x3c, 0},
12696         {0x106, 0x1, 1},
12697         {0x107, 0xa, 0},
12698         {0x108, 0x9d, 0},
12699         {0x109, 0xa, 0},
12700         {0x10A, 0, 0},
12701         {0x10B, 0x40, 0},
12702         {0x10C, 0x40, 0},
12703         {0x10D, 0x88, 0},
12704         {0x10E, 0x10, 0},
12705         {0x10F, 0xf0, 0},
12706         {0x110, 0x10, 0},
12707         {0x111, 0xf0, 0},
12708         {0x112, 0, 0},
12709         {0x113, 0, 0},
12710         {0x114, 0x10, 0},
12711         {0x115, 0x55, 0},
12712         {0x116, 0x3f, 1},
12713         {0x117, 0x36, 1},
12714         {0x118, 0, 0},
12715         {0x119, 0, 0},
12716         {0x11A, 0, 0},
12717         {0x11B, 0x87, 0},
12718         {0x11C, 0x11, 0},
12719         {0x11D, 0, 0},
12720         {0x11E, 0x33, 0},
12721         {0x11F, 0x88, 0},
12722         {0x120, 0, 0},
12723         {0x121, 0x87, 0},
12724         {0x122, 0x11, 0},
12725         {0x123, 0, 0},
12726         {0x124, 0x33, 0},
12727         {0x125, 0x88, 0},
12728         {0x126, 0x20, 1},
12729         {0x127, 0x3f, 0},
12730         {0x128, 0x44, 0},
12731         {0x129, 0x8c, 0},
12732         {0x12A, 0x6c, 0},
12733         {0x12B, 0x22, 0},
12734         {0x12C, 0xbe, 0},
12735         {0x12D, 0x55, 0},
12736         {0x12F, 0xc, 0},
12737         {0x130, 0xaa, 0},
12738         {0x131, 0x2, 0},
12739         {0x132, 0, 0},
12740         {0x133, 0x10, 0},
12741         {0x134, 0x1, 0},
12742         {0x135, 0, 0},
12743         {0x136, 0, 0},
12744         {0x137, 0x80, 0},
12745         {0x138, 0x60, 0},
12746         {0x139, 0x44, 0},
12747         {0x13A, 0x55, 0},
12748         {0x13B, 0x1, 0},
12749         {0x13C, 0x55, 0},
12750         {0x13D, 0x1, 0},
12751         {0x13E, 0x5, 0},
12752         {0x13F, 0x55, 0},
12753         {0x140, 0x55, 0},
12754         {0x146, 0, 0},
12755         {0x147, 0, 0},
12756         {0x148, 0, 0},
12757         {0x149, 0, 0},
12758         {0x14A, 0, 0},
12759         {0x14B, 0, 0},
12760         {0x14C, 0, 0},
12761         {0x14D, 0, 0},
12762         {0x14E, 0, 0},
12763         {0x14F, 0, 0},
12764         {0x150, 0, 0},
12765         {0x151, 0, 0},
12766         {0x154, 0xc, 0},
12767         {0x155, 0xc, 0},
12768         {0x156, 0xc, 0},
12769         {0x157, 0, 0},
12770         {0x158, 0x2b, 0},
12771         {0x159, 0x84, 0},
12772         {0x15A, 0x15, 0},
12773         {0x15B, 0xf, 0},
12774         {0x15C, 0, 0},
12775         {0x15D, 0, 0},
12776         {0x15E, 0, 1},
12777         {0x15F, 0, 1},
12778         {0x160, 0, 1},
12779         {0x161, 0, 1},
12780         {0x162, 0, 1},
12781         {0x163, 0, 1},
12782         {0x164, 0, 0},
12783         {0x165, 0, 0},
12784         {0x166, 0, 0},
12785         {0x167, 0, 0},
12786         {0x168, 0, 0},
12787         {0x169, 0, 0},
12788         {0x16A, 0, 1},
12789         {0x16B, 0, 1},
12790         {0x16C, 0, 1},
12791         {0x16D, 0, 0},
12792         {0x170, 0, 0},
12793         {0x171, 0x77, 0},
12794         {0x172, 0x77, 0},
12795         {0x173, 0x77, 0},
12796         {0x174, 0x77, 0},
12797         {0x175, 0, 0},
12798         {0x176, 0x3, 0},
12799         {0x177, 0x37, 0},
12800         {0x178, 0x3, 0},
12801         {0x179, 0, 0},
12802         {0x17A, 0x21, 0},
12803         {0x17B, 0x21, 0},
12804         {0x17C, 0, 0},
12805         {0x17D, 0xaa, 0},
12806         {0x17E, 0, 0},
12807         {0x17F, 0xaa, 0},
12808         {0x180, 0, 0},
12809         {0x190, 0, 0},
12810         {0x191, 0x77, 0},
12811         {0x192, 0x77, 0},
12812         {0x193, 0x77, 0},
12813         {0x194, 0x77, 0},
12814         {0x195, 0, 0},
12815         {0x196, 0x3, 0},
12816         {0x197, 0x37, 0},
12817         {0x198, 0x3, 0},
12818         {0x199, 0, 0},
12819         {0x19A, 0x21, 0},
12820         {0x19B, 0x21, 0},
12821         {0x19C, 0, 0},
12822         {0x19D, 0xaa, 0},
12823         {0x19E, 0, 0},
12824         {0x19F, 0xaa, 0},
12825         {0x1A0, 0, 0},
12826         {0x1A1, 0x2, 0},
12827         {0x1A2, 0xf, 0},
12828         {0x1A3, 0xf, 0},
12829         {0x1A4, 0, 1},
12830         {0x1A5, 0, 1},
12831         {0x1A6, 0, 1},
12832         {0x1A7, 0x2, 0},
12833         {0x1A8, 0xf, 0},
12834         {0x1A9, 0xf, 0},
12835         {0x1AA, 0, 1},
12836         {0x1AB, 0, 1},
12837         {0x1AC, 0, 1},
12838         {0x1AD, 0x84, 0},
12839         {0x1AE, 0x60, 0},
12840         {0x1AF, 0x47, 0},
12841         {0x1B0, 0x47, 0},
12842         {0x1B1, 0, 0},
12843         {0x1B2, 0, 0},
12844         {0x1B3, 0, 0},
12845         {0x1B4, 0, 0},
12846         {0x1B5, 0, 0},
12847         {0x1B6, 0, 0},
12848         {0x1B7, 0x5, 1},
12849         {0x1B8, 0, 0},
12850         {0x1B9, 0, 0},
12851         {0x1BA, 0, 0},
12852         {0x1BB, 0, 0},
12853         {0x1BC, 0, 0},
12854         {0x1BD, 0, 0},
12855         {0x1BE, 0, 0},
12856         {0x1BF, 0, 0},
12857         {0x1C0, 0, 0},
12858         {0x1C1, 0, 0},
12859         {0x1C2, 0xa0, 1},
12860         {0x1C3, 0, 0},
12861         {0x1C4, 0, 0},
12862         {0x1C5, 0, 0},
12863         {0x1C6, 0, 0},
12864         {0x1C7, 0, 0},
12865         {0x1C8, 0, 0},
12866         {0x1C9, 0, 0},
12867         {0x1CA, 0, 0},
12868         {0xFFFF, 0, 0}
12869 };
12870
12871 radio_20xx_regs_t regs_2057_rev8[] = {
12872         {0x00, 0x8, 1},
12873         {0x01, 0x57, 1},
12874         {0x02, 0x20, 1},
12875         {0x03, 0x1f, 0},
12876         {0x04, 0x4, 0},
12877         {0x05, 0x2, 0},
12878         {0x06, 0x1, 0},
12879         {0x07, 0x1, 0},
12880         {0x08, 0x1, 0},
12881         {0x09, 0x69, 0},
12882         {0x0A, 0x66, 0},
12883         {0x0B, 0x6, 0},
12884         {0x0C, 0x18, 0},
12885         {0x0D, 0x3, 0},
12886         {0x0E, 0x20, 0},
12887         {0x0F, 0x20, 0},
12888         {0x10, 0, 0},
12889         {0x11, 0x7c, 0},
12890         {0x12, 0x42, 0},
12891         {0x13, 0xbd, 0},
12892         {0x14, 0x7, 0},
12893         {0x15, 0x87, 0},
12894         {0x16, 0x8, 0},
12895         {0x17, 0x17, 0},
12896         {0x18, 0x7, 0},
12897         {0x19, 0, 0},
12898         {0x1A, 0x2, 0},
12899         {0x1B, 0x13, 0},
12900         {0x1C, 0x3e, 0},
12901         {0x1D, 0x3e, 0},
12902         {0x1E, 0x96, 0},
12903         {0x1F, 0x4, 0},
12904         {0x20, 0, 0},
12905         {0x21, 0, 0},
12906         {0x22, 0x17, 0},
12907         {0x23, 0x6, 0},
12908         {0x24, 0x1, 0},
12909         {0x25, 0x6, 0},
12910         {0x26, 0x4, 0},
12911         {0x27, 0xd, 0},
12912         {0x28, 0xd, 0},
12913         {0x29, 0x30, 0},
12914         {0x2A, 0x32, 0},
12915         {0x2B, 0x8, 0},
12916         {0x2C, 0x1c, 0},
12917         {0x2D, 0x2, 0},
12918         {0x2E, 0x4, 0},
12919         {0x2F, 0x7f, 0},
12920         {0x30, 0x27, 0},
12921         {0x31, 0, 1},
12922         {0x32, 0, 1},
12923         {0x33, 0, 1},
12924         {0x34, 0, 0},
12925         {0x35, 0x20, 0},
12926         {0x36, 0x18, 0},
12927         {0x37, 0x7, 0},
12928         {0x38, 0x66, 0},
12929         {0x39, 0x66, 0},
12930         {0x3A, 0x66, 0},
12931         {0x3B, 0x66, 0},
12932         {0x3C, 0xff, 0},
12933         {0x3D, 0xff, 0},
12934         {0x3E, 0xff, 0},
12935         {0x3F, 0xff, 0},
12936         {0x40, 0x16, 0},
12937         {0x41, 0x7, 0},
12938         {0x42, 0x19, 0},
12939         {0x43, 0x7, 0},
12940         {0x44, 0x6, 0},
12941         {0x45, 0x3, 0},
12942         {0x46, 0x1, 0},
12943         {0x47, 0x7, 0},
12944         {0x48, 0x33, 0},
12945         {0x49, 0x5, 0},
12946         {0x4A, 0x77, 0},
12947         {0x4B, 0x66, 0},
12948         {0x4C, 0x66, 0},
12949         {0x4D, 0, 0},
12950         {0x4E, 0x4, 0},
12951         {0x4F, 0xc, 0},
12952         {0x50, 0, 0},
12953         {0x51, 0x70, 1},
12954         {0x56, 0x7, 0},
12955         {0x57, 0, 0},
12956         {0x58, 0, 0},
12957         {0x59, 0x88, 1},
12958         {0x5A, 0, 0},
12959         {0x5B, 0x1f, 0},
12960         {0x5C, 0x20, 1},
12961         {0x5D, 0x1, 0},
12962         {0x5E, 0x30, 0},
12963         {0x5F, 0x70, 0},
12964         {0x60, 0, 0},
12965         {0x61, 0, 0},
12966         {0x62, 0x33, 1},
12967         {0x63, 0xf, 1},
12968         {0x64, 0xf, 1},
12969         {0x65, 0, 0},
12970         {0x66, 0x11, 0},
12971         {0x69, 0, 0},
12972         {0x6A, 0x7e, 0},
12973         {0x6B, 0x3f, 0},
12974         {0x6C, 0x7f, 0},
12975         {0x6D, 0x78, 0},
12976         {0x6E, 0x58, 1},
12977         {0x6F, 0x88, 0},
12978         {0x70, 0x8, 0},
12979         {0x71, 0xf, 0},
12980         {0x72, 0xbc, 0},
12981         {0x73, 0x8, 0},
12982         {0x74, 0x60, 0},
12983         {0x75, 0x13, 1},
12984         {0x76, 0x70, 0},
12985         {0x77, 0, 0},
12986         {0x78, 0, 0},
12987         {0x79, 0, 0},
12988         {0x7A, 0x33, 0},
12989         {0x7B, 0x13, 1},
12990         {0x7C, 0xf, 1},
12991         {0x7D, 0xee, 1},
12992         {0x80, 0x3c, 0},
12993         {0x81, 0x1, 1},
12994         {0x82, 0xa, 0},
12995         {0x83, 0x9d, 0},
12996         {0x84, 0xa, 0},
12997         {0x85, 0, 0},
12998         {0x86, 0x40, 0},
12999         {0x87, 0x40, 0},
13000         {0x88, 0x88, 0},
13001         {0x89, 0x10, 0},
13002         {0x8A, 0xf0, 0},
13003         {0x8B, 0x10, 0},
13004         {0x8C, 0xf0, 0},
13005         {0x8D, 0, 0},
13006         {0x8E, 0, 0},
13007         {0x8F, 0x10, 0},
13008         {0x90, 0x55, 0},
13009         {0x91, 0x3f, 1},
13010         {0x92, 0x36, 1},
13011         {0x93, 0, 0},
13012         {0x94, 0, 0},
13013         {0x95, 0, 0},
13014         {0x96, 0x87, 0},
13015         {0x97, 0x11, 0},
13016         {0x98, 0, 0},
13017         {0x99, 0x33, 0},
13018         {0x9A, 0x88, 0},
13019         {0x9B, 0, 0},
13020         {0x9C, 0x87, 0},
13021         {0x9D, 0x11, 0},
13022         {0x9E, 0, 0},
13023         {0x9F, 0x33, 0},
13024         {0xA0, 0x88, 0},
13025         {0xA1, 0x20, 1},
13026         {0xA2, 0x3f, 0},
13027         {0xA3, 0x44, 0},
13028         {0xA4, 0x8c, 0},
13029         {0xA5, 0x6c, 0},
13030         {0xA6, 0x22, 0},
13031         {0xA7, 0xbe, 0},
13032         {0xA8, 0x55, 0},
13033         {0xAA, 0xc, 0},
13034         {0xAB, 0xaa, 0},
13035         {0xAC, 0x2, 0},
13036         {0xAD, 0, 0},
13037         {0xAE, 0x10, 0},
13038         {0xAF, 0x1, 0},
13039         {0xB0, 0, 0},
13040         {0xB1, 0, 0},
13041         {0xB2, 0x80, 0},
13042         {0xB3, 0x60, 0},
13043         {0xB4, 0x44, 0},
13044         {0xB5, 0x55, 0},
13045         {0xB6, 0x1, 0},
13046         {0xB7, 0x55, 0},
13047         {0xB8, 0x1, 0},
13048         {0xB9, 0x5, 0},
13049         {0xBA, 0x55, 0},
13050         {0xBB, 0x55, 0},
13051         {0xC1, 0, 0},
13052         {0xC2, 0, 0},
13053         {0xC3, 0, 0},
13054         {0xC4, 0, 0},
13055         {0xC5, 0, 0},
13056         {0xC6, 0, 0},
13057         {0xC7, 0, 0},
13058         {0xC8, 0, 0},
13059         {0xC9, 0x1, 1},
13060         {0xCA, 0, 0},
13061         {0xCB, 0, 0},
13062         {0xCC, 0, 0},
13063         {0xCD, 0, 0},
13064         {0xCE, 0x5e, 0},
13065         {0xCF, 0xc, 0},
13066         {0xD0, 0xc, 0},
13067         {0xD1, 0xc, 0},
13068         {0xD2, 0, 0},
13069         {0xD3, 0x2b, 0},
13070         {0xD4, 0xc, 0},
13071         {0xD5, 0, 0},
13072         {0xD6, 0x70, 1},
13073         {0xDB, 0x7, 0},
13074         {0xDC, 0, 0},
13075         {0xDD, 0, 0},
13076         {0xDE, 0x88, 1},
13077         {0xDF, 0, 0},
13078         {0xE0, 0x1f, 0},
13079         {0xE1, 0x20, 1},
13080         {0xE2, 0x1, 0},
13081         {0xE3, 0x30, 0},
13082         {0xE4, 0x70, 0},
13083         {0xE5, 0, 0},
13084         {0xE6, 0, 0},
13085         {0xE7, 0x33, 0},
13086         {0xE8, 0xf, 1},
13087         {0xE9, 0xf, 1},
13088         {0xEA, 0, 0},
13089         {0xEB, 0x11, 0},
13090         {0xEE, 0, 0},
13091         {0xEF, 0x7e, 0},
13092         {0xF0, 0x3f, 0},
13093         {0xF1, 0x7f, 0},
13094         {0xF2, 0x78, 0},
13095         {0xF3, 0x58, 1},
13096         {0xF4, 0x88, 0},
13097         {0xF5, 0x8, 0},
13098         {0xF6, 0xf, 0},
13099         {0xF7, 0xbc, 0},
13100         {0xF8, 0x8, 0},
13101         {0xF9, 0x60, 0},
13102         {0xFA, 0x13, 1},
13103         {0xFB, 0x70, 0},
13104         {0xFC, 0, 0},
13105         {0xFD, 0, 0},
13106         {0xFE, 0, 0},
13107         {0xFF, 0x33, 0},
13108         {0x100, 0x13, 1},
13109         {0x101, 0xf, 1},
13110         {0x102, 0xee, 1},
13111         {0x105, 0x3c, 0},
13112         {0x106, 0x1, 1},
13113         {0x107, 0xa, 0},
13114         {0x108, 0x9d, 0},
13115         {0x109, 0xa, 0},
13116         {0x10A, 0, 0},
13117         {0x10B, 0x40, 0},
13118         {0x10C, 0x40, 0},
13119         {0x10D, 0x88, 0},
13120         {0x10E, 0x10, 0},
13121         {0x10F, 0xf0, 0},
13122         {0x110, 0x10, 0},
13123         {0x111, 0xf0, 0},
13124         {0x112, 0, 0},
13125         {0x113, 0, 0},
13126         {0x114, 0x10, 0},
13127         {0x115, 0x55, 0},
13128         {0x116, 0x3f, 1},
13129         {0x117, 0x36, 1},
13130         {0x118, 0, 0},
13131         {0x119, 0, 0},
13132         {0x11A, 0, 0},
13133         {0x11B, 0x87, 0},
13134         {0x11C, 0x11, 0},
13135         {0x11D, 0, 0},
13136         {0x11E, 0x33, 0},
13137         {0x11F, 0x88, 0},
13138         {0x120, 0, 0},
13139         {0x121, 0x87, 0},
13140         {0x122, 0x11, 0},
13141         {0x123, 0, 0},
13142         {0x124, 0x33, 0},
13143         {0x125, 0x88, 0},
13144         {0x126, 0x20, 1},
13145         {0x127, 0x3f, 0},
13146         {0x128, 0x44, 0},
13147         {0x129, 0x8c, 0},
13148         {0x12A, 0x6c, 0},
13149         {0x12B, 0x22, 0},
13150         {0x12C, 0xbe, 0},
13151         {0x12D, 0x55, 0},
13152         {0x12F, 0xc, 0},
13153         {0x130, 0xaa, 0},
13154         {0x131, 0x2, 0},
13155         {0x132, 0, 0},
13156         {0x133, 0x10, 0},
13157         {0x134, 0x1, 0},
13158         {0x135, 0, 0},
13159         {0x136, 0, 0},
13160         {0x137, 0x80, 0},
13161         {0x138, 0x60, 0},
13162         {0x139, 0x44, 0},
13163         {0x13A, 0x55, 0},
13164         {0x13B, 0x1, 0},
13165         {0x13C, 0x55, 0},
13166         {0x13D, 0x1, 0},
13167         {0x13E, 0x5, 0},
13168         {0x13F, 0x55, 0},
13169         {0x140, 0x55, 0},
13170         {0x146, 0, 0},
13171         {0x147, 0, 0},
13172         {0x148, 0, 0},
13173         {0x149, 0, 0},
13174         {0x14A, 0, 0},
13175         {0x14B, 0, 0},
13176         {0x14C, 0, 0},
13177         {0x14D, 0, 0},
13178         {0x14E, 0x1, 1},
13179         {0x14F, 0, 0},
13180         {0x150, 0, 0},
13181         {0x151, 0, 0},
13182         {0x154, 0xc, 0},
13183         {0x155, 0xc, 0},
13184         {0x156, 0xc, 0},
13185         {0x157, 0, 0},
13186         {0x158, 0x2b, 0},
13187         {0x159, 0x84, 0},
13188         {0x15A, 0x15, 0},
13189         {0x15B, 0xf, 0},
13190         {0x15C, 0, 0},
13191         {0x15D, 0, 0},
13192         {0x15E, 0, 1},
13193         {0x15F, 0, 1},
13194         {0x160, 0, 1},
13195         {0x161, 0, 1},
13196         {0x162, 0, 1},
13197         {0x163, 0, 1},
13198         {0x164, 0, 0},
13199         {0x165, 0, 0},
13200         {0x166, 0, 0},
13201         {0x167, 0, 0},
13202         {0x168, 0, 0},
13203         {0x169, 0, 0},
13204         {0x16A, 0, 1},
13205         {0x16B, 0, 1},
13206         {0x16C, 0, 1},
13207         {0x16D, 0, 0},
13208         {0x170, 0, 0},
13209         {0x171, 0x77, 0},
13210         {0x172, 0x77, 0},
13211         {0x173, 0x77, 0},
13212         {0x174, 0x77, 0},
13213         {0x175, 0, 0},
13214         {0x176, 0x3, 0},
13215         {0x177, 0x37, 0},
13216         {0x178, 0x3, 0},
13217         {0x179, 0, 0},
13218         {0x17A, 0x21, 0},
13219         {0x17B, 0x21, 0},
13220         {0x17C, 0, 0},
13221         {0x17D, 0xaa, 0},
13222         {0x17E, 0, 0},
13223         {0x17F, 0xaa, 0},
13224         {0x180, 0, 0},
13225         {0x190, 0, 0},
13226         {0x191, 0x77, 0},
13227         {0x192, 0x77, 0},
13228         {0x193, 0x77, 0},
13229         {0x194, 0x77, 0},
13230         {0x195, 0, 0},
13231         {0x196, 0x3, 0},
13232         {0x197, 0x37, 0},
13233         {0x198, 0x3, 0},
13234         {0x199, 0, 0},
13235         {0x19A, 0x21, 0},
13236         {0x19B, 0x21, 0},
13237         {0x19C, 0, 0},
13238         {0x19D, 0xaa, 0},
13239         {0x19E, 0, 0},
13240         {0x19F, 0xaa, 0},
13241         {0x1A0, 0, 0},
13242         {0x1A1, 0x2, 0},
13243         {0x1A2, 0xf, 0},
13244         {0x1A3, 0xf, 0},
13245         {0x1A4, 0, 1},
13246         {0x1A5, 0, 1},
13247         {0x1A6, 0, 1},
13248         {0x1A7, 0x2, 0},
13249         {0x1A8, 0xf, 0},
13250         {0x1A9, 0xf, 0},
13251         {0x1AA, 0, 1},
13252         {0x1AB, 0, 1},
13253         {0x1AC, 0, 1},
13254         {0x1AD, 0x84, 0},
13255         {0x1AE, 0x60, 0},
13256         {0x1AF, 0x47, 0},
13257         {0x1B0, 0x47, 0},
13258         {0x1B1, 0, 0},
13259         {0x1B2, 0, 0},
13260         {0x1B3, 0, 0},
13261         {0x1B4, 0, 0},
13262         {0x1B5, 0, 0},
13263         {0x1B6, 0, 0},
13264         {0x1B7, 0x5, 1},
13265         {0x1B8, 0, 0},
13266         {0x1B9, 0, 0},
13267         {0x1BA, 0, 0},
13268         {0x1BB, 0, 0},
13269         {0x1BC, 0, 0},
13270         {0x1BD, 0, 0},
13271         {0x1BE, 0, 0},
13272         {0x1BF, 0, 0},
13273         {0x1C0, 0, 0},
13274         {0x1C1, 0, 0},
13275         {0x1C2, 0xa0, 1},
13276         {0x1C3, 0, 0},
13277         {0x1C4, 0, 0},
13278         {0x1C5, 0, 0},
13279         {0x1C6, 0, 0},
13280         {0x1C7, 0, 0},
13281         {0x1C8, 0, 0},
13282         {0x1C9, 0, 0},
13283         {0x1CA, 0, 0},
13284         {0xFFFF, 0, 0}
13285 };
13286
13287 static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13288
13289 static s32 nphy_lnagain_est0[] = { -315, 40370 };
13290 static s32 nphy_lnagain_est1[] = { -224, 23242 };
13291
13292 static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13293         {
13294          {0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13295          {0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13296          {0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13297          {0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13298          {0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13299          {0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13300          {0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13301          {0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13302          {0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13303          },
13304         {
13305          {0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13306          {0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13307          {0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13308          {0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13309          {0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13310          {0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13311          {0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13312          {0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13313          {0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13314          }
13315 };
13316
13317 static const u32 nphy_tpc_txgain[] = {
13318         0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13319         0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13320         0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13321         0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13322         0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13323         0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13324         0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13325         0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13326         0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13327         0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13328         0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13329         0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13330         0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13331         0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13332         0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13333         0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13334         0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13335         0x03902942, 0x03902844, 0x03902842, 0x03902744,
13336         0x03902742, 0x03902644, 0x03902642, 0x03902544,
13337         0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13338         0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13339         0x03802842, 0x03802744, 0x03802742, 0x03802644,
13340         0x03802642, 0x03802544, 0x03802542, 0x03802444,
13341         0x03802442, 0x03802344, 0x03802342, 0x03802244,
13342         0x03802242, 0x03802144, 0x03802142, 0x03802044,
13343         0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13344         0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13345         0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13346         0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13347         0x03801842, 0x03801744, 0x03801742, 0x03801644,
13348         0x03801642, 0x03801544, 0x03801542, 0x03801444,
13349         0x03801442, 0x03801344, 0x03801342, 0x00002b00
13350 };
13351
13352 static const u16 nphy_tpc_loscale[] = {
13353         256, 256, 271, 271, 287, 256, 256, 271,
13354         271, 287, 287, 304, 304, 256, 256, 271,
13355         271, 287, 287, 304, 304, 322, 322, 341,
13356         341, 362, 362, 383, 383, 256, 256, 271,
13357         271, 287, 287, 304, 304, 322, 322, 256,
13358         256, 271, 271, 287, 287, 304, 304, 322,
13359         322, 341, 341, 362, 362, 256, 256, 271,
13360         271, 287, 287, 304, 304, 322, 322, 256,
13361         256, 271, 271, 287, 287, 304, 304, 322,
13362         322, 341, 341, 362, 362, 256, 256, 271,
13363         271, 287, 287, 304, 304, 322, 322, 341,
13364         341, 362, 362, 383, 383, 406, 406, 430,
13365         430, 455, 455, 482, 482, 511, 511, 541,
13366         541, 573, 573, 607, 607, 643, 643, 681,
13367         681, 722, 722, 764, 764, 810, 810, 858,
13368         858, 908, 908, 962, 962, 1019, 1019, 256
13369 };
13370
13371 static u32 nphy_tpc_txgain_ipa[] = {
13372         0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13373         0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13374         0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13375         0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13376         0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13377         0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13378         0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13379         0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13380         0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13381         0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13382         0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13383         0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13384         0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13385         0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13386         0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13387         0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13388         0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13389         0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13390         0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13391         0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13392         0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13393         0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13394         0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13395         0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13396         0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13397         0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13398         0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13399         0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13400         0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13401         0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13402         0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13403         0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13404 };
13405
13406 static u32 nphy_tpc_txgain_ipa_rev5[] = {
13407         0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13408         0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13409         0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13410         0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13411         0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13412         0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13413         0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13414         0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13415         0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13416         0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13417         0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13418         0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13419         0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13420         0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13421         0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13422         0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13423         0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13424         0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13425         0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13426         0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13427         0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13428         0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13429         0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13430         0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13431         0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13432         0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13433         0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13434         0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13435         0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13436         0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13437         0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13438         0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13439 };
13440
13441 static u32 nphy_tpc_txgain_ipa_rev6[] = {
13442         0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13443         0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13444         0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13445         0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13446         0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13447         0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13448         0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13449         0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13450         0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13451         0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13452         0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13453         0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13454         0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13455         0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13456         0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13457         0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13458         0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13459         0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13460         0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13461         0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13462         0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13463         0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13464         0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13465         0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13466         0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13467         0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13468         0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13469         0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13470         0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13471         0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13472         0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13473         0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13474 };
13475
13476 static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13477         0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13478         0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13479         0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13480         0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13481         0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13482         0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13483         0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13484         0x70470028, 0x70470026, 0x70470024, 0x70470022,
13485         0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13486         0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13487         0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13488         0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13489         0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13490         0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13491         0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13492         0x70170019, 0x70170018, 0x70170016, 0x70170015,
13493         0x70170014, 0x70170013, 0x70170012, 0x70170010,
13494         0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13495         0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13496         0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13497         0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13498         0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13499         0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13500         0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13501         0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13502         0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13503         0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13504         0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13505         0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13506         0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13507         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13508         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13509 };
13510
13511 static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13512         0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13513         0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13514         0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13515         0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13516         0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13517         0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13518         0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13519         0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13520         0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13521         0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13522         0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13523         0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13524         0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13525         0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13526         0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13527         0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13528         0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13529         0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13530         0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13531         0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13532         0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13533         0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13534         0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13535         0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13536         0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13537         0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13538         0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13539         0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13540         0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13541         0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13542         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13543         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13544 };
13545
13546 static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13547         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13548         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13549         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13550         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13551         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13552         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13553         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13554         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13555         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13556         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13557         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13558         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13559         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13560         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13561         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13562         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13563         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13564         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13565         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
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         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13579 };
13580
13581 static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13582         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13583         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13584         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13585         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13586         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13587         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13588         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13589         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13590         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13591         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13592         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13593         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13594         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13595         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13596         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13597         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13598         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13599         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13600         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
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         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13614 };
13615
13616 static u32 nphy_tpc_txgain_ipa_5g[] = {
13617         0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13618         0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13619         0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13620         0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13621         0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13622         0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13623         0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13624         0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13625         0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13626         0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13627         0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13628         0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13629         0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13630         0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13631         0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13632         0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13633         0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13634         0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13635         0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13636         0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13637         0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13638         0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13639         0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13640         0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13641         0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13642         0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13643         0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13644         0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13645         0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13646         0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13647         0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13648         0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13649 };
13650
13651 static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13652         0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13653         0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13654         0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13655         0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13656         0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13657         0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13658         0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13659         0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13660         0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13661         0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13662         0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13663         0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13664         0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13665         0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13666         0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13667         0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13668         0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13669         0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13670         0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13671         0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13672         0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13673         0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13674         0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13675         0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13676         0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13677         0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13678         0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13679         0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13680         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13681         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13682         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13683         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13684 };
13685
13686 static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13687         0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13688         0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13689         0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13690         0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13691         0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13692         0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13693         0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13694         0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13695         0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13696         0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13697         0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13698         0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13699         0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13700         0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13701         0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13702         0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13703         0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13704         0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13705         0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13706         0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13707         0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13708         0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13709         0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13710         0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13711         0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13712         0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13713         0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13714         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13715         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13716         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13717         0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13718         0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13719 };
13720
13721 static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13722         -114, -108, -98, -91, -84, -78, -70, -62,
13723         -54, -46, -39, -31, -23, -15, -8, 0
13724 };
13725
13726 static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13727         -100, -95, -89, -83, -77, -70, -63, -56,
13728         -48, -41, -33, -25, -19, -12, -6, 0
13729 };
13730
13731 static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13732         -159, -113, -86, -72, -62, -54, -48, -43,
13733         -39, -35, -31, -28, -25, -23, -20, -18,
13734         -17, -15, -13, -11, -10, -8, -7, -6,
13735         -5, -4, -3, -3, -2, -1, -1, 0
13736 };
13737
13738 static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13739         -109, -109, -82, -68, -58, -50, -44, -39,
13740         -35, -31, -28, -26, -23, -21, -19, -17,
13741         -16, -14, -13, -11, -10, -9, -8, -7,
13742         -5, -5, -4, -3, -2, -1, -1, 0
13743 };
13744
13745 static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13746         -122, -122, -95, -80, -69, -61, -54, -49,
13747         -43, -39, -35, -32, -28, -26, -23, -21,
13748         -18, -16, -15, -13, -11, -10, -8, -7,
13749         -6, -5, -4, -3, -2, -1, -1, 0
13750 };
13751
13752 static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13753         -107, -101, -92, -85, -78, -71, -62, -55,
13754         -47, -39, -32, -24, -19, -12, -6, 0
13755 };
13756
13757 static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13758         -110, -104, -95, -88, -81, -74, -66, -58,
13759         -50, -44, -36, -28, -23, -15, -8, 0
13760 };
13761
13762 static u8 pad_gain_codes_used_2057rev5[] = {
13763         20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13764         10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13765 };
13766
13767 static u8 pad_gain_codes_used_2057rev7[] = {
13768         15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13769         5, 4, 3, 2, 1
13770 };
13771
13772 static u8 pad_all_gain_codes_2057[] = {
13773         31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13774         21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13775         11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13776         1, 0
13777 };
13778
13779 static u8 pga_all_gain_codes_2057[] = {
13780         15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13781 };
13782
13783 static u32 nphy_papd_scaltbl[] = {
13784         0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13785         0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13786         0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13787         0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13788         0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13789         0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13790         0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13791         0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13792         0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13793         0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13794         0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13795         0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13796         0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13797         0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13798         0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13799         0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13800 };
13801
13802 static u32 nphy_tpc_txgain_rev3[] = {
13803         0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13804         0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13805         0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13806         0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13807         0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13808         0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13809         0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13810         0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13811         0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13812         0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13813         0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13814         0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13815         0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13816         0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13817         0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13818         0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13819         0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13820         0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13821         0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13822         0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13823         0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13824         0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13825         0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13826         0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13827         0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13828         0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13829         0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13830         0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13831         0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13832         0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13833         0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13834         0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13835 };
13836
13837 static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13838         0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13839         0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13840         0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13841         0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13842         0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13843         0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13844         0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13845         0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13846         0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13847         0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13848         0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13849         0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13850         0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13851         0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13852         0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13853         0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13854         0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13855         0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13856         0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13857         0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13858         0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13859         0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13860         0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13861         0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13862         0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13863         0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13864         0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13865         0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13866         0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13867         0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13868         0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13869         0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13870 };
13871
13872 static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13873         0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13874         0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13875         0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13876         0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13877         0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13878         0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13879         0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13880         0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13881         0x80290031, 0x80210039, 0x80210036, 0x80210033,
13882         0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13883         0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13884         0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13885         0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13886         0x80110027, 0x80110024, 0x80110022, 0x80110020,
13887         0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13888         0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13889         0x80090029, 0x80090027, 0x80090025, 0x80090023,
13890         0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13891         0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13892         0x8009061d, 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         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d
13905 };
13906
13907 static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13908         0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13909         0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13910         0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13911         0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13912         0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13913         0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13914         0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13915         0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13916         0x10290031, 0x10210039, 0x10210036, 0x10210033,
13917         0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13918         0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13919         0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13920         0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13921         0x10110027, 0x10110024, 0x10110022, 0x10110020,
13922         0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13923         0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13924         0x10090029, 0x10090027, 0x10090025, 0x10090023,
13925         0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13926         0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13927         0x10090015, 0x10090013, 0x10090012, 0x10090011,
13928         0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13929         0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13930         0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13931         0x10090008, 0x10090008, 0x10090007, 0x10090007,
13932         0x10090007, 0x10090006, 0x10090006, 0x10090005,
13933         0x10090005, 0x10090005, 0x10090005, 0x10090004,
13934         0x10090004, 0x10090004, 0x10090004, 0x10090003,
13935         0x10090003, 0x10090003, 0x10090003, 0x10090003,
13936         0x10090003, 0x10090002, 0x10090002, 0x10090002,
13937         0x10090002, 0x10090002, 0x10090002, 0x10090002,
13938         0x10090002, 0x10090002, 0x10090001, 0x10090001,
13939         0x10090001, 0x10090001, 0x10090001, 0x10090001
13940 };
13941
13942 static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13943         0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13944         0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13945         0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13946         0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13947         0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13948         0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13949         0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13950         0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13951         0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13952         0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13953         0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13954         0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13955         0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13956         0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13957         0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13958         0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13959         0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13960         0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13961         0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13962         0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13963         0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13964         0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13965         0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13966         0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13967         0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13968         0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
13969         0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
13970         0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
13971         0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
13972         0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
13973         0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
13974         0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
13975 };
13976
13977 static u32 nphy_tpc_5GHz_txgain_rev4[] = {
13978         0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
13979         0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
13980         0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
13981         0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
13982         0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
13983         0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
13984         0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
13985         0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
13986         0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
13987         0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
13988         0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
13989         0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
13990         0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
13991         0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
13992         0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
13993         0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
13994         0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
13995         0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
13996         0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
13997         0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
13998         0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
13999         0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
14000         0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
14001         0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
14002         0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
14003         0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
14004         0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14005         0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14006         0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14007         0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14008         0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14009         0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14010 };
14011
14012 static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14013         0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14014         0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14015         0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14016         0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14017         0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14018         0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14019         0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14020         0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14021         0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14022         0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14023         0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14024         0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14025         0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14026         0x09620039, 0x09620037, 0x09620035, 0x09620033,
14027         0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14028         0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14029         0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14030         0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14031         0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14032         0x06620039, 0x06620037, 0x06620035, 0x06620033,
14033         0x05620046, 0x05620044, 0x05620042, 0x05620040,
14034         0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14035         0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14036         0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14037         0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14038         0x03620038, 0x03620037, 0x03620035, 0x03620033,
14039         0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14040         0x02620046, 0x02620044, 0x02620043, 0x02620042,
14041         0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14042         0x01620043, 0x01620042, 0x01620041, 0x01620040,
14043         0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14044         0x0062003b, 0x00620039, 0x00620037, 0x00620035
14045 };
14046
14047 static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14048         0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14049         0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14050         0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14051         0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14052         0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14053         0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14054         0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14055         0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14056         0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14057         0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14058         0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14059         0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14060         0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14061         0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14062         0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14063         0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14064         0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14065         0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14066         0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14067         0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14068         0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14069         0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14070         0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14071         0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14072         0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14073         0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14074         0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14075         0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14076         0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14077         0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14078         0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14079         0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14080 };
14081
14082 static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14083 static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14084 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14085         0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a };
14086 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14087         0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16 };
14088
14089 static bool wlc_phy_chan2freq_nphy(phy_info_t *pi, uint channel, int *f,
14090                                    chan_info_nphy_radio2057_t **t0,
14091                                    chan_info_nphy_radio205x_t **t1,
14092                                    chan_info_nphy_radio2057_rev5_t **t2,
14093                                    chan_info_nphy_2055_t **t3);
14094 static void wlc_phy_chanspec_nphy_setup(phy_info_t *pi, chanspec_t chans,
14095                                         const nphy_sfo_cfg_t *c);
14096
14097 static void wlc_phy_adjust_rx_analpfbw_nphy(phy_info_t *pi,
14098                                             u16 reduction_factr);
14099 static void wlc_phy_adjust_min_noisevar_nphy(phy_info_t *pi, int ntones, int *,
14100                                              u32 *buf);
14101 static void wlc_phy_adjust_crsminpwr_nphy(phy_info_t *pi, u8 minpwr);
14102 static void wlc_phy_txlpfbw_nphy(phy_info_t *pi);
14103 static void wlc_phy_spurwar_nphy(phy_info_t *pi);
14104
14105 static void wlc_phy_radio_preinit_2055(phy_info_t *pi);
14106 static void wlc_phy_radio_init_2055(phy_info_t *pi);
14107 static void wlc_phy_radio_postinit_2055(phy_info_t *pi);
14108 static void wlc_phy_radio_preinit_205x(phy_info_t *pi);
14109 static void wlc_phy_radio_init_2056(phy_info_t *pi);
14110 static void wlc_phy_radio_postinit_2056(phy_info_t *pi);
14111 static void wlc_phy_radio_init_2057(phy_info_t *pi);
14112 static void wlc_phy_radio_postinit_2057(phy_info_t *pi);
14113 static void wlc_phy_workarounds_nphy(phy_info_t *pi);
14114 static void wlc_phy_workarounds_nphy_gainctrl(phy_info_t *pi);
14115 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(phy_info_t *pi);
14116 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(phy_info_t *pi);
14117 static void wlc_phy_adjust_lnagaintbl_nphy(phy_info_t *pi);
14118
14119 static void wlc_phy_restore_rssical_nphy(phy_info_t *pi);
14120 static void wlc_phy_reapply_txcal_coeffs_nphy(phy_info_t *pi);
14121 static void wlc_phy_tx_iq_war_nphy(phy_info_t *pi);
14122 static int wlc_phy_cal_rxiq_nphy_rev3(phy_info_t *pi, nphy_txgains_t tg,
14123                                       u8 type, bool d);
14124 static void wlc_phy_rxcal_gainctrl_nphy_rev5(phy_info_t *pi, u8 rxcore,
14125                                              u16 *rg, u8 type);
14126 static void wlc_phy_update_mimoconfig_nphy(phy_info_t *pi, s32 preamble);
14127 static void wlc_phy_savecal_nphy(phy_info_t *pi);
14128 static void wlc_phy_restorecal_nphy(phy_info_t *pi);
14129 static void wlc_phy_resetcca_nphy(phy_info_t *pi);
14130
14131 static void wlc_phy_txpwrctrl_config_nphy(phy_info_t *pi);
14132 static void wlc_phy_internal_cal_txgain_nphy(phy_info_t *pi);
14133 static void wlc_phy_precal_txgain_nphy(phy_info_t *pi);
14134 static void wlc_phy_update_txcal_ladder_nphy(phy_info_t *pi, u16 core);
14135
14136 static void wlc_phy_extpa_set_tx_digi_filts_nphy(phy_info_t *pi);
14137 static void wlc_phy_ipa_set_tx_digi_filts_nphy(phy_info_t *pi);
14138 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(phy_info_t *pi);
14139 static u16 wlc_phy_ipa_get_bbmult_nphy(phy_info_t *pi);
14140 static void wlc_phy_ipa_set_bbmult_nphy(phy_info_t *pi, u8 m0, u8 m1);
14141 static u32 *wlc_phy_get_ipa_gaintbl_nphy(phy_info_t *pi);
14142
14143 static void wlc_phy_a1_nphy(phy_info_t *pi, u8 core, u32 winsz, u32,
14144                             u32 e);
14145 static u8 wlc_phy_a3_nphy(phy_info_t *pi, u8 start_gain, u8 core);
14146 static void wlc_phy_a2_nphy(phy_info_t *pi, nphy_ipa_txcalgains_t *,
14147                             phy_cal_mode_t, u8);
14148 static void wlc_phy_papd_cal_cleanup_nphy(phy_info_t *pi,
14149                                           nphy_papd_restore_state *state);
14150 static void wlc_phy_papd_cal_setup_nphy(phy_info_t *pi,
14151                                         nphy_papd_restore_state *state, u8);
14152
14153 static void wlc_phy_clip_det_nphy(phy_info_t *pi, u8 write, u16 *vals);
14154
14155 static void wlc_phy_set_rfseq_nphy(phy_info_t *pi, u8 cmd, u8 *evts,
14156                                    u8 *dlys, u8 len);
14157
14158 static u16 wlc_phy_read_lpf_bw_ctl_nphy(phy_info_t *pi, u16 offset);
14159
14160 static void
14161 wlc_phy_rfctrl_override_nphy_rev7(phy_info_t *pi, u16 field, u16 value,
14162                                   u8 core_mask, u8 off,
14163                                   u8 override_id);
14164
14165 static void wlc_phy_rssi_cal_nphy_rev2(phy_info_t *pi, u8 rssi_type);
14166 static void wlc_phy_rssi_cal_nphy_rev3(phy_info_t *pi);
14167
14168 static bool wlc_phy_txpwr_srom_read_nphy(phy_info_t *pi);
14169 static void wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max,
14170                                             u16 *pwr_offset,
14171                                             u8 tmp_max_pwr, u8 rate_start,
14172                                             u8 rate_end);
14173
14174 static void wlc_phy_txpwr_limit_to_tbl_nphy(phy_info_t *pi);
14175 static void wlc_phy_txpwrctrl_coeff_setup_nphy(phy_info_t *pi);
14176 static void wlc_phy_txpwrctrl_idle_tssi_nphy(phy_info_t *pi);
14177 static void wlc_phy_txpwrctrl_pwr_setup_nphy(phy_info_t *pi);
14178
14179 static bool wlc_phy_txpwr_ison_nphy(phy_info_t *pi);
14180 static u8 wlc_phy_txpwr_idx_cur_get_nphy(phy_info_t *pi, u8 core);
14181 static void wlc_phy_txpwr_idx_cur_set_nphy(phy_info_t *pi, u8 idx0,
14182                                            u8 idx1);
14183 static void wlc_phy_a4(phy_info_t *pi, bool full_cal);
14184
14185 static u16 wlc_phy_radio205x_rcal(phy_info_t *pi);
14186
14187 static u16 wlc_phy_radio2057_rccal(phy_info_t *pi);
14188
14189 static u16 wlc_phy_gen_load_samples_nphy(phy_info_t *pi, u32 f_kHz,
14190                                             u16 max_val,
14191                                             u8 dac_test_mode);
14192 static void wlc_phy_loadsampletable_nphy(phy_info_t *pi, cs32 *tone_buf,
14193                                          u16 num_samps);
14194 static void wlc_phy_runsamples_nphy(phy_info_t *pi, u16 n, u16 lps,
14195                                     u16 wait, u8 iq, u8 dac_test_mode,
14196                                     bool modify_bbmult);
14197
14198 bool wlc_phy_bist_check_phy(wlc_phy_t *pih)
14199 {
14200         phy_info_t *pi = (phy_info_t *) pih;
14201         u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14202
14203         if (NREV_GE(pi->pubpi.phy_rev, 16))
14204                 return true;
14205
14206         phybist0 = read_phy_reg(pi, 0x0e);
14207         phybist1 = read_phy_reg(pi, 0x0f);
14208         phybist2 = read_phy_reg(pi, 0xea);
14209         phybist3 = read_phy_reg(pi, 0xeb);
14210         phybist4 = read_phy_reg(pi, 0x156);
14211
14212         if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14213             (phybist3 == 0) && (phybist4 == 0)) {
14214                 return true;
14215         }
14216
14217         return false;
14218 }
14219
14220 static void WLBANDINITFN(wlc_phy_bphy_init_nphy) (phy_info_t *pi)
14221 {
14222         u16 addr, val;
14223
14224         ASSERT(ISNPHY(pi));
14225
14226         val = 0x1e1f;
14227         for (addr = (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT);
14228              addr <= (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT_END); addr++) {
14229                 write_phy_reg(pi, addr, val);
14230                 if (addr == (NPHY_TO_BPHY_OFF + 0x97))
14231                         val = 0x3e3f;
14232                 else
14233                         val -= 0x0202;
14234         }
14235
14236         if (NORADIO_ENAB(pi->pubpi)) {
14237
14238                 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_PHYCRSTH, 0x3206);
14239
14240                 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_RSSI_TRESH, 0x281e);
14241
14242                 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_LNA_GAIN_RANGE, 0x1a);
14243
14244         } else {
14245
14246                 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_STEP, 0x668);
14247         }
14248 }
14249
14250 void
14251 wlc_phy_table_write_nphy(phy_info_t *pi, u32 id, u32 len, u32 offset,
14252                          u32 width, const void *data)
14253 {
14254         mimophytbl_info_t tbl;
14255
14256         tbl.tbl_id = id;
14257         tbl.tbl_len = len;
14258         tbl.tbl_offset = offset;
14259         tbl.tbl_width = width;
14260         tbl.tbl_ptr = data;
14261         wlc_phy_write_table_nphy(pi, &tbl);
14262 }
14263
14264 void
14265 wlc_phy_table_read_nphy(phy_info_t *pi, u32 id, u32 len, u32 offset,
14266                         u32 width, void *data)
14267 {
14268         mimophytbl_info_t tbl;
14269
14270         tbl.tbl_id = id;
14271         tbl.tbl_len = len;
14272         tbl.tbl_offset = offset;
14273         tbl.tbl_width = width;
14274         tbl.tbl_ptr = data;
14275         wlc_phy_read_table_nphy(pi, &tbl);
14276 }
14277
14278 static void WLBANDINITFN(wlc_phy_static_table_download_nphy) (phy_info_t *pi)
14279 {
14280         uint idx;
14281
14282         if (NREV_GE(pi->pubpi.phy_rev, 16)) {
14283                 for (idx = 0; idx < mimophytbl_info_sz_rev16; idx++)
14284                         wlc_phy_write_table_nphy(pi,
14285                                                  &mimophytbl_info_rev16[idx]);
14286         } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14287                 for (idx = 0; idx < mimophytbl_info_sz_rev7; idx++)
14288                         wlc_phy_write_table_nphy(pi,
14289                                                  &mimophytbl_info_rev7[idx]);
14290         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14291                 for (idx = 0; idx < mimophytbl_info_sz_rev3; idx++)
14292                         wlc_phy_write_table_nphy(pi,
14293                                                  &mimophytbl_info_rev3[idx]);
14294         } else {
14295                 for (idx = 0; idx < mimophytbl_info_sz_rev0; idx++)
14296                         wlc_phy_write_table_nphy(pi,
14297                                                  &mimophytbl_info_rev0[idx]);
14298         }
14299 }
14300
14301 static void WLBANDINITFN(wlc_phy_tbl_init_nphy) (phy_info_t *pi)
14302 {
14303         uint idx = 0;
14304         u8 antswctrllut;
14305
14306         if (pi->phy_init_por)
14307                 wlc_phy_static_table_download_nphy(pi);
14308
14309         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14310
14311                 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14312                     pi->srom_fem2g.antswctrllut : pi->srom_fem5g.antswctrllut;
14313
14314                 switch (antswctrllut) {
14315                 case 0:
14316
14317                         break;
14318
14319                 case 1:
14320
14321                         if (pi->aa2g == 7) {
14322
14323                                 wlc_phy_table_write_nphy(pi,
14324                                                          NPHY_TBL_ID_ANTSWCTRLLUT,
14325                                                          2, 0x21, 8,
14326                                                          &ant_sw_ctrl_tbl_rev8_2o3
14327                                                          [0]);
14328                         } else {
14329                                 wlc_phy_table_write_nphy(pi,
14330                                                          NPHY_TBL_ID_ANTSWCTRLLUT,
14331                                                          2, 0x21, 8,
14332                                                          &ant_sw_ctrl_tbl_rev8
14333                                                          [0]);
14334                         }
14335                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14336                                                  2, 0x25, 8,
14337                                                  &ant_sw_ctrl_tbl_rev8[2]);
14338                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14339                                                  2, 0x29, 8,
14340                                                  &ant_sw_ctrl_tbl_rev8[4]);
14341                         break;
14342
14343                 case 2:
14344
14345                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14346                                                  2, 0x1, 8,
14347                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core0
14348                                                  [0]);
14349                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14350                                                  2, 0x5, 8,
14351                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core0
14352                                                  [2]);
14353                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14354                                                  2, 0x9, 8,
14355                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core0
14356                                                  [4]);
14357
14358                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14359                                                  2, 0x21, 8,
14360                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core1
14361                                                  [0]);
14362                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14363                                                  2, 0x25, 8,
14364                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core1
14365                                                  [2]);
14366                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14367                                                  2, 0x29, 8,
14368                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core1
14369                                                  [4]);
14370                         break;
14371
14372                 default:
14373
14374                         ASSERT(0);
14375                         break;
14376                 }
14377
14378         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14379                 for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14380
14381                         if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14382                                 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14383                                     pi->srom_fem2g.antswctrllut : pi->
14384                                     srom_fem5g.antswctrllut;
14385                                 switch (antswctrllut) {
14386                                 case 0:
14387                                         wlc_phy_write_table_nphy(pi,
14388                                                                  &mimophytbl_info_rev3_volatile
14389                                                                  [idx]);
14390                                         break;
14391                                 case 1:
14392                                         wlc_phy_write_table_nphy(pi,
14393                                                                  &mimophytbl_info_rev3_volatile1
14394                                                                  [idx]);
14395                                         break;
14396                                 case 2:
14397                                         wlc_phy_write_table_nphy(pi,
14398                                                                  &mimophytbl_info_rev3_volatile2
14399                                                                  [idx]);
14400                                         break;
14401                                 case 3:
14402                                         wlc_phy_write_table_nphy(pi,
14403                                                                  &mimophytbl_info_rev3_volatile3
14404                                                                  [idx]);
14405                                         break;
14406                                 default:
14407
14408                                         ASSERT(0);
14409                                         break;
14410                                 }
14411                         } else {
14412                                 wlc_phy_write_table_nphy(pi,
14413                                                          &mimophytbl_info_rev3_volatile
14414                                                          [idx]);
14415                         }
14416                 }
14417         } else {
14418                 for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++) {
14419                         wlc_phy_write_table_nphy(pi,
14420                                                  &mimophytbl_info_rev0_volatile
14421                                                  [idx]);
14422                 }
14423         }
14424 }
14425
14426 static void
14427 wlc_phy_write_txmacreg_nphy(phy_info_t *pi, u16 holdoff, u16 delay)
14428 {
14429         write_phy_reg(pi, 0x77, holdoff);
14430         write_phy_reg(pi, 0xb4, delay);
14431 }
14432
14433 void wlc_phy_nphy_tkip_rifs_war(phy_info_t *pi, u8 rifs)
14434 {
14435         u16 holdoff, delay;
14436
14437         if (rifs) {
14438
14439                 holdoff = 0x10;
14440                 delay = 0x258;
14441         } else {
14442
14443                 holdoff = 0x15;
14444                 delay = 0x320;
14445         }
14446
14447         wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14448
14449         if (pi && pi->sh && (pi->sh->_rifs_phy != rifs)) {
14450                 pi->sh->_rifs_phy = rifs;
14451         }
14452 }
14453
14454 bool wlc_phy_attach_nphy(phy_info_t *pi)
14455 {
14456         uint i;
14457
14458         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6)) {
14459                 pi->phyhang_avoid = true;
14460         }
14461
14462         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14463
14464                 pi->nphy_gband_spurwar_en = true;
14465
14466                 if (pi->sh->boardflags2 & BFL2_SPUR_WAR) {
14467                         pi->nphy_aband_spurwar_en = true;
14468                 }
14469         }
14470         if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14471
14472                 if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR) {
14473                         pi->nphy_gband_spurwar2_en = true;
14474                 }
14475         }
14476
14477         pi->n_preamble_override = AUTO;
14478         if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14479                 pi->n_preamble_override = WLC_N_PREAMBLE_MIXEDMODE;
14480
14481         pi->nphy_txrx_chain = AUTO;
14482         pi->phy_scraminit = AUTO;
14483
14484         pi->nphy_rxcalparams = 0x010100B5;
14485
14486         pi->nphy_perical = PHY_PERICAL_MPHASE;
14487         pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14488         pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14489
14490         pi->nphy_gain_boost = true;
14491         pi->nphy_elna_gain_config = false;
14492         pi->radio_is_on = false;
14493
14494         for (i = 0; i < pi->pubpi.phy_corenum; i++) {
14495                 pi->nphy_txpwrindex[i].index = AUTO;
14496         }
14497
14498         wlc_phy_txpwrctrl_config_nphy(pi);
14499         if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14500                 pi->hwpwrctrl_capable = true;
14501
14502         pi->pi_fptr.init = wlc_phy_init_nphy;
14503         pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14504         pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14505         pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14506
14507         if (!wlc_phy_txpwr_srom_read_nphy(pi))
14508                 return false;
14509
14510         return true;
14511 }
14512
14513 static void wlc_phy_txpwrctrl_config_nphy(phy_info_t *pi)
14514 {
14515
14516         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14517                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14518                 pi->phy_5g_pwrgain = true;
14519                 return;
14520         }
14521
14522         pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14523         pi->phy_5g_pwrgain = false;
14524
14525         if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14526             NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14527                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14528         else if ((pi->sh->sromrev >= 4)
14529                  && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14530                 pi->phy_5g_pwrgain = true;
14531 }
14532
14533 void WLBANDINITFN(wlc_phy_init_nphy) (phy_info_t *pi)
14534 {
14535         u16 val;
14536         u16 clip1_ths[2];
14537         nphy_txgains_t target_gain;
14538         u8 tx_pwr_ctrl_state;
14539         bool do_nphy_cal = false;
14540         uint core;
14541         uint origidx, intr_val;
14542         d11regs_t *regs;
14543         u32 d11_clk_ctl_st;
14544
14545         core = 0;
14546
14547         if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN)) {
14548                 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
14549         }
14550
14551         if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
14552             ((pi->sh->chippkg == BCM4717_PKG_ID) ||
14553              (pi->sh->chippkg == BCM4718_PKG_ID))) {
14554                 if ((pi->sh->boardflags & BFL_EXTLNA) &&
14555                     (CHSPEC_IS2G(pi->radio_chanspec))) {
14556                         si_corereg(pi->sh->sih, SI_CC_IDX,
14557                                    offsetof(chipcregs_t, chipcontrol), 0x40,
14558                                    0x40);
14559                 }
14560         }
14561
14562         if ((!PHY_IPA(pi)) && (pi->sh->chip == BCM5357_CHIP_ID)) {
14563                 si_pmu_chipcontrol(pi->sh->sih, 1, CCTRL5357_EXTPA,
14564                                    CCTRL5357_EXTPA);
14565         }
14566
14567         if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
14568             CHSPEC_IS40(pi->radio_chanspec)) {
14569
14570                 regs = (d11regs_t *) si_switch_core(pi->sh->sih, D11_CORE_ID,
14571                                                     &origidx, &intr_val);
14572                 ASSERT(regs != NULL);
14573
14574                 d11_clk_ctl_st = R_REG(pi->sh->osh, &regs->clk_ctl_st);
14575                 AND_REG(pi->sh->osh, &regs->clk_ctl_st,
14576                         ~(CCS_FORCEHT | CCS_HTAREQ));
14577
14578                 W_REG(pi->sh->osh, &regs->clk_ctl_st, d11_clk_ctl_st);
14579
14580                 si_restore_core(pi->sh->sih, origidx, intr_val);
14581         }
14582
14583         pi->use_int_tx_iqlo_cal_nphy =
14584             (PHY_IPA(pi) ||
14585              (NREV_GE(pi->pubpi.phy_rev, 7) ||
14586               (NREV_GE(pi->pubpi.phy_rev, 5)
14587                && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
14588
14589         pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
14590
14591         pi->nphy_deaf_count = 0;
14592
14593         wlc_phy_tbl_init_nphy(pi);
14594
14595         pi->nphy_crsminpwr_adjusted = false;
14596         pi->nphy_noisevars_adjusted = false;
14597
14598         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14599                 write_phy_reg(pi, 0xe7, 0);
14600                 write_phy_reg(pi, 0xec, 0);
14601                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14602                         write_phy_reg(pi, 0x342, 0);
14603                         write_phy_reg(pi, 0x343, 0);
14604                         write_phy_reg(pi, 0x346, 0);
14605                         write_phy_reg(pi, 0x347, 0);
14606                 }
14607                 write_phy_reg(pi, 0xe5, 0);
14608                 write_phy_reg(pi, 0xe6, 0);
14609         } else {
14610                 write_phy_reg(pi, 0xec, 0);
14611         }
14612
14613         write_phy_reg(pi, 0x91, 0);
14614         write_phy_reg(pi, 0x92, 0);
14615         if (NREV_LT(pi->pubpi.phy_rev, 6)) {
14616                 write_phy_reg(pi, 0x93, 0);
14617                 write_phy_reg(pi, 0x94, 0);
14618         }
14619
14620         and_phy_reg(pi, 0xa1, ~3);
14621
14622         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14623                 write_phy_reg(pi, 0x8f, 0);
14624                 write_phy_reg(pi, 0xa5, 0);
14625         } else {
14626                 write_phy_reg(pi, 0xa5, 0);
14627         }
14628
14629         if (NREV_IS(pi->pubpi.phy_rev, 2))
14630                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
14631         else if (NREV_LT(pi->pubpi.phy_rev, 2))
14632                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
14633
14634         write_phy_reg(pi, 0x203, 32);
14635         write_phy_reg(pi, 0x201, 32);
14636
14637         if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
14638                 write_phy_reg(pi, 0x20d, 160);
14639         else
14640                 write_phy_reg(pi, 0x20d, 184);
14641
14642         write_phy_reg(pi, 0x13a, 200);
14643
14644         write_phy_reg(pi, 0x70, 80);
14645
14646         write_phy_reg(pi, 0x1ff, 48);
14647
14648         if (NREV_LT(pi->pubpi.phy_rev, 8)) {
14649                 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
14650         }
14651
14652         wlc_phy_stf_chain_upd_nphy(pi);
14653
14654         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
14655                 write_phy_reg(pi, 0x180, 0xaa8);
14656                 write_phy_reg(pi, 0x181, 0x9a4);
14657         }
14658
14659         if (PHY_IPA(pi)) {
14660                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
14661
14662                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
14663                                     0x29b, (0x1 << 0), (1) << 0);
14664
14665                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
14666                                     0x29c, (0x1ff << 7),
14667                                     (pi->nphy_papd_epsilon_offset[core]) << 7);
14668
14669                 }
14670
14671                 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
14672         } else {
14673
14674                 if (NREV_GE(pi->pubpi.phy_rev, 5)) {
14675                         wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
14676                 }
14677         }
14678
14679         wlc_phy_workarounds_nphy(pi);
14680
14681         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
14682
14683         val = read_phy_reg(pi, 0x01);
14684         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
14685         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
14686         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
14687
14688         wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
14689
14690         wlc_phy_pa_override_nphy(pi, OFF);
14691         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
14692         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
14693         wlc_phy_pa_override_nphy(pi, ON);
14694
14695         wlc_phy_classifier_nphy(pi, 0, 0);
14696         wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
14697
14698         if (CHSPEC_IS2G(pi->radio_chanspec))
14699                 wlc_phy_bphy_init_nphy(pi);
14700
14701         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
14702         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
14703
14704         wlc_phy_txpwr_fixpower_nphy(pi);
14705
14706         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
14707
14708         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
14709
14710         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14711                 u32 *tx_pwrctrl_tbl = NULL;
14712                 u16 idx;
14713                 s16 pga_gn = 0;
14714                 s16 pad_gn = 0;
14715                 s32 rfpwr_offset = 0;
14716
14717                 if (PHY_IPA(pi)) {
14718                         tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
14719                 } else {
14720                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
14721                                 if NREV_IS
14722                                         (pi->pubpi.phy_rev, 3) {
14723                                         tx_pwrctrl_tbl =
14724                                             nphy_tpc_5GHz_txgain_rev3;
14725                                 } else if NREV_IS
14726                                         (pi->pubpi.phy_rev, 4) {
14727                                         tx_pwrctrl_tbl =
14728                                             (pi->srom_fem5g.extpagain == 3) ?
14729                                             nphy_tpc_5GHz_txgain_HiPwrEPA :
14730                                             nphy_tpc_5GHz_txgain_rev4;
14731                                 } else {
14732                                         tx_pwrctrl_tbl =
14733                                             nphy_tpc_5GHz_txgain_rev5;
14734                                 }
14735
14736                         } else {
14737                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14738                                         if (pi->pubpi.radiorev == 5) {
14739                                                 tx_pwrctrl_tbl =
14740                                                     nphy_tpc_txgain_epa_2057rev5;
14741                                         } else if (pi->pubpi.radiorev == 3) {
14742                                                 tx_pwrctrl_tbl =
14743                                                     nphy_tpc_txgain_epa_2057rev3;
14744                                         }
14745
14746                                 } else {
14747                                         if (NREV_GE(pi->pubpi.phy_rev, 5) &&
14748                                             (pi->srom_fem2g.extpagain == 3)) {
14749                                                 tx_pwrctrl_tbl =
14750                                                     nphy_tpc_txgain_HiPwrEPA;
14751                                         } else {
14752                                                 tx_pwrctrl_tbl =
14753                                                     nphy_tpc_txgain_rev3;
14754                                         }
14755                                 }
14756                         }
14757                 }
14758
14759                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
14760                                          192, 32, tx_pwrctrl_tbl);
14761                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
14762                                          192, 32, tx_pwrctrl_tbl);
14763
14764                 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
14765
14766                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14767
14768                         for (idx = 0; idx < 128; idx++) {
14769                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
14770                                 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
14771
14772                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
14773                                         if ((pi->pubpi.radiorev == 3) ||
14774                                             (pi->pubpi.radiorev == 4) ||
14775                                             (pi->pubpi.radiorev == 6)) {
14776                                                 rfpwr_offset = (s16)
14777                                                     nphy_papd_padgain_dlt_2g_2057rev3n4
14778                                                     [pad_gn];
14779                                         } else if (pi->pubpi.radiorev == 5) {
14780                                                 rfpwr_offset = (s16)
14781                                                     nphy_papd_padgain_dlt_2g_2057rev5
14782                                                     [pad_gn];
14783                                         } else if ((pi->pubpi.radiorev == 7)
14784                                                    || (pi->pubpi.radiorev ==
14785                                                        8)) {
14786                                                 rfpwr_offset = (s16)
14787                                                     nphy_papd_padgain_dlt_2g_2057rev7
14788                                                     [pad_gn];
14789                                         } else {
14790                                                 ASSERT(0);
14791                                         }
14792
14793                                 } else {
14794                                         if ((pi->pubpi.radiorev == 3) ||
14795                                             (pi->pubpi.radiorev == 4) ||
14796                                             (pi->pubpi.radiorev == 6)) {
14797                                                 rfpwr_offset = (s16)
14798                                                     nphy_papd_pgagain_dlt_5g_2057
14799                                                     [pga_gn];
14800                                         } else if ((pi->pubpi.radiorev == 7)
14801                                                    || (pi->pubpi.radiorev ==
14802                                                        8)) {
14803                                                 rfpwr_offset = (s16)
14804                                                     nphy_papd_pgagain_dlt_5g_2057rev7
14805                                                     [pga_gn];
14806                                         } else {
14807                                                 ASSERT(0);
14808                                         }
14809                                 }
14810                                 wlc_phy_table_write_nphy(pi,
14811                                                          NPHY_TBL_ID_CORE1TXPWRCTL,
14812                                                          1, 576 + idx, 32,
14813                                                          &rfpwr_offset);
14814                                 wlc_phy_table_write_nphy(pi,
14815                                                          NPHY_TBL_ID_CORE2TXPWRCTL,
14816                                                          1, 576 + idx, 32,
14817                                                          &rfpwr_offset);
14818                         }
14819                 } else {
14820
14821                         for (idx = 0; idx < 128; idx++) {
14822                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
14823                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
14824                                         rfpwr_offset = (s16)
14825                                             nphy_papd_pga_gain_delta_ipa_2g
14826                                             [pga_gn];
14827                                 } else {
14828                                         rfpwr_offset = (s16)
14829                                             nphy_papd_pga_gain_delta_ipa_5g
14830                                             [pga_gn];
14831                                 }
14832
14833                                 wlc_phy_table_write_nphy(pi,
14834                                                          NPHY_TBL_ID_CORE1TXPWRCTL,
14835                                                          1, 576 + idx, 32,
14836                                                          &rfpwr_offset);
14837                                 wlc_phy_table_write_nphy(pi,
14838                                                          NPHY_TBL_ID_CORE2TXPWRCTL,
14839                                                          1, 576 + idx, 32,
14840                                                          &rfpwr_offset);
14841                         }
14842
14843                 }
14844         } else {
14845
14846                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
14847                                          192, 32, nphy_tpc_txgain);
14848                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
14849                                          192, 32, nphy_tpc_txgain);
14850         }
14851
14852         if (pi->sh->phyrxchain != 0x3) {
14853                 wlc_phy_rxcore_setstate_nphy((wlc_phy_t *) pi,
14854                                              pi->sh->phyrxchain);
14855         }
14856
14857         if (PHY_PERICAL_MPHASE_PENDING(pi)) {
14858                 wlc_phy_cal_perical_mphase_restart(pi);
14859         }
14860
14861         if (!NORADIO_ENAB(pi->pubpi)) {
14862                 bool do_rssi_cal = false;
14863
14864                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14865                         do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
14866                             (pi->nphy_rssical_chanspec_2G == 0) :
14867                             (pi->nphy_rssical_chanspec_5G == 0);
14868
14869                         if (do_rssi_cal) {
14870                                 wlc_phy_rssi_cal_nphy(pi);
14871                         } else {
14872                                 wlc_phy_restore_rssical_nphy(pi);
14873                         }
14874                 } else {
14875                         wlc_phy_rssi_cal_nphy(pi);
14876                 }
14877
14878                 if (!SCAN_RM_IN_PROGRESS(pi)) {
14879                         do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
14880                             (pi->nphy_iqcal_chanspec_2G == 0) :
14881                             (pi->nphy_iqcal_chanspec_5G == 0);
14882                 }
14883
14884                 if (!pi->do_initcal)
14885                         do_nphy_cal = false;
14886
14887                 if (do_nphy_cal) {
14888
14889                         target_gain = wlc_phy_get_tx_gain_nphy(pi);
14890
14891                         if (pi->antsel_type == ANTSEL_2x3)
14892                                 wlc_phy_antsel_init((wlc_phy_t *) pi, true);
14893
14894                         if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
14895                                 wlc_phy_rssi_cal_nphy(pi);
14896
14897                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14898                                         pi->nphy_cal_orig_pwr_idx[0] =
14899                                             pi->nphy_txpwrindex[PHY_CORE_0].
14900                                             index_internal;
14901                                         pi->nphy_cal_orig_pwr_idx[1] =
14902                                             pi->nphy_txpwrindex[PHY_CORE_1].
14903                                             index_internal;
14904
14905                                         wlc_phy_precal_txgain_nphy(pi);
14906                                         target_gain =
14907                                             wlc_phy_get_tx_gain_nphy(pi);
14908                                 }
14909
14910                                 if (wlc_phy_cal_txiqlo_nphy
14911                                     (pi, target_gain, true, false) == BCME_OK) {
14912                                         if (wlc_phy_cal_rxiq_nphy
14913                                             (pi, target_gain, 2,
14914                                              false) == BCME_OK) {
14915                                                 wlc_phy_savecal_nphy(pi);
14916
14917                                         }
14918                                 }
14919                         } else if (pi->mphase_cal_phase_id ==
14920                                    MPHASE_CAL_STATE_IDLE) {
14921
14922                                 wlc_phy_cal_perical((wlc_phy_t *) pi,
14923                                                     PHY_PERICAL_PHYINIT);
14924                         }
14925                 } else {
14926                         wlc_phy_restorecal_nphy(pi);
14927                 }
14928         }
14929
14930         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
14931
14932         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
14933
14934         wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
14935
14936         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
14937
14938                 write_phy_reg(pi, 0x70, 50);
14939
14940         wlc_phy_txlpfbw_nphy(pi);
14941
14942         wlc_phy_spurwar_nphy(pi);
14943
14944 }
14945
14946 static void wlc_phy_update_mimoconfig_nphy(phy_info_t *pi, s32 preamble)
14947 {
14948         bool gf_preamble = false;
14949         u16 val;
14950
14951         if (preamble == WLC_N_PREAMBLE_GF) {
14952                 gf_preamble = true;
14953         }
14954
14955         val = read_phy_reg(pi, 0xed);
14956
14957         val |= RX_GF_MM_AUTO;
14958         val &= ~RX_GF_OR_MM;
14959         if (gf_preamble)
14960                 val |= RX_GF_OR_MM;
14961
14962         write_phy_reg(pi, 0xed, val);
14963 }
14964
14965 static void wlc_phy_resetcca_nphy(phy_info_t *pi)
14966 {
14967         u16 val;
14968
14969         ASSERT(0 == (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC));
14970
14971         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
14972
14973         val = read_phy_reg(pi, 0x01);
14974         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
14975         udelay(1);
14976         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
14977
14978         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
14979
14980         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
14981 }
14982
14983 void wlc_phy_pa_override_nphy(phy_info_t *pi, bool en)
14984 {
14985         u16 rfctrlintc_override_val;
14986
14987         if (!en) {
14988
14989                 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
14990                 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
14991
14992                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14993                         rfctrlintc_override_val = 0x1480;
14994                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14995                         rfctrlintc_override_val =
14996                             CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
14997                 } else {
14998                         rfctrlintc_override_val =
14999                             CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
15000                 }
15001
15002                 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
15003                 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
15004         } else {
15005
15006                 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
15007                 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
15008         }
15009
15010 }
15011
15012 void wlc_phy_stf_chain_upd_nphy(phy_info_t *pi)
15013 {
15014
15015         u16 txrx_chain =
15016             (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
15017         bool CoreActv_override = false;
15018
15019         if (pi->nphy_txrx_chain == WLC_N_TXRX_CHAIN0) {
15020                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
15021                 CoreActv_override = true;
15022
15023                 if (NREV_LE(pi->pubpi.phy_rev, 2)) {
15024                         and_phy_reg(pi, 0xa0, ~0x20);
15025                 }
15026         } else if (pi->nphy_txrx_chain == WLC_N_TXRX_CHAIN1) {
15027                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
15028                 CoreActv_override = true;
15029
15030                 if (NREV_LE(pi->pubpi.phy_rev, 2)) {
15031                         or_phy_reg(pi, 0xa0, 0x20);
15032                 }
15033         }
15034
15035         mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
15036
15037         if (CoreActv_override) {
15038
15039                 pi->nphy_perical = PHY_PERICAL_DISABLE;
15040                 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
15041         } else {
15042                 pi->nphy_perical = PHY_PERICAL_MPHASE;
15043                 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
15044         }
15045 }
15046
15047 void wlc_phy_rxcore_setstate_nphy(wlc_phy_t *pih, u8 rxcore_bitmask)
15048 {
15049         u16 regval;
15050         u16 tbl_buf[16];
15051         uint i;
15052         phy_info_t *pi = (phy_info_t *) pih;
15053         u16 tbl_opcode;
15054         bool suspend;
15055
15056         pi->sh->phyrxchain = rxcore_bitmask;
15057
15058         if (!pi->sh->clk)
15059                 return;
15060
15061         suspend =
15062             (0 == (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC));
15063         if (!suspend)
15064                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
15065
15066         if (pi->phyhang_avoid)
15067                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15068
15069         regval = read_phy_reg(pi, 0xa2);
15070         regval &= ~(0xf << 4);
15071         regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
15072         write_phy_reg(pi, 0xa2, regval);
15073
15074         if ((rxcore_bitmask & 0x3) != 0x3) {
15075
15076                 write_phy_reg(pi, 0x20e, 1);
15077
15078                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15079                         if (pi->rx2tx_biasentry == -1) {
15080                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
15081                                                         ARRAY_SIZE(tbl_buf), 80,
15082                                                         16, tbl_buf);
15083
15084                                 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
15085                                         if (tbl_buf[i] ==
15086                                             NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
15087
15088                                                 pi->rx2tx_biasentry = (u8) i;
15089                                                 tbl_opcode =
15090                                                     NPHY_REV3_RFSEQ_CMD_NOP;
15091                                                 wlc_phy_table_write_nphy(pi,
15092                                                                          NPHY_TBL_ID_RFSEQ,
15093                                                                          1, i,
15094                                                                          16,
15095                                                                          &tbl_opcode);
15096                                                 break;
15097                                         } else if (tbl_buf[i] ==
15098                                                    NPHY_REV3_RFSEQ_CMD_END) {
15099                                                 break;
15100                                         }
15101                                 }
15102                         }
15103                 }
15104         } else {
15105
15106                 write_phy_reg(pi, 0x20e, 30);
15107
15108                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15109                         if (pi->rx2tx_biasentry != -1) {
15110                                 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
15111                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15112                                                          1, pi->rx2tx_biasentry,
15113                                                          16, &tbl_opcode);
15114                                 pi->rx2tx_biasentry = -1;
15115                         }
15116                 }
15117         }
15118
15119         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
15120
15121         if (pi->phyhang_avoid)
15122                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
15123
15124         if (!suspend)
15125                 wlapi_enable_mac(pi->sh->physhim);
15126 }
15127
15128 u8 wlc_phy_rxcore_getstate_nphy(wlc_phy_t *pih)
15129 {
15130         u16 regval, rxen_bits;
15131         phy_info_t *pi = (phy_info_t *) pih;
15132
15133         regval = read_phy_reg(pi, 0xa2);
15134         rxen_bits = (regval >> 4) & 0xf;
15135
15136         return (u8) rxen_bits;
15137 }
15138
15139 bool wlc_phy_n_txpower_ipa_ison(phy_info_t *pi)
15140 {
15141         return PHY_IPA(pi);
15142 }
15143
15144 static void wlc_phy_txpwr_limit_to_tbl_nphy(phy_info_t *pi)
15145 {
15146         u8 idx, idx2, i, delta_ind;
15147
15148         for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++) {
15149                 pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
15150         }
15151
15152         for (i = 0; i < 4; i++) {
15153                 idx2 = 0;
15154
15155                 delta_ind = 0;
15156
15157                 switch (i) {
15158                 case 0:
15159
15160                         if (CHSPEC_IS40(pi->radio_chanspec)
15161                             && NPHY_IS_SROM_REINTERPRET) {
15162                                 idx = TXP_FIRST_MCS_40_SISO;
15163                         } else {
15164                                 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15165                                     TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
15166                                 delta_ind = 1;
15167                         }
15168                         break;
15169
15170                 case 1:
15171
15172                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15173                             TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
15174                         break;
15175
15176                 case 2:
15177
15178                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15179                             TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
15180                         break;
15181
15182                 case 3:
15183
15184                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15185                             TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
15186                         break;
15187                 }
15188
15189                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15190                     pi->tx_power_offset[idx];
15191                 idx = idx + delta_ind;
15192                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15193                     pi->tx_power_offset[idx];
15194                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15195                     pi->tx_power_offset[idx];
15196                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15197                     pi->tx_power_offset[idx++];
15198
15199                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15200                     pi->tx_power_offset[idx++];
15201                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15202                     pi->tx_power_offset[idx];
15203                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15204                     pi->tx_power_offset[idx];
15205                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15206                     pi->tx_power_offset[idx++];
15207
15208                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15209                     pi->tx_power_offset[idx++];
15210                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15211                     pi->tx_power_offset[idx];
15212                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15213                     pi->tx_power_offset[idx];
15214                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15215                     pi->tx_power_offset[idx++];
15216
15217                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15218                     pi->tx_power_offset[idx];
15219                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15220                     pi->tx_power_offset[idx++];
15221                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15222                     pi->tx_power_offset[idx];
15223                 idx = idx + 1 - delta_ind;
15224                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15225                     pi->tx_power_offset[idx];
15226
15227                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15228                     pi->tx_power_offset[idx];
15229                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15230                     pi->tx_power_offset[idx];
15231                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15232                     pi->tx_power_offset[idx];
15233                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15234                     pi->tx_power_offset[idx];
15235         }
15236 }
15237
15238 void wlc_phy_cal_init_nphy(phy_info_t *pi)
15239 {
15240 }
15241
15242 static void wlc_phy_war_force_trsw_to_R_cliplo_nphy(phy_info_t *pi, u8 core)
15243 {
15244         if (core == PHY_CORE_0) {
15245                 write_phy_reg(pi, 0x38, 0x4);
15246                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
15247                         write_phy_reg(pi, 0x37, 0x0060);
15248                 } else {
15249                         write_phy_reg(pi, 0x37, 0x1080);
15250                 }
15251         } else if (core == PHY_CORE_1) {
15252                 write_phy_reg(pi, 0x2ae, 0x4);
15253                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
15254                         write_phy_reg(pi, 0x2ad, 0x0060);
15255                 } else {
15256                         write_phy_reg(pi, 0x2ad, 0x1080);
15257                 }
15258         }
15259 }
15260
15261 static void wlc_phy_war_txchain_upd_nphy(phy_info_t *pi, u8 txchain)
15262 {
15263         u8 txchain0, txchain1;
15264
15265         txchain0 = txchain & 0x1;
15266         txchain1 = (txchain & 0x2) >> 1;
15267         if (!txchain0) {
15268                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15269         }
15270
15271         if (!txchain1) {
15272                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15273         }
15274 }
15275
15276 static void wlc_phy_workarounds_nphy(phy_info_t *pi)
15277 {
15278         u8 rfseq_rx2tx_events[] = {
15279                 NPHY_RFSEQ_CMD_NOP,
15280                 NPHY_RFSEQ_CMD_RXG_FBW,
15281                 NPHY_RFSEQ_CMD_TR_SWITCH,
15282                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15283                 NPHY_RFSEQ_CMD_RXPD_TXPD,
15284                 NPHY_RFSEQ_CMD_TX_GAIN,
15285                 NPHY_RFSEQ_CMD_EXT_PA
15286         };
15287         u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
15288         u8 rfseq_tx2rx_events[] = {
15289                 NPHY_RFSEQ_CMD_NOP,
15290                 NPHY_RFSEQ_CMD_EXT_PA,
15291                 NPHY_RFSEQ_CMD_TX_GAIN,
15292                 NPHY_RFSEQ_CMD_RXPD_TXPD,
15293                 NPHY_RFSEQ_CMD_TR_SWITCH,
15294                 NPHY_RFSEQ_CMD_RXG_FBW,
15295                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
15296         };
15297         u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
15298         u8 rfseq_tx2rx_events_rev3[] = {
15299                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
15300                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
15301                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
15302                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
15303                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
15304                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
15305                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
15306                 NPHY_REV3_RFSEQ_CMD_END
15307         };
15308         u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
15309         u8 rfseq_rx2tx_events_rev3[] = {
15310                 NPHY_REV3_RFSEQ_CMD_NOP,
15311                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
15312                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
15313                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
15314                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
15315                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
15316                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
15317                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
15318                 NPHY_REV3_RFSEQ_CMD_END
15319         };
15320         u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
15321
15322         u8 rfseq_rx2tx_events_rev3_ipa[] = {
15323                 NPHY_REV3_RFSEQ_CMD_NOP,
15324                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
15325                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
15326                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
15327                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
15328                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
15329                 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
15330                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
15331                 NPHY_REV3_RFSEQ_CMD_END
15332         };
15333         u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
15334         u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
15335
15336         s16 alpha0, alpha1, alpha2;
15337         s16 beta0, beta1, beta2;
15338         u32 leg_data_weights, ht_data_weights, nss1_data_weights,
15339             stbc_data_weights;
15340         u8 chan_freq_range = 0;
15341         u16 dac_control = 0x0002;
15342         u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
15343         u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
15344         u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
15345         u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
15346         u16 *aux_adc_vmid;
15347         u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
15348         u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
15349         u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
15350         u16 *aux_adc_gain;
15351         u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
15352         u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
15353         s32 min_nvar_val = 0x18d;
15354         s32 min_nvar_offset_6mbps = 20;
15355         u8 pdetrange;
15356         u8 triso;
15357         u16 regval;
15358         u16 afectrl_adc_ctrl1_rev7 = 0x20;
15359         u16 afectrl_adc_ctrl2_rev7 = 0x0;
15360         u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
15361         u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
15362         u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
15363         u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
15364         u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
15365         u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
15366         u16 ipalvlshift_3p3_war_en = 0;
15367         u16 rccal_bcap_val, rccal_scap_val;
15368         u16 rccal_tx20_11b_bcap = 0;
15369         u16 rccal_tx20_11b_scap = 0;
15370         u16 rccal_tx20_11n_bcap = 0;
15371         u16 rccal_tx20_11n_scap = 0;
15372         u16 rccal_tx40_11n_bcap = 0;
15373         u16 rccal_tx40_11n_scap = 0;
15374         u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
15375         u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
15376         u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
15377         u16 tx_lpf_bw_ofdm_20mhz = 0;
15378         u16 tx_lpf_bw_ofdm_40mhz = 0;
15379         u16 tx_lpf_bw_11b = 0;
15380         u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
15381         u16 txgm_idac_bleed = 0;
15382         bool rccal_ovrd = false;
15383         u16 freq;
15384         int coreNum;
15385
15386         if (CHSPEC_IS5G(pi->radio_chanspec)) {
15387                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
15388         } else {
15389                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
15390         }
15391
15392         if (pi->phyhang_avoid)
15393                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15394
15395         if (!ISSIM_ENAB(pi->sh->sih)) {
15396                 or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
15397         }
15398
15399         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15400
15401                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
15402                         mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
15403
15404                         mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
15405                         mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
15406                         mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
15407                         mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
15408                         mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
15409                         mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
15410                         mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
15411                         mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
15412                         mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
15413                         mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
15414                         mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
15415                         mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
15416                         mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
15417                         mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
15418                         mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
15419                         mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
15420                 }
15421
15422                 if (NREV_LE(pi->pubpi.phy_rev, 8)) {
15423                         write_phy_reg(pi, 0x23f, 0x1b0);
15424                         write_phy_reg(pi, 0x240, 0x1b0);
15425                 }
15426
15427                 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
15428                         mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
15429                 }
15430
15431                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
15432                                          &dac_control);
15433                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
15434                                          &dac_control);
15435
15436                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15437                                         1, 0, 32, &leg_data_weights);
15438                 leg_data_weights = leg_data_weights & 0xffffff;
15439                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15440                                          1, 0, 32, &leg_data_weights);
15441
15442                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15443                                          2, 0x15e, 16,
15444                                          rfseq_rx2tx_dacbufpu_rev7);
15445                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
15446                                          rfseq_rx2tx_dacbufpu_rev7);
15447
15448                 if (PHY_IPA(pi)) {
15449                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
15450                                                rfseq_rx2tx_events_rev3_ipa,
15451                                                rfseq_rx2tx_dlys_rev3_ipa,
15452                                                sizeof
15453                                                (rfseq_rx2tx_events_rev3_ipa) /
15454                                                sizeof
15455                                                (rfseq_rx2tx_events_rev3_ipa
15456                                                 [0]));
15457                 }
15458
15459                 mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
15460                 mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
15461
15462                 tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
15463                 tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
15464                 tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
15465
15466                 if (PHY_IPA(pi)) {
15467
15468                         if (((pi->pubpi.radiorev == 5)
15469                              && (CHSPEC_IS40(pi->radio_chanspec) == 1))
15470                             || (pi->pubpi.radiorev == 7)
15471                             || (pi->pubpi.radiorev == 8)) {
15472
15473                                 rccal_bcap_val =
15474                                     read_radio_reg(pi,
15475                                                    RADIO_2057_RCCAL_BCAP_VAL);
15476                                 rccal_scap_val =
15477                                     read_radio_reg(pi,
15478                                                    RADIO_2057_RCCAL_SCAP_VAL);
15479
15480                                 rccal_tx20_11b_bcap = rccal_bcap_val;
15481                                 rccal_tx20_11b_scap = rccal_scap_val;
15482
15483                                 if ((pi->pubpi.radiorev == 5) &&
15484                                     (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
15485
15486                                         rccal_tx20_11n_bcap = rccal_bcap_val;
15487                                         rccal_tx20_11n_scap = rccal_scap_val;
15488                                         rccal_tx40_11n_bcap = 0xc;
15489                                         rccal_tx40_11n_scap = 0xc;
15490
15491                                         rccal_ovrd = true;
15492
15493                                 } else if ((pi->pubpi.radiorev == 7)
15494                                            || (pi->pubpi.radiorev == 8)) {
15495
15496                                         tx_lpf_bw_ofdm_20mhz = 4;
15497                                         tx_lpf_bw_11b = 1;
15498
15499                                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
15500                                                 rccal_tx20_11n_bcap = 0xc;
15501                                                 rccal_tx20_11n_scap = 0xc;
15502                                                 rccal_tx40_11n_bcap = 0xa;
15503                                                 rccal_tx40_11n_scap = 0xa;
15504                                         } else {
15505                                                 rccal_tx20_11n_bcap = 0x14;
15506                                                 rccal_tx20_11n_scap = 0x14;
15507                                                 rccal_tx40_11n_bcap = 0xf;
15508                                                 rccal_tx40_11n_scap = 0xf;
15509                                         }
15510
15511                                         rccal_ovrd = true;
15512                                 }
15513                         }
15514
15515                 } else {
15516
15517                         if (pi->pubpi.radiorev == 5) {
15518
15519                                 tx_lpf_bw_ofdm_20mhz = 1;
15520                                 tx_lpf_bw_ofdm_40mhz = 3;
15521
15522                                 rccal_bcap_val =
15523                                     read_radio_reg(pi,
15524                                                    RADIO_2057_RCCAL_BCAP_VAL);
15525                                 rccal_scap_val =
15526                                     read_radio_reg(pi,
15527                                                    RADIO_2057_RCCAL_SCAP_VAL);
15528
15529                                 rccal_tx20_11b_bcap = rccal_bcap_val;
15530                                 rccal_tx20_11b_scap = rccal_scap_val;
15531
15532                                 rccal_tx20_11n_bcap = 0x13;
15533                                 rccal_tx20_11n_scap = 0x11;
15534                                 rccal_tx40_11n_bcap = 0x13;
15535                                 rccal_tx40_11n_scap = 0x11;
15536
15537                                 rccal_ovrd = true;
15538                         }
15539                 }
15540
15541                 if (rccal_ovrd) {
15542
15543                         rx2tx_lpf_rc_lut_tx20_11b = (rccal_tx20_11b_bcap << 8) |
15544                             (rccal_tx20_11b_scap << 3) | tx_lpf_bw_11b;
15545                         rx2tx_lpf_rc_lut_tx20_11n = (rccal_tx20_11n_bcap << 8) |
15546                             (rccal_tx20_11n_scap << 3) | tx_lpf_bw_ofdm_20mhz;
15547                         rx2tx_lpf_rc_lut_tx40_11n = (rccal_tx40_11n_bcap << 8) |
15548                             (rccal_tx40_11n_scap << 3) | tx_lpf_bw_ofdm_40mhz;
15549
15550                         for (coreNum = 0; coreNum <= 1; coreNum++) {
15551                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15552                                                          1,
15553                                                          0x152 + coreNum * 0x10,
15554                                                          16,
15555                                                          &rx2tx_lpf_rc_lut_tx20_11b);
15556                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15557                                                          1,
15558                                                          0x153 + coreNum * 0x10,
15559                                                          16,
15560                                                          &rx2tx_lpf_rc_lut_tx20_11n);
15561                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15562                                                          1,
15563                                                          0x154 + coreNum * 0x10,
15564                                                          16,
15565                                                          &rx2tx_lpf_rc_lut_tx20_11n);
15566                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15567                                                          1,
15568                                                          0x155 + coreNum * 0x10,
15569                                                          16,
15570                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15571                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15572                                                          1,
15573                                                          0x156 + coreNum * 0x10,
15574                                                          16,
15575                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15576                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15577                                                          1,
15578                                                          0x157 + coreNum * 0x10,
15579                                                          16,
15580                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15581                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15582                                                          1,
15583                                                          0x158 + coreNum * 0x10,
15584                                                          16,
15585                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15586                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15587                                                          1,
15588                                                          0x159 + coreNum * 0x10,
15589                                                          16,
15590                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15591                         }
15592
15593                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4),
15594                                                           1, 0x3, 0,
15595                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
15596                 }
15597
15598                 if (!NORADIO_ENAB(pi->pubpi)) {
15599                         write_phy_reg(pi, 0x32f, 0x3);
15600                 }
15601
15602                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6)) {
15603                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
15604                                                           1, 0x3, 0,
15605                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
15606                 }
15607
15608                 if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
15609                     (pi->pubpi.radiorev == 6)) {
15610                         if ((pi->sh->sromrev >= 8)
15611                             && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
15612                                 ipalvlshift_3p3_war_en = 1;
15613
15614                         if (ipalvlshift_3p3_war_en) {
15615                                 write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG,
15616                                                 0x5);
15617                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL1,
15618                                                 0x30);
15619                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
15620                                 or_radio_reg(pi,
15621                                              RADIO_2057_RXTXBIAS_CONFIG_CORE0,
15622                                              0x1);
15623                                 or_radio_reg(pi,
15624                                              RADIO_2057_RXTXBIAS_CONFIG_CORE1,
15625                                              0x1);
15626
15627                                 ipa2g_mainbias = 0x1f;
15628
15629                                 ipa2g_casconv = 0x6f;
15630
15631                                 ipa2g_biasfilt = 0xaa;
15632                         } else {
15633
15634                                 ipa2g_mainbias = 0x2b;
15635
15636                                 ipa2g_casconv = 0x7f;
15637
15638                                 ipa2g_biasfilt = 0xee;
15639                         }
15640
15641                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
15642                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
15643                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15644                                                          coreNum, IPA2G_IMAIN,
15645                                                          ipa2g_mainbias);
15646                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15647                                                          coreNum, IPA2G_CASCONV,
15648                                                          ipa2g_casconv);
15649                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15650                                                          coreNum,
15651                                                          IPA2G_BIAS_FILTER,
15652                                                          ipa2g_biasfilt);
15653                                 }
15654                         }
15655                 }
15656
15657                 if (PHY_IPA(pi)) {
15658                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
15659                                 if ((pi->pubpi.radiorev == 3)
15660                                     || (pi->pubpi.radiorev == 4)
15661                                     || (pi->pubpi.radiorev == 6)) {
15662
15663                                         txgm_idac_bleed = 0x7f;
15664                                 }
15665
15666                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
15667                                         if (txgm_idac_bleed != 0)
15668                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15669                                                                  CORE, coreNum,
15670                                                                  TXGM_IDAC_BLEED,
15671                                                                  txgm_idac_bleed);
15672                                 }
15673
15674                                 if (pi->pubpi.radiorev == 5) {
15675
15676                                         for (coreNum = 0; coreNum <= 1;
15677                                              coreNum++) {
15678                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15679                                                                  CORE, coreNum,
15680                                                                  IPA2G_CASCONV,
15681                                                                  0x13);
15682                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15683                                                                  CORE, coreNum,
15684                                                                  IPA2G_IMAIN,
15685                                                                  0x1f);
15686                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15687                                                                  CORE, coreNum,
15688                                                                  IPA2G_BIAS_FILTER,
15689                                                                  0xee);
15690                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15691                                                                  CORE, coreNum,
15692                                                                  PAD2G_IDACS,
15693                                                                  0x8a);
15694                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15695                                                                  CORE, coreNum,
15696                                                                  PAD_BIAS_FILTER_BWS,
15697                                                                  0x3e);
15698                                         }
15699
15700                                 } else if ((pi->pubpi.radiorev == 7)
15701                                            || (pi->pubpi.radiorev == 8)) {
15702
15703                                         if (CHSPEC_IS40(pi->radio_chanspec) ==
15704                                             0) {
15705                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15706                                                                  CORE, 0,
15707                                                                  IPA2G_IMAIN,
15708                                                                  0x14);
15709                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15710                                                                  CORE, 1,
15711                                                                  IPA2G_IMAIN,
15712                                                                  0x12);
15713                                         } else {
15714                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15715                                                                  CORE, 0,
15716                                                                  IPA2G_IMAIN,
15717                                                                  0x16);
15718                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15719                                                                  CORE, 1,
15720                                                                  IPA2G_IMAIN,
15721                                                                  0x16);
15722                                         }
15723                                 }
15724
15725                         } else {
15726                                 freq =
15727                                     CHAN5G_FREQ(CHSPEC_CHANNEL
15728                                                 (pi->radio_chanspec));
15729                                 if (((freq >= 5180) && (freq <= 5230))
15730                                     || ((freq >= 5745) && (freq <= 5805))) {
15731                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15732                                                          0, IPA5G_BIAS_FILTER,
15733                                                          0xff);
15734                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15735                                                          1, IPA5G_BIAS_FILTER,
15736                                                          0xff);
15737                                 }
15738                         }
15739                 } else {
15740
15741                         if (pi->pubpi.radiorev != 5) {
15742                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
15743                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15744                                                          coreNum,
15745                                                          TXMIX2G_TUNE_BOOST_PU,
15746                                                          0x61);
15747                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15748                                                          coreNum,
15749                                                          TXGM_IDAC_BLEED, 0x70);
15750                                 }
15751                         }
15752                 }
15753
15754                 if (pi->pubpi.radiorev == 4) {
15755                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15756                                                  0x05, 16,
15757                                                  &afectrl_adc_ctrl1_rev7);
15758                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15759                                                  0x15, 16,
15760                                                  &afectrl_adc_ctrl1_rev7);
15761
15762                         for (coreNum = 0; coreNum <= 1; coreNum++) {
15763                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
15764                                                  AFE_VCM_CAL_MASTER, 0x0);
15765                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
15766                                                  AFE_SET_VCM_I, 0x3f);
15767                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
15768                                                  AFE_SET_VCM_Q, 0x3f);
15769                         }
15770                 } else {
15771                         mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
15772                         mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
15773                         mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
15774                         mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
15775
15776                         mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
15777                         mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
15778                         mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
15779                         mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
15780
15781                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15782                                                  0x05, 16,
15783                                                  &afectrl_adc_ctrl2_rev7);
15784                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15785                                                  0x15, 16,
15786                                                  &afectrl_adc_ctrl2_rev7);
15787
15788                         mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
15789                         mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
15790                         mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
15791                         mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
15792                 }
15793
15794                 write_phy_reg(pi, 0x6a, 0x2);
15795
15796                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
15797                                          &min_nvar_offset_6mbps);
15798
15799                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
15800                                          &rfseq_pktgn_lpf_hpc_rev7);
15801
15802                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
15803                                          &rfseq_pktgn_lpf_h_hpc_rev7);
15804
15805                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
15806                                          &rfseq_htpktgn_lpf_hpc_rev7);
15807
15808                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
15809                                          &rfseq_cckpktgn_lpf_hpc_rev7);
15810
15811                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
15812                                          &rfseq_tx2rx_lpf_h_hpc_rev7);
15813
15814                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
15815                                          &rfseq_rx2tx_lpf_h_hpc_rev7);
15816
15817                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
15818                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15819                                                  32, &min_nvar_val);
15820                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15821                                                  127, 32, &min_nvar_val);
15822                 } else {
15823                         min_nvar_val = noise_var_tbl_rev7[3];
15824                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15825                                                  32, &min_nvar_val);
15826
15827                         min_nvar_val = noise_var_tbl_rev7[127];
15828                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15829                                                  127, 32, &min_nvar_val);
15830                 }
15831
15832                 wlc_phy_workarounds_nphy_gainctrl(pi);
15833
15834                 pdetrange =
15835                     (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
15836                     pdetrange : pi->srom_fem2g.pdetrange;
15837
15838                 if (pdetrange == 0) {
15839                         chan_freq_range =
15840                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
15841                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
15842                                 aux_adc_vmid_rev7_core0[3] = 0x70;
15843                                 aux_adc_vmid_rev7_core1[3] = 0x70;
15844                                 aux_adc_gain_rev7[3] = 2;
15845                         } else {
15846                                 aux_adc_vmid_rev7_core0[3] = 0x80;
15847                                 aux_adc_vmid_rev7_core1[3] = 0x80;
15848                                 aux_adc_gain_rev7[3] = 3;
15849                         }
15850                 } else if (pdetrange == 1) {
15851                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
15852                                 aux_adc_vmid_rev7_core0[3] = 0x7c;
15853                                 aux_adc_vmid_rev7_core1[3] = 0x7c;
15854                                 aux_adc_gain_rev7[3] = 2;
15855                         } else {
15856                                 aux_adc_vmid_rev7_core0[3] = 0x8c;
15857                                 aux_adc_vmid_rev7_core1[3] = 0x8c;
15858                                 aux_adc_gain_rev7[3] = 1;
15859                         }
15860                 } else if (pdetrange == 2) {
15861                         if (pi->pubpi.radioid == BCM2057_ID) {
15862                                 if ((pi->pubpi.radiorev == 5)
15863                                     || (pi->pubpi.radiorev == 7)
15864                                     || (pi->pubpi.radiorev == 8)) {
15865                                         if (chan_freq_range ==
15866                                             WL_CHAN_FREQ_RANGE_2G) {
15867                                                 aux_adc_vmid_rev7_core0[3] =
15868                                                     0x8c;
15869                                                 aux_adc_vmid_rev7_core1[3] =
15870                                                     0x8c;
15871                                                 aux_adc_gain_rev7[3] = 0;
15872                                         } else {
15873                                                 aux_adc_vmid_rev7_core0[3] =
15874                                                     0x96;
15875                                                 aux_adc_vmid_rev7_core1[3] =
15876                                                     0x96;
15877                                                 aux_adc_gain_rev7[3] = 0;
15878                                         }
15879                                 }
15880                         }
15881
15882                 } else if (pdetrange == 3) {
15883                         if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
15884                                 aux_adc_vmid_rev7_core0[3] = 0x89;
15885                                 aux_adc_vmid_rev7_core1[3] = 0x89;
15886                                 aux_adc_gain_rev7[3] = 0;
15887                         }
15888
15889                 } else if (pdetrange == 5) {
15890
15891                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
15892                                 aux_adc_vmid_rev7_core0[3] = 0x80;
15893                                 aux_adc_vmid_rev7_core1[3] = 0x80;
15894                                 aux_adc_gain_rev7[3] = 3;
15895                         } else {
15896                                 aux_adc_vmid_rev7_core0[3] = 0x70;
15897                                 aux_adc_vmid_rev7_core1[3] = 0x70;
15898                                 aux_adc_gain_rev7[3] = 2;
15899                         }
15900                 }
15901
15902                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
15903                                          &aux_adc_vmid_rev7_core0);
15904                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
15905                                          &aux_adc_vmid_rev7_core1);
15906                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
15907                                          &aux_adc_gain_rev7);
15908                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
15909                                          &aux_adc_gain_rev7);
15910
15911         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15912
15913                 write_phy_reg(pi, 0x23f, 0x1f8);
15914                 write_phy_reg(pi, 0x240, 0x1f8);
15915
15916                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15917                                         1, 0, 32, &leg_data_weights);
15918                 leg_data_weights = leg_data_weights & 0xffffff;
15919                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15920                                          1, 0, 32, &leg_data_weights);
15921
15922                 alpha0 = 293;
15923                 alpha1 = 435;
15924                 alpha2 = 261;
15925                 beta0 = 366;
15926                 beta1 = 205;
15927                 beta2 = 32;
15928                 write_phy_reg(pi, 0x145, alpha0);
15929                 write_phy_reg(pi, 0x146, alpha1);
15930                 write_phy_reg(pi, 0x147, alpha2);
15931                 write_phy_reg(pi, 0x148, beta0);
15932                 write_phy_reg(pi, 0x149, beta1);
15933                 write_phy_reg(pi, 0x14a, beta2);
15934
15935                 write_phy_reg(pi, 0x38, 0xC);
15936                 write_phy_reg(pi, 0x2ae, 0xC);
15937
15938                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
15939                                        rfseq_tx2rx_events_rev3,
15940                                        rfseq_tx2rx_dlys_rev3,
15941                                        sizeof(rfseq_tx2rx_events_rev3) /
15942                                        sizeof(rfseq_tx2rx_events_rev3[0]));
15943
15944                 if (PHY_IPA(pi)) {
15945                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
15946                                                rfseq_rx2tx_events_rev3_ipa,
15947                                                rfseq_rx2tx_dlys_rev3_ipa,
15948                                                sizeof
15949                                                (rfseq_rx2tx_events_rev3_ipa) /
15950                                                sizeof
15951                                                (rfseq_rx2tx_events_rev3_ipa
15952                                                 [0]));
15953                 }
15954
15955                 if ((pi->sh->hw_phyrxchain != 0x3) &&
15956                     (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
15957
15958                         if (PHY_IPA(pi)) {
15959                                 rfseq_rx2tx_dlys_rev3[5] = 59;
15960                                 rfseq_rx2tx_dlys_rev3[6] = 1;
15961                                 rfseq_rx2tx_events_rev3[7] =
15962                                     NPHY_REV3_RFSEQ_CMD_END;
15963                         }
15964
15965                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
15966                                                rfseq_rx2tx_events_rev3,
15967                                                rfseq_rx2tx_dlys_rev3,
15968                                                sizeof(rfseq_rx2tx_events_rev3) /
15969                                                sizeof(rfseq_rx2tx_events_rev3
15970                                                       [0]));
15971                 }
15972
15973                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
15974                         write_phy_reg(pi, 0x6a, 0x2);
15975                 } else {
15976                         write_phy_reg(pi, 0x6a, 0x9c40);
15977                 }
15978
15979                 mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
15980
15981                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
15982                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15983                                                  32, &min_nvar_val);
15984                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15985                                                  127, 32, &min_nvar_val);
15986                 } else {
15987                         min_nvar_val = noise_var_tbl_rev3[3];
15988                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15989                                                  32, &min_nvar_val);
15990
15991                         min_nvar_val = noise_var_tbl_rev3[127];
15992                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15993                                                  127, 32, &min_nvar_val);
15994                 }
15995
15996                 wlc_phy_workarounds_nphy_gainctrl(pi);
15997
15998                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
15999                                          &dac_control);
16000                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16001                                          &dac_control);
16002
16003                 pdetrange =
16004                     (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16005                     pdetrange : pi->srom_fem2g.pdetrange;
16006
16007                 if (pdetrange == 0) {
16008                         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16009                                 aux_adc_vmid = aux_adc_vmid_rev4;
16010                                 aux_adc_gain = aux_adc_gain_rev4;
16011                         } else {
16012                                 aux_adc_vmid = aux_adc_vmid_rev3;
16013                                 aux_adc_gain = aux_adc_gain_rev3;
16014                         }
16015                         chan_freq_range =
16016                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
16017                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16018                                 switch (chan_freq_range) {
16019                                 case WL_CHAN_FREQ_RANGE_5GL:
16020                                         aux_adc_vmid[3] = 0x89;
16021                                         aux_adc_gain[3] = 0;
16022                                         break;
16023                                 case WL_CHAN_FREQ_RANGE_5GM:
16024                                         aux_adc_vmid[3] = 0x89;
16025                                         aux_adc_gain[3] = 0;
16026                                         break;
16027                                 case WL_CHAN_FREQ_RANGE_5GH:
16028                                         aux_adc_vmid[3] = 0x89;
16029                                         aux_adc_gain[3] = 0;
16030                                         break;
16031                                 default:
16032                                         break;
16033                                 }
16034                         }
16035                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16036                                                  0x08, 16, aux_adc_vmid);
16037                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16038                                                  0x18, 16, aux_adc_vmid);
16039                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16040                                                  0x0c, 16, aux_adc_gain);
16041                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16042                                                  0x1c, 16, aux_adc_gain);
16043                 } else if (pdetrange == 1) {
16044                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16045                                                  0x08, 16, sk_adc_vmid);
16046                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16047                                                  0x18, 16, sk_adc_vmid);
16048                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16049                                                  0x0c, 16, sk_adc_gain);
16050                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16051                                                  0x1c, 16, sk_adc_gain);
16052                 } else if (pdetrange == 2) {
16053
16054                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16055                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16056
16057                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16058                                 chan_freq_range =
16059                                     wlc_phy_get_chan_freq_range_nphy(pi, 0);
16060                                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16061                                         bcm_adc_vmid[3] = 0x8e;
16062                                         bcm_adc_gain[3] = 0x03;
16063                                 } else {
16064                                         bcm_adc_vmid[3] = 0x94;
16065                                         bcm_adc_gain[3] = 0x03;
16066                                 }
16067                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16068                                 bcm_adc_vmid[3] = 0x84;
16069                                 bcm_adc_gain[3] = 0x02;
16070                         }
16071
16072                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16073                                                  0x08, 16, bcm_adc_vmid);
16074                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16075                                                  0x18, 16, bcm_adc_vmid);
16076                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16077                                                  0x0c, 16, bcm_adc_gain);
16078                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16079                                                  0x1c, 16, bcm_adc_gain);
16080                 } else if (pdetrange == 3) {
16081                         chan_freq_range =
16082                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
16083                         if ((NREV_GE(pi->pubpi.phy_rev, 4))
16084                             && (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16085
16086                                 u16 auxadc_vmid[] = {
16087                                         0xa2, 0xb4, 0xb4, 0x270 };
16088                                 u16 auxadc_gain[] = {
16089                                         0x02, 0x02, 0x02, 0x00 };
16090
16091                                 wlc_phy_table_write_nphy(pi,
16092                                                          NPHY_TBL_ID_AFECTRL, 4,
16093                                                          0x08, 16, auxadc_vmid);
16094                                 wlc_phy_table_write_nphy(pi,
16095                                                          NPHY_TBL_ID_AFECTRL, 4,
16096                                                          0x18, 16, auxadc_vmid);
16097                                 wlc_phy_table_write_nphy(pi,
16098                                                          NPHY_TBL_ID_AFECTRL, 4,
16099                                                          0x0c, 16, auxadc_gain);
16100                                 wlc_phy_table_write_nphy(pi,
16101                                                          NPHY_TBL_ID_AFECTRL, 4,
16102                                                          0x1c, 16, auxadc_gain);
16103                         }
16104                 } else if ((pdetrange == 4) || (pdetrange == 5)) {
16105                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
16106                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
16107                         u16 Vmid[2], Av[2];
16108
16109                         chan_freq_range =
16110                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
16111                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16112                                 Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
16113                                 Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
16114                                 Av[0] = (pdetrange == 4) ? 2 : 0;
16115                                 Av[1] = (pdetrange == 4) ? 2 : 0;
16116                         } else {
16117                                 Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
16118                                 Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
16119                                 Av[0] = (pdetrange == 4) ? 2 : 0;
16120                                 Av[1] = (pdetrange == 4) ? 2 : 0;
16121                         }
16122
16123                         bcm_adc_vmid[3] = Vmid[0];
16124                         bcm_adc_gain[3] = Av[0];
16125                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16126                                                  0x08, 16, bcm_adc_vmid);
16127                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16128                                                  0x0c, 16, bcm_adc_gain);
16129
16130                         bcm_adc_vmid[3] = Vmid[1];
16131                         bcm_adc_gain[3] = Av[1];
16132                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16133                                                  0x18, 16, bcm_adc_vmid);
16134                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16135                                                  0x1c, 16, bcm_adc_gain);
16136                 } else {
16137                         ASSERT(0);
16138                 }
16139
16140                 write_radio_reg(pi,
16141                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0),
16142                                 0x0);
16143                 write_radio_reg(pi,
16144                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1),
16145                                 0x0);
16146
16147                 write_radio_reg(pi,
16148                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0),
16149                                 0x6);
16150                 write_radio_reg(pi,
16151                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1),
16152                                 0x6);
16153
16154                 write_radio_reg(pi,
16155                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0),
16156                                 0x7);
16157                 write_radio_reg(pi,
16158                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1),
16159                                 0x7);
16160
16161                 write_radio_reg(pi,
16162                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0),
16163                                 0x88);
16164                 write_radio_reg(pi,
16165                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1),
16166                                 0x88);
16167
16168                 write_radio_reg(pi,
16169                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0),
16170                                 0x0);
16171                 write_radio_reg(pi,
16172                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1),
16173                                 0x0);
16174
16175                 write_radio_reg(pi,
16176                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0),
16177                                 0x0);
16178                 write_radio_reg(pi,
16179                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1),
16180                                 0x0);
16181
16182                 triso =
16183                     (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16184                     triso : pi->srom_fem2g.triso;
16185                 if (triso == 7) {
16186                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
16187                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
16188                 }
16189
16190                 wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
16191
16192                 if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
16193                      (CHSPEC_IS5G(pi->radio_chanspec))) ||
16194                     (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
16195                       (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
16196                      (CHSPEC_IS2G(pi->radio_chanspec)))) {
16197                         nss1_data_weights = 0x00088888;
16198                         ht_data_weights = 0x00088888;
16199                         stbc_data_weights = 0x00088888;
16200                 } else {
16201                         nss1_data_weights = 0x88888888;
16202                         ht_data_weights = 0x88888888;
16203                         stbc_data_weights = 0x88888888;
16204                 }
16205                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16206                                          1, 1, 32, &nss1_data_weights);
16207                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16208                                          1, 2, 32, &ht_data_weights);
16209                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16210                                          1, 3, 32, &stbc_data_weights);
16211
16212                 if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16213                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
16214                                 write_radio_reg(pi,
16215                                                 RADIO_2056_TX_GMBB_IDAC |
16216                                                 RADIO_2056_TX0, 0x70);
16217                                 write_radio_reg(pi,
16218                                                 RADIO_2056_TX_GMBB_IDAC |
16219                                                 RADIO_2056_TX1, 0x70);
16220                         }
16221                 }
16222
16223                 if (!pi->edcrs_threshold_lock) {
16224                         write_phy_reg(pi, 0x224, 0x3eb);
16225                         write_phy_reg(pi, 0x225, 0x3eb);
16226                         write_phy_reg(pi, 0x226, 0x341);
16227                         write_phy_reg(pi, 0x227, 0x341);
16228                         write_phy_reg(pi, 0x228, 0x42b);
16229                         write_phy_reg(pi, 0x229, 0x42b);
16230                         write_phy_reg(pi, 0x22a, 0x381);
16231                         write_phy_reg(pi, 0x22b, 0x381);
16232                         write_phy_reg(pi, 0x22c, 0x42b);
16233                         write_phy_reg(pi, 0x22d, 0x42b);
16234                         write_phy_reg(pi, 0x22e, 0x381);
16235                         write_phy_reg(pi, 0x22f, 0x381);
16236                 }
16237
16238                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16239
16240                         if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK) {
16241                                 wlapi_bmac_mhf(pi->sh->physhim, MHF4,
16242                                                MHF4_BPHY_TXCORE0,
16243                                                MHF4_BPHY_TXCORE0, WLC_BAND_ALL);
16244                         }
16245                 }
16246         } else {
16247
16248                 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
16249                     (pi->sh->boardtype == 0x8b)) {
16250                         uint i;
16251                         u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
16252                         for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
16253                                 rfseq_rx2tx_dlys[i] = war_dlys[i];
16254                 }
16255
16256                 if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
16257                         and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
16258                         and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
16259                 } else {
16260                         or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
16261                         or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
16262                 }
16263
16264                 regval = 0x000a;
16265                 wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
16266                 wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
16267
16268                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
16269                         regval = 0xcdaa;
16270                         wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
16271                         wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
16272                 }
16273
16274                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16275                         regval = 0x0000;
16276                         wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
16277                         wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
16278
16279                         regval = 0x7aab;
16280                         wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
16281                         wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
16282
16283                         regval = 0x0800;
16284                         wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
16285                         wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
16286                 }
16287
16288                 write_phy_reg(pi, 0xf8, 0x02d8);
16289                 write_phy_reg(pi, 0xf9, 0x0301);
16290                 write_phy_reg(pi, 0xfa, 0x02d8);
16291                 write_phy_reg(pi, 0xfb, 0x0301);
16292
16293                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
16294                                        rfseq_rx2tx_dlys,
16295                                        sizeof(rfseq_rx2tx_events) /
16296                                        sizeof(rfseq_rx2tx_events[0]));
16297
16298                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
16299                                        rfseq_tx2rx_dlys,
16300                                        sizeof(rfseq_tx2rx_events) /
16301                                        sizeof(rfseq_tx2rx_events[0]));
16302
16303                 wlc_phy_workarounds_nphy_gainctrl(pi);
16304
16305                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16306
16307                         if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
16308                                 wlapi_bmac_mhf(pi->sh->physhim, MHF3,
16309                                                MHF3_NPHY_MLADV_WAR,
16310                                                MHF3_NPHY_MLADV_WAR,
16311                                                WLC_BAND_ALL);
16312
16313                 } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16314                         write_phy_reg(pi, 0x1e3, 0x0);
16315                         write_phy_reg(pi, 0x1e4, 0x0);
16316                 }
16317
16318                 if (NREV_LT(pi->pubpi.phy_rev, 2))
16319                         mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
16320
16321                 alpha0 = 293;
16322                 alpha1 = 435;
16323                 alpha2 = 261;
16324                 beta0 = 366;
16325                 beta1 = 205;
16326                 beta2 = 32;
16327                 write_phy_reg(pi, 0x145, alpha0);
16328                 write_phy_reg(pi, 0x146, alpha1);
16329                 write_phy_reg(pi, 0x147, alpha2);
16330                 write_phy_reg(pi, 0x148, beta0);
16331                 write_phy_reg(pi, 0x149, beta1);
16332                 write_phy_reg(pi, 0x14a, beta2);
16333
16334                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
16335                         mod_phy_reg(pi, 0x142, (0xf << 12), 0);
16336
16337                         write_phy_reg(pi, 0x192, 0xb5);
16338                         write_phy_reg(pi, 0x193, 0xa4);
16339                         write_phy_reg(pi, 0x194, 0x0);
16340                 }
16341
16342                 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16343                         mod_phy_reg(pi, 0x221,
16344                                     NPHY_FORCESIG_DECODEGATEDCLKS,
16345                                     NPHY_FORCESIG_DECODEGATEDCLKS);
16346                 }
16347         }
16348
16349         if (pi->phyhang_avoid)
16350                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
16351 }
16352
16353 static void wlc_phy_workarounds_nphy_gainctrl(phy_info_t *pi)
16354 {
16355         u16 w1th, hpf_code, currband;
16356         int ctr;
16357         u8 rfseq_updategainu_events[] = {
16358                 NPHY_RFSEQ_CMD_RX_GAIN,
16359                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16360                 NPHY_RFSEQ_CMD_SET_HPF_BW
16361         };
16362         u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
16363         s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
16364         s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
16365         s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
16366         s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
16367         s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
16368         s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
16369         s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
16370         s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
16371         s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
16372         s8 *lna1_gain_db = NULL;
16373         s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
16374         s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
16375         s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
16376         s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
16377         s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
16378         s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
16379         s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
16380         s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
16381         s8 *lna2_gain_db = NULL;
16382         s8 tiaG_gain_db[] = {
16383                 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
16384         s8 tiaA_gain_db[] = {
16385                 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
16386         s8 tiaA_gain_db_rev4[] = {
16387                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
16388         s8 tiaA_gain_db_rev5[] = {
16389                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
16390         s8 tiaA_gain_db_rev6[] = {
16391                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
16392         s8 *tia_gain_db;
16393         s8 tiaG_gainbits[] = {
16394                 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
16395         s8 tiaA_gainbits[] = {
16396                 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
16397         s8 tiaA_gainbits_rev4[] = {
16398                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
16399         s8 tiaA_gainbits_rev5[] = {
16400                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
16401         s8 tiaA_gainbits_rev6[] = {
16402                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
16403         s8 *tia_gainbits;
16404         s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
16405         s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
16406         u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
16407         u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
16408         u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
16409         u16 rfseqG_init_gain_rev5_elna[] = {
16410                 0x013f, 0x013f, 0x013f, 0x013f };
16411         u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
16412         u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
16413         u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
16414         u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
16415         u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
16416         u16 rfseqA_init_gain_rev4_elna[] = {
16417                 0x314f, 0x314f, 0x314f, 0x314f };
16418         u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
16419         u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
16420         u16 *rfseq_init_gain;
16421         u16 initG_gaincode = 0x627e;
16422         u16 initG_gaincode_rev4 = 0x527e;
16423         u16 initG_gaincode_rev5 = 0x427e;
16424         u16 initG_gaincode_rev5_elna = 0x027e;
16425         u16 initG_gaincode_rev6 = 0x527e;
16426         u16 initG_gaincode_rev6_224B0 = 0x427e;
16427         u16 initG_gaincode_rev6_elna = 0x127e;
16428         u16 initA_gaincode = 0x52de;
16429         u16 initA_gaincode_rev4 = 0x629e;
16430         u16 initA_gaincode_rev4_elna = 0x329e;
16431         u16 initA_gaincode_rev5 = 0x729e;
16432         u16 initA_gaincode_rev6 = 0x729e;
16433         u16 init_gaincode;
16434         u16 clip1hiG_gaincode = 0x107e;
16435         u16 clip1hiG_gaincode_rev4 = 0x007e;
16436         u16 clip1hiG_gaincode_rev5 = 0x1076;
16437         u16 clip1hiG_gaincode_rev6 = 0x007e;
16438         u16 clip1hiA_gaincode = 0x00de;
16439         u16 clip1hiA_gaincode_rev4 = 0x029e;
16440         u16 clip1hiA_gaincode_rev5 = 0x029e;
16441         u16 clip1hiA_gaincode_rev6 = 0x029e;
16442         u16 clip1hi_gaincode;
16443         u16 clip1mdG_gaincode = 0x0066;
16444         u16 clip1mdA_gaincode = 0x00ca;
16445         u16 clip1mdA_gaincode_rev4 = 0x1084;
16446         u16 clip1mdA_gaincode_rev5 = 0x2084;
16447         u16 clip1mdA_gaincode_rev6 = 0x2084;
16448         u16 clip1md_gaincode = 0;
16449         u16 clip1loG_gaincode = 0x0074;
16450         u16 clip1loG_gaincode_rev5[] = {
16451                 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
16452         };
16453         u16 clip1loG_gaincode_rev6[] = {
16454                 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
16455         };
16456         u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
16457         u16 clip1loA_gaincode = 0x00cc;
16458         u16 clip1loA_gaincode_rev4 = 0x0086;
16459         u16 clip1loA_gaincode_rev5 = 0x2086;
16460         u16 clip1loA_gaincode_rev6 = 0x2086;
16461         u16 clip1lo_gaincode;
16462         u8 crsminG_th = 0x18;
16463         u8 crsminG_th_rev5 = 0x18;
16464         u8 crsminG_th_rev6 = 0x18;
16465         u8 crsminA_th = 0x1e;
16466         u8 crsminA_th_rev4 = 0x24;
16467         u8 crsminA_th_rev5 = 0x24;
16468         u8 crsminA_th_rev6 = 0x24;
16469         u8 crsmin_th;
16470         u8 crsminlG_th = 0x18;
16471         u8 crsminlG_th_rev5 = 0x18;
16472         u8 crsminlG_th_rev6 = 0x18;
16473         u8 crsminlA_th = 0x1e;
16474         u8 crsminlA_th_rev4 = 0x24;
16475         u8 crsminlA_th_rev5 = 0x24;
16476         u8 crsminlA_th_rev6 = 0x24;
16477         u8 crsminl_th = 0;
16478         u8 crsminuG_th = 0x18;
16479         u8 crsminuG_th_rev5 = 0x18;
16480         u8 crsminuG_th_rev6 = 0x18;
16481         u8 crsminuA_th = 0x1e;
16482         u8 crsminuA_th_rev4 = 0x24;
16483         u8 crsminuA_th_rev5 = 0x24;
16484         u8 crsminuA_th_rev6 = 0x24;
16485         u8 crsminuA_th_rev6_224B0 = 0x2d;
16486         u8 crsminu_th;
16487         u16 nbclipG_th = 0x20d;
16488         u16 nbclipG_th_rev4 = 0x1a1;
16489         u16 nbclipG_th_rev5 = 0x1d0;
16490         u16 nbclipG_th_rev6 = 0x1d0;
16491         u16 nbclipA_th = 0x1a1;
16492         u16 nbclipA_th_rev4 = 0x107;
16493         u16 nbclipA_th_rev5 = 0x0a9;
16494         u16 nbclipA_th_rev6 = 0x0f0;
16495         u16 nbclip_th = 0;
16496         u8 w1clipG_th = 5;
16497         u8 w1clipG_th_rev5 = 9;
16498         u8 w1clipG_th_rev6 = 5;
16499         u8 w1clipA_th = 25, w1clip_th;
16500         u8 rssi_gain_default = 0x50;
16501         u8 rssiG_gain_rev6_224B0 = 0x50;
16502         u8 rssiA_gain_rev5 = 0x90;
16503         u8 rssiA_gain_rev6 = 0x90;
16504         u8 rssi_gain;
16505         u16 regval[21];
16506         u8 triso;
16507
16508         triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
16509             pi->srom_fem2g.triso;
16510
16511         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
16512                 if (pi->pubpi.radiorev == 5) {
16513
16514                         wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
16515                 } else if (pi->pubpi.radiorev == 7) {
16516                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
16517
16518                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
16519                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
16520
16521                 } else if ((pi->pubpi.radiorev == 3)
16522                            || (pi->pubpi.radiorev == 8)) {
16523                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
16524
16525                         if (pi->pubpi.radiorev == 8) {
16526                                 mod_phy_reg(pi, 0x283,
16527                                             (0xff << 0), (0x44 << 0));
16528                                 mod_phy_reg(pi, 0x280,
16529                                             (0xff << 0), (0x44 << 0));
16530                         }
16531                 } else {
16532                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
16533                 }
16534         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
16535
16536                 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
16537
16538                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16539                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16540
16541                 currband =
16542                     read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
16543                 if (currband == 0) {
16544                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16545                                 if (pi->pubpi.radiorev == 11) {
16546                                         lna1_gain_db = lna1G_gain_db_rev6_224B0;
16547                                         lna2_gain_db = lna2G_gain_db_rev6_224B0;
16548                                         rfseq_init_gain =
16549                                             rfseqG_init_gain_rev6_224B0;
16550                                         init_gaincode =
16551                                             initG_gaincode_rev6_224B0;
16552                                         clip1hi_gaincode =
16553                                             clip1hiG_gaincode_rev6;
16554                                         clip1lo_gaincode =
16555                                             clip1loG_gaincode_rev6_224B0;
16556                                         nbclip_th = nbclipG_th_rev6;
16557                                         w1clip_th = w1clipG_th_rev6;
16558                                         crsmin_th = crsminG_th_rev6;
16559                                         crsminl_th = crsminlG_th_rev6;
16560                                         crsminu_th = crsminuG_th_rev6;
16561                                         rssi_gain = rssiG_gain_rev6_224B0;
16562                                 } else {
16563                                         lna1_gain_db = lna1G_gain_db_rev6;
16564                                         lna2_gain_db = lna2G_gain_db_rev6;
16565                                         if (pi->sh->boardflags & BFL_EXTLNA) {
16566
16567                                                 rfseq_init_gain =
16568                                                     rfseqG_init_gain_rev6_elna;
16569                                                 init_gaincode =
16570                                                     initG_gaincode_rev6_elna;
16571                                         } else {
16572                                                 rfseq_init_gain =
16573                                                     rfseqG_init_gain_rev6;
16574                                                 init_gaincode =
16575                                                     initG_gaincode_rev6;
16576                                         }
16577                                         clip1hi_gaincode =
16578                                             clip1hiG_gaincode_rev6;
16579                                         switch (triso) {
16580                                         case 0:
16581                                                 clip1lo_gaincode =
16582                                                     clip1loG_gaincode_rev6[0];
16583                                                 break;
16584                                         case 1:
16585                                                 clip1lo_gaincode =
16586                                                     clip1loG_gaincode_rev6[1];
16587                                                 break;
16588                                         case 2:
16589                                                 clip1lo_gaincode =
16590                                                     clip1loG_gaincode_rev6[2];
16591                                                 break;
16592                                         case 3:
16593                                         default:
16594
16595                                                 clip1lo_gaincode =
16596                                                     clip1loG_gaincode_rev6[3];
16597                                                 break;
16598                                         case 4:
16599                                                 clip1lo_gaincode =
16600                                                     clip1loG_gaincode_rev6[4];
16601                                                 break;
16602                                         case 5:
16603                                                 clip1lo_gaincode =
16604                                                     clip1loG_gaincode_rev6[5];
16605                                                 break;
16606                                         case 6:
16607                                                 clip1lo_gaincode =
16608                                                     clip1loG_gaincode_rev6[6];
16609                                                 break;
16610                                         case 7:
16611                                                 clip1lo_gaincode =
16612                                                     clip1loG_gaincode_rev6[7];
16613                                                 break;
16614                                         }
16615                                         nbclip_th = nbclipG_th_rev6;
16616                                         w1clip_th = w1clipG_th_rev6;
16617                                         crsmin_th = crsminG_th_rev6;
16618                                         crsminl_th = crsminlG_th_rev6;
16619                                         crsminu_th = crsminuG_th_rev6;
16620                                         rssi_gain = rssi_gain_default;
16621                                 }
16622                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16623                                 lna1_gain_db = lna1G_gain_db_rev5;
16624                                 lna2_gain_db = lna2G_gain_db_rev5;
16625                                 if (pi->sh->boardflags & BFL_EXTLNA) {
16626
16627                                         rfseq_init_gain =
16628                                             rfseqG_init_gain_rev5_elna;
16629                                         init_gaincode =
16630                                             initG_gaincode_rev5_elna;
16631                                 } else {
16632                                         rfseq_init_gain = rfseqG_init_gain_rev5;
16633                                         init_gaincode = initG_gaincode_rev5;
16634                                 }
16635                                 clip1hi_gaincode = clip1hiG_gaincode_rev5;
16636                                 switch (triso) {
16637                                 case 0:
16638                                         clip1lo_gaincode =
16639                                             clip1loG_gaincode_rev5[0];
16640                                         break;
16641                                 case 1:
16642                                         clip1lo_gaincode =
16643                                             clip1loG_gaincode_rev5[1];
16644                                         break;
16645                                 case 2:
16646                                         clip1lo_gaincode =
16647                                             clip1loG_gaincode_rev5[2];
16648                                         break;
16649                                 case 3:
16650
16651                                         clip1lo_gaincode =
16652                                             clip1loG_gaincode_rev5[3];
16653                                         break;
16654                                 case 4:
16655                                         clip1lo_gaincode =
16656                                             clip1loG_gaincode_rev5[4];
16657                                         break;
16658                                 case 5:
16659                                         clip1lo_gaincode =
16660                                             clip1loG_gaincode_rev5[5];
16661                                         break;
16662                                 case 6:
16663                                         clip1lo_gaincode =
16664                                             clip1loG_gaincode_rev5[6];
16665                                         break;
16666                                 case 7:
16667                                         clip1lo_gaincode =
16668                                             clip1loG_gaincode_rev5[7];
16669                                         break;
16670                                 default:
16671                                         clip1lo_gaincode =
16672                                             clip1loG_gaincode_rev5[3];
16673                                         break;
16674                                 }
16675                                 nbclip_th = nbclipG_th_rev5;
16676                                 w1clip_th = w1clipG_th_rev5;
16677                                 crsmin_th = crsminG_th_rev5;
16678                                 crsminl_th = crsminlG_th_rev5;
16679                                 crsminu_th = crsminuG_th_rev5;
16680                                 rssi_gain = rssi_gain_default;
16681                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16682                                 lna1_gain_db = lna1G_gain_db_rev4;
16683                                 lna2_gain_db = lna2G_gain_db;
16684                                 rfseq_init_gain = rfseqG_init_gain_rev4;
16685                                 init_gaincode = initG_gaincode_rev4;
16686                                 clip1hi_gaincode = clip1hiG_gaincode_rev4;
16687                                 clip1lo_gaincode = clip1loG_gaincode;
16688                                 nbclip_th = nbclipG_th_rev4;
16689                                 w1clip_th = w1clipG_th;
16690                                 crsmin_th = crsminG_th;
16691                                 crsminl_th = crsminlG_th;
16692                                 crsminu_th = crsminuG_th;
16693                                 rssi_gain = rssi_gain_default;
16694                         } else {
16695                                 lna1_gain_db = lna1G_gain_db;
16696                                 lna2_gain_db = lna2G_gain_db;
16697                                 rfseq_init_gain = rfseqG_init_gain;
16698                                 init_gaincode = initG_gaincode;
16699                                 clip1hi_gaincode = clip1hiG_gaincode;
16700                                 clip1lo_gaincode = clip1loG_gaincode;
16701                                 nbclip_th = nbclipG_th;
16702                                 w1clip_th = w1clipG_th;
16703                                 crsmin_th = crsminG_th;
16704                                 crsminl_th = crsminlG_th;
16705                                 crsminu_th = crsminuG_th;
16706                                 rssi_gain = rssi_gain_default;
16707                         }
16708                         tia_gain_db = tiaG_gain_db;
16709                         tia_gainbits = tiaG_gainbits;
16710                         clip1md_gaincode = clip1mdG_gaincode;
16711                 } else {
16712                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16713                                 lna1_gain_db = lna1A_gain_db_rev6;
16714                                 lna2_gain_db = lna2A_gain_db_rev6;
16715                                 tia_gain_db = tiaA_gain_db_rev6;
16716                                 tia_gainbits = tiaA_gainbits_rev6;
16717                                 rfseq_init_gain = rfseqA_init_gain_rev6;
16718                                 init_gaincode = initA_gaincode_rev6;
16719                                 clip1hi_gaincode = clip1hiA_gaincode_rev6;
16720                                 clip1md_gaincode = clip1mdA_gaincode_rev6;
16721                                 clip1lo_gaincode = clip1loA_gaincode_rev6;
16722                                 crsmin_th = crsminA_th_rev6;
16723                                 crsminl_th = crsminlA_th_rev6;
16724                                 if ((pi->pubpi.radiorev == 11) &&
16725                                     (CHSPEC_IS40(pi->radio_chanspec) == 0)) {
16726                                         crsminu_th = crsminuA_th_rev6_224B0;
16727                                 } else {
16728                                         crsminu_th = crsminuA_th_rev6;
16729                                 }
16730                                 nbclip_th = nbclipA_th_rev6;
16731                                 rssi_gain = rssiA_gain_rev6;
16732                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16733                                 lna1_gain_db = lna1A_gain_db_rev5;
16734                                 lna2_gain_db = lna2A_gain_db_rev5;
16735                                 tia_gain_db = tiaA_gain_db_rev5;
16736                                 tia_gainbits = tiaA_gainbits_rev5;
16737                                 rfseq_init_gain = rfseqA_init_gain_rev5;
16738                                 init_gaincode = initA_gaincode_rev5;
16739                                 clip1hi_gaincode = clip1hiA_gaincode_rev5;
16740                                 clip1md_gaincode = clip1mdA_gaincode_rev5;
16741                                 clip1lo_gaincode = clip1loA_gaincode_rev5;
16742                                 crsmin_th = crsminA_th_rev5;
16743                                 crsminl_th = crsminlA_th_rev5;
16744                                 crsminu_th = crsminuA_th_rev5;
16745                                 nbclip_th = nbclipA_th_rev5;
16746                                 rssi_gain = rssiA_gain_rev5;
16747                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16748                                 lna1_gain_db = lna1A_gain_db_rev4;
16749                                 lna2_gain_db = lna2A_gain_db_rev4;
16750                                 tia_gain_db = tiaA_gain_db_rev4;
16751                                 tia_gainbits = tiaA_gainbits_rev4;
16752                                 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
16753
16754                                         rfseq_init_gain =
16755                                             rfseqA_init_gain_rev4_elna;
16756                                         init_gaincode =
16757                                             initA_gaincode_rev4_elna;
16758                                 } else {
16759                                         rfseq_init_gain = rfseqA_init_gain_rev4;
16760                                         init_gaincode = initA_gaincode_rev4;
16761                                 }
16762                                 clip1hi_gaincode = clip1hiA_gaincode_rev4;
16763                                 clip1md_gaincode = clip1mdA_gaincode_rev4;
16764                                 clip1lo_gaincode = clip1loA_gaincode_rev4;
16765                                 crsmin_th = crsminA_th_rev4;
16766                                 crsminl_th = crsminlA_th_rev4;
16767                                 crsminu_th = crsminuA_th_rev4;
16768                                 nbclip_th = nbclipA_th_rev4;
16769                                 rssi_gain = rssi_gain_default;
16770                         } else {
16771                                 lna1_gain_db = lna1A_gain_db;
16772                                 lna2_gain_db = lna2A_gain_db;
16773                                 tia_gain_db = tiaA_gain_db;
16774                                 tia_gainbits = tiaA_gainbits;
16775                                 rfseq_init_gain = rfseqA_init_gain;
16776                                 init_gaincode = initA_gaincode;
16777                                 clip1hi_gaincode = clip1hiA_gaincode;
16778                                 clip1md_gaincode = clip1mdA_gaincode;
16779                                 clip1lo_gaincode = clip1loA_gaincode;
16780                                 crsmin_th = crsminA_th;
16781                                 crsminl_th = crsminlA_th;
16782                                 crsminu_th = crsminuA_th;
16783                                 nbclip_th = nbclipA_th;
16784                                 rssi_gain = rssi_gain_default;
16785                         }
16786                         w1clip_th = w1clipA_th;
16787                 }
16788
16789                 write_radio_reg(pi,
16790                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16791                                  RADIO_2056_RX0), 0x17);
16792                 write_radio_reg(pi,
16793                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16794                                  RADIO_2056_RX1), 0x17);
16795
16796                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
16797                                 0xf0);
16798                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
16799                                 0xf0);
16800
16801                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
16802                                 0x0);
16803                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
16804                                 0x0);
16805
16806                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
16807                                 rssi_gain);
16808                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
16809                                 rssi_gain);
16810
16811                 write_radio_reg(pi,
16812                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16813                                  RADIO_2056_RX0), 0x17);
16814                 write_radio_reg(pi,
16815                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16816                                  RADIO_2056_RX1), 0x17);
16817
16818                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
16819                                 0xFF);
16820                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
16821                                 0xFF);
16822
16823                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
16824                                          8, lna1_gain_db);
16825                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
16826                                          8, lna1_gain_db);
16827
16828                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
16829                                          8, lna2_gain_db);
16830                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
16831                                          8, lna2_gain_db);
16832
16833                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
16834                                          8, tia_gain_db);
16835                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
16836                                          8, tia_gain_db);
16837
16838                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
16839                                          8, tia_gainbits);
16840                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
16841                                          8, tia_gainbits);
16842
16843                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
16844                                          8, &lpf_gain_db);
16845                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
16846                                          8, &lpf_gain_db);
16847                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
16848                                          8, &lpf_gainbits);
16849                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
16850                                          8, &lpf_gainbits);
16851
16852                 write_phy_reg(pi, 0x20, init_gaincode);
16853                 write_phy_reg(pi, 0x2a7, init_gaincode);
16854
16855                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16856                                          pi->pubpi.phy_corenum, 0x106, 16,
16857                                          rfseq_init_gain);
16858
16859                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
16860                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
16861
16862                 write_phy_reg(pi, 0x24, clip1md_gaincode);
16863                 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
16864
16865                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
16866                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
16867
16868                 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
16869                 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
16870                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
16871
16872                 write_phy_reg(pi, 0x2b, nbclip_th);
16873                 write_phy_reg(pi, 0x41, nbclip_th);
16874
16875                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
16876                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
16877
16878                 write_phy_reg(pi, 0x150, 0x809c);
16879
16880         } else {
16881
16882                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16883                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16884
16885                 write_phy_reg(pi, 0x2b, 0x84);
16886                 write_phy_reg(pi, 0x41, 0x84);
16887
16888                 if (CHSPEC_IS20(pi->radio_chanspec)) {
16889                         write_phy_reg(pi, 0x6b, 0x2b);
16890                         write_phy_reg(pi, 0x6c, 0x2b);
16891                         write_phy_reg(pi, 0x6d, 0x9);
16892                         write_phy_reg(pi, 0x6e, 0x9);
16893                 }
16894
16895                 w1th = NPHY_RSSICAL_W1_TARGET - 4;
16896                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
16897                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
16898
16899                 if (CHSPEC_IS20(pi->radio_chanspec)) {
16900                         mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
16901                         mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
16902
16903                         mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
16904                         mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16905                 }
16906
16907                 write_phy_reg(pi, 0x150, 0x809c);
16908
16909                 if (pi->nphy_gain_boost)
16910                         if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16911                             (CHSPEC_IS40(pi->radio_chanspec)))
16912                                 hpf_code = 4;
16913                         else
16914                                 hpf_code = 5;
16915                 else if (CHSPEC_IS40(pi->radio_chanspec))
16916                         hpf_code = 6;
16917                 else
16918                         hpf_code = 7;
16919
16920                 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16921                 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16922
16923                 for (ctr = 0; ctr < 4; ctr++) {
16924                         regval[ctr] = (hpf_code << 8) | 0x7c;
16925                 }
16926                 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16927
16928                 wlc_phy_adjust_lnagaintbl_nphy(pi);
16929
16930                 if (pi->nphy_elna_gain_config) {
16931                         regval[0] = 0;
16932                         regval[1] = 1;
16933                         regval[2] = 1;
16934                         regval[3] = 1;
16935                         wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16936                         wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16937
16938                         for (ctr = 0; ctr < 4; ctr++) {
16939                                 regval[ctr] = (hpf_code << 8) | 0x74;
16940                         }
16941                         wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16942                 }
16943
16944                 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16945                         for (ctr = 0; ctr < 21; ctr++) {
16946                                 regval[ctr] = 3 * ctr;
16947                         }
16948                         wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16949                         wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16950
16951                         for (ctr = 0; ctr < 21; ctr++) {
16952                                 regval[ctr] = (u16) ctr;
16953                         }
16954                         wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16955                         wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16956                 }
16957
16958                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16959                                        rfseq_updategainu_events,
16960                                        rfseq_updategainu_dlys,
16961                                        sizeof(rfseq_updategainu_events) /
16962                                        sizeof(rfseq_updategainu_events[0]));
16963
16964                 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16965
16966                 if (CHSPEC_IS2G(pi->radio_chanspec))
16967                         mod_phy_reg(pi,
16968                                     (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16969                                     0x7f, 0x4);
16970         }
16971 }
16972
16973 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(phy_info_t *pi)
16974 {
16975         s8 lna1_gain_db[] = { 8, 13, 17, 22 };
16976         s8 lna2_gain_db[] = { -2, 7, 11, 15 };
16977         s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
16978         s8 tia_gainbits[] = {
16979                 0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
16980
16981         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16982         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16983
16984         mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
16985
16986         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
16987         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
16988
16989         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
16990                                  lna1_gain_db);
16991         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
16992                                  lna1_gain_db);
16993
16994         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
16995                                  lna2_gain_db);
16996         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
16997                                  lna2_gain_db);
16998
16999         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
17000                                  tia_gain_db);
17001         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
17002                                  tia_gain_db);
17003
17004         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
17005                                  tia_gainbits);
17006         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
17007                                  tia_gainbits);
17008
17009         write_phy_reg(pi, 0x37, 0x74);
17010         write_phy_reg(pi, 0x2ad, 0x74);
17011         write_phy_reg(pi, 0x38, 0x18);
17012         write_phy_reg(pi, 0x2ae, 0x18);
17013
17014         write_phy_reg(pi, 0x2b, 0xe8);
17015         write_phy_reg(pi, 0x41, 0xe8);
17016
17017         if (CHSPEC_IS20(pi->radio_chanspec)) {
17018
17019                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
17020                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
17021         } else {
17022
17023                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
17024                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
17025         }
17026 }
17027
17028 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(phy_info_t *pi)
17029 {
17030         u16 currband;
17031         s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
17032         s8 *lna1_gain_db = NULL;
17033         s8 *lna1_gain_db_2 = NULL;
17034         s8 *lna2_gain_db = NULL;
17035         s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
17036         s8 *tia_gain_db;
17037         s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
17038         s8 *tia_gainbits;
17039         u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
17040         u16 *rfseq_init_gain;
17041         u16 init_gaincode;
17042         u16 clip1hi_gaincode;
17043         u16 clip1md_gaincode = 0;
17044         u16 clip1md_gaincode_B;
17045         u16 clip1lo_gaincode;
17046         u16 clip1lo_gaincode_B;
17047         u8 crsminl_th = 0;
17048         u8 crsminu_th;
17049         u16 nbclip_th = 0;
17050         u8 w1clip_th;
17051         u16 freq;
17052         s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
17053         u8 chg_nbclip_th = 0;
17054
17055         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
17056         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
17057
17058         currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
17059         if (currband == 0) {
17060
17061                 lna1_gain_db = lna1G_gain_db_rev7;
17062
17063                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
17064                                          lna1_gain_db);
17065                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
17066                                          lna1_gain_db);
17067
17068                 mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
17069
17070                 if (CHSPEC_IS40(pi->radio_chanspec)) {
17071                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
17072                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
17073                 }
17074
17075                 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
17076
17077                 if (CHSPEC_IS20(pi->radio_chanspec)) {
17078                         mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
17079                         mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
17080                 }
17081         } else {
17082
17083                 init_gaincode = 0x9e;
17084                 clip1hi_gaincode = 0x9e;
17085                 clip1md_gaincode_B = 0x24;
17086                 clip1lo_gaincode = 0x8a;
17087                 clip1lo_gaincode_B = 8;
17088                 rfseq_init_gain = rfseqA_init_gain_rev7;
17089
17090                 tia_gain_db = tiaA_gain_db_rev7;
17091                 tia_gainbits = tiaA_gainbits_rev7;
17092
17093                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
17094                 if (CHSPEC_IS20(pi->radio_chanspec)) {
17095
17096                         w1clip_th = 25;
17097                         clip1md_gaincode = 0x82;
17098
17099                         if ((freq <= 5080) || (freq == 5825)) {
17100
17101                                 s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
17102                                 s8 lna1A_gain_db_2_rev7[] = {
17103                                         11, 17, 22, 25 };
17104                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
17105
17106                                 crsminu_th = 0x3e;
17107                                 lna1_gain_db = lna1A_gain_db_rev7;
17108                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
17109                                 lna2_gain_db = lna2A_gain_db_rev7;
17110                         } else if ((freq >= 5500) && (freq <= 5700)) {
17111
17112                                 s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
17113                                 s8 lna1A_gain_db_2_rev7[] = {
17114                                         12, 18, 22, 26 };
17115                                 s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
17116
17117                                 crsminu_th = 0x45;
17118                                 clip1md_gaincode_B = 0x14;
17119                                 nbclip_th = 0xff;
17120                                 chg_nbclip_th = 1;
17121                                 lna1_gain_db = lna1A_gain_db_rev7;
17122                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
17123                                 lna2_gain_db = lna2A_gain_db_rev7;
17124                         } else {
17125
17126                                 s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
17127                                 s8 lna1A_gain_db_2_rev7[] = {
17128                                         12, 18, 22, 26 };
17129                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
17130
17131                                 crsminu_th = 0x41;
17132                                 lna1_gain_db = lna1A_gain_db_rev7;
17133                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
17134                                 lna2_gain_db = lna2A_gain_db_rev7;
17135                         }
17136
17137                         if (freq <= 4920) {
17138                                 nvar_baseline_offset0 = 5;
17139                                 nvar_baseline_offset1 = 5;
17140                         } else if ((freq > 4920) && (freq <= 5320)) {
17141                                 nvar_baseline_offset0 = 3;
17142                                 nvar_baseline_offset1 = 5;
17143                         } else if ((freq > 5320) && (freq <= 5700)) {
17144                                 nvar_baseline_offset0 = 3;
17145                                 nvar_baseline_offset1 = 2;
17146                         } else {
17147                                 nvar_baseline_offset0 = 4;
17148                                 nvar_baseline_offset1 = 0;
17149                         }
17150                 } else {
17151
17152                         crsminu_th = 0x3a;
17153                         crsminl_th = 0x3a;
17154                         w1clip_th = 20;
17155
17156                         if ((freq >= 4920) && (freq <= 5320)) {
17157                                 nvar_baseline_offset0 = 4;
17158                                 nvar_baseline_offset1 = 5;
17159                         } else if ((freq > 5320) && (freq <= 5550)) {
17160                                 nvar_baseline_offset0 = 4;
17161                                 nvar_baseline_offset1 = 2;
17162                         } else {
17163                                 nvar_baseline_offset0 = 5;
17164                                 nvar_baseline_offset1 = 3;
17165                         }
17166                 }
17167
17168                 write_phy_reg(pi, 0x20, init_gaincode);
17169                 write_phy_reg(pi, 0x2a7, init_gaincode);
17170
17171                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
17172                                          pi->pubpi.phy_corenum, 0x106, 16,
17173                                          rfseq_init_gain);
17174
17175                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
17176                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
17177
17178                 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
17179                 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
17180
17181                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
17182                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
17183                 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
17184                 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
17185
17186                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
17187                                          tia_gain_db);
17188                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
17189                                          tia_gain_db);
17190
17191                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
17192                                          tia_gainbits);
17193                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
17194                                          tia_gainbits);
17195
17196                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
17197
17198                 if (chg_nbclip_th == 1) {
17199                         write_phy_reg(pi, 0x2b, nbclip_th);
17200                         write_phy_reg(pi, 0x41, nbclip_th);
17201                 }
17202
17203                 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
17204                 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
17205
17206                 mod_phy_reg(pi, 0x2e4,
17207                             (0x3f << 0), (nvar_baseline_offset0 << 0));
17208
17209                 mod_phy_reg(pi, 0x2e4,
17210                             (0x3f << 6), (nvar_baseline_offset1 << 6));
17211
17212                 if (CHSPEC_IS20(pi->radio_chanspec)) {
17213
17214                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
17215                                                  lna1_gain_db);
17216                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
17217                                                  lna1_gain_db_2);
17218
17219                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
17220                                                  8, lna2_gain_db);
17221                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
17222                                                  8, lna2_gain_db);
17223
17224                         write_phy_reg(pi, 0x24, clip1md_gaincode);
17225                         write_phy_reg(pi, 0x2ab, clip1md_gaincode);
17226                 } else {
17227                         mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
17228                 }
17229
17230         }
17231
17232 }
17233
17234 static void wlc_phy_adjust_lnagaintbl_nphy(phy_info_t *pi)
17235 {
17236         uint core;
17237         int ctr;
17238         s16 gain_delta[2];
17239         u8 curr_channel;
17240         u16 minmax_gain[2];
17241         u16 regval[4];
17242
17243         if (pi->phyhang_avoid)
17244                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17245
17246         if (pi->nphy_gain_boost) {
17247                 if ((CHSPEC_IS2G(pi->radio_chanspec))) {
17248
17249                         gain_delta[0] = 6;
17250                         gain_delta[1] = 6;
17251                 } else {
17252
17253                         curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
17254                         gain_delta[0] =
17255                             (s16)
17256                             PHY_HW_ROUND(((nphy_lnagain_est0[0] *
17257                                            curr_channel) +
17258                                           nphy_lnagain_est0[1]), 13);
17259                         gain_delta[1] =
17260                             (s16)
17261                             PHY_HW_ROUND(((nphy_lnagain_est1[0] *
17262                                            curr_channel) +
17263                                           nphy_lnagain_est1[1]), 13);
17264                 }
17265         } else {
17266
17267                 gain_delta[0] = 0;
17268                 gain_delta[1] = 0;
17269         }
17270
17271         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17272                 if (pi->nphy_elna_gain_config) {
17273
17274                         regval[0] = nphy_def_lnagains[2] + gain_delta[core];
17275                         regval[1] = nphy_def_lnagains[3] + gain_delta[core];
17276                         regval[2] = nphy_def_lnagains[3] + gain_delta[core];
17277                         regval[3] = nphy_def_lnagains[3] + gain_delta[core];
17278                 } else {
17279                         for (ctr = 0; ctr < 4; ctr++) {
17280                                 regval[ctr] =
17281                                     nphy_def_lnagains[ctr] + gain_delta[core];
17282                         }
17283                 }
17284                 wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
17285
17286                 minmax_gain[core] =
17287                     (u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
17288         }
17289
17290         mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
17291         mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
17292
17293         if (pi->phyhang_avoid)
17294                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17295 }
17296
17297 void wlc_phy_switch_radio_nphy(phy_info_t *pi, bool on)
17298 {
17299         if (on) {
17300                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17301                         if (!pi->radio_is_on) {
17302                                 wlc_phy_radio_preinit_205x(pi);
17303                                 wlc_phy_radio_init_2057(pi);
17304                                 wlc_phy_radio_postinit_2057(pi);
17305                         }
17306
17307                         wlc_phy_chanspec_set((wlc_phy_t *) pi,
17308                                              pi->radio_chanspec);
17309                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17310                         wlc_phy_radio_preinit_205x(pi);
17311                         wlc_phy_radio_init_2056(pi);
17312                         wlc_phy_radio_postinit_2056(pi);
17313
17314                         wlc_phy_chanspec_set((wlc_phy_t *) pi,
17315                                              pi->radio_chanspec);
17316                 } else {
17317                         wlc_phy_radio_preinit_2055(pi);
17318                         wlc_phy_radio_init_2055(pi);
17319                         wlc_phy_radio_postinit_2055(pi);
17320                 }
17321
17322                 pi->radio_is_on = true;
17323
17324         } else {
17325
17326                 if (NREV_GE(pi->pubpi.phy_rev, 3)
17327                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
17328                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
17329                         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
17330
17331                         write_radio_reg(pi,
17332                                         RADIO_2056_TX_PADA_BOOST_TUNE |
17333                                         RADIO_2056_TX0, 0);
17334                         write_radio_reg(pi,
17335                                         RADIO_2056_TX_PADG_BOOST_TUNE |
17336                                         RADIO_2056_TX0, 0);
17337                         write_radio_reg(pi,
17338                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
17339                                         RADIO_2056_TX0, 0);
17340                         write_radio_reg(pi,
17341                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
17342                                         RADIO_2056_TX0, 0);
17343                         mod_radio_reg(pi,
17344                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
17345                                       RADIO_2056_TX0, 0xf0, 0);
17346                         write_radio_reg(pi,
17347                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
17348                                         RADIO_2056_TX0, 0);
17349
17350                         write_radio_reg(pi,
17351                                         RADIO_2056_TX_PADA_BOOST_TUNE |
17352                                         RADIO_2056_TX1, 0);
17353                         write_radio_reg(pi,
17354                                         RADIO_2056_TX_PADG_BOOST_TUNE |
17355                                         RADIO_2056_TX1, 0);
17356                         write_radio_reg(pi,
17357                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
17358                                         RADIO_2056_TX1, 0);
17359                         write_radio_reg(pi,
17360                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
17361                                         RADIO_2056_TX1, 0);
17362                         mod_radio_reg(pi,
17363                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
17364                                       RADIO_2056_TX1, 0xf0, 0);
17365                         write_radio_reg(pi,
17366                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
17367                                         RADIO_2056_TX1, 0);
17368
17369                         pi->radio_is_on = false;
17370                 }
17371
17372                 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
17373                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
17374                         pi->radio_is_on = false;
17375                 }
17376
17377         }
17378 }
17379
17380 static void wlc_phy_radio_preinit_2055(phy_info_t *pi)
17381 {
17382
17383         and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
17384         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
17385
17386         or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
17387 }
17388
17389 static void wlc_phy_radio_init_2055(phy_info_t *pi)
17390 {
17391         wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
17392 }
17393
17394 static void wlc_phy_radio_postinit_2055(phy_info_t *pi)
17395 {
17396
17397         and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
17398                       ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
17399
17400         if (((pi->sh->sromrev >= 4)
17401              && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
17402             || ((pi->sh->sromrev < 4))) {
17403                 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
17404                 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
17405         }
17406
17407         mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
17408         write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
17409
17410         and_radio_reg(pi, RADIO_2055_CAL_MISC,
17411                       ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
17412
17413         or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
17414
17415         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
17416
17417         udelay(1000);
17418
17419         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
17420
17421         SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
17422                    RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
17423
17424         ASSERT((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
17425                 RADIO_2055_RCAL_DONE) == RADIO_2055_RCAL_DONE);
17426
17427         and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
17428                       ~(RADIO_2055_CAL_LPO_ENABLE));
17429
17430         wlc_phy_chanspec_set((wlc_phy_t *) pi, pi->radio_chanspec);
17431
17432         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
17433         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
17434
17435         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
17436         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
17437
17438         mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
17439                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
17440         mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
17441                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
17442         if (pi->nphy_gain_boost) {
17443                 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
17444                               ~(RADIO_2055_GAINBST_DISABLE));
17445                 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
17446                               ~(RADIO_2055_GAINBST_DISABLE));
17447         } else {
17448                 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
17449                              RADIO_2055_GAINBST_DISABLE);
17450                 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
17451                              RADIO_2055_GAINBST_DISABLE);
17452         }
17453
17454         udelay(2);
17455 }
17456
17457 static void wlc_phy_radio_preinit_205x(phy_info_t *pi)
17458 {
17459
17460         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
17461         and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
17462
17463         or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
17464         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
17465
17466 }
17467
17468 static void wlc_phy_radio_init_2056(phy_info_t *pi)
17469 {
17470         radio_regs_t *regs_SYN_2056_ptr = NULL;
17471         radio_regs_t *regs_TX_2056_ptr = NULL;
17472         radio_regs_t *regs_RX_2056_ptr = NULL;
17473
17474         if (NREV_IS(pi->pubpi.phy_rev, 3)) {
17475                 regs_SYN_2056_ptr = regs_SYN_2056;
17476                 regs_TX_2056_ptr = regs_TX_2056;
17477                 regs_RX_2056_ptr = regs_RX_2056;
17478         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17479                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
17480                 regs_TX_2056_ptr = regs_TX_2056_A1;
17481                 regs_RX_2056_ptr = regs_RX_2056_A1;
17482         } else {
17483                 switch (pi->pubpi.radiorev) {
17484                 case 5:
17485                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
17486                         regs_TX_2056_ptr = regs_TX_2056_rev5;
17487                         regs_RX_2056_ptr = regs_RX_2056_rev5;
17488                         break;
17489
17490                 case 6:
17491                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
17492                         regs_TX_2056_ptr = regs_TX_2056_rev6;
17493                         regs_RX_2056_ptr = regs_RX_2056_rev6;
17494                         break;
17495
17496                 case 7:
17497                 case 9:
17498                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
17499                         regs_TX_2056_ptr = regs_TX_2056_rev7;
17500                         regs_RX_2056_ptr = regs_RX_2056_rev7;
17501                         break;
17502
17503                 case 8:
17504                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
17505                         regs_TX_2056_ptr = regs_TX_2056_rev8;
17506                         regs_RX_2056_ptr = regs_RX_2056_rev8;
17507                         break;
17508
17509                 case 11:
17510                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
17511                         regs_TX_2056_ptr = regs_TX_2056_rev11;
17512                         regs_RX_2056_ptr = regs_RX_2056_rev11;
17513                         break;
17514
17515                 default:
17516                         ASSERT(0);
17517                         break;
17518                 }
17519         }
17520
17521         wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
17522
17523         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
17524
17525         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
17526
17527         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
17528
17529         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
17530 }
17531
17532 static void wlc_phy_radio_postinit_2056(phy_info_t *pi)
17533 {
17534         mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
17535
17536         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
17537         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
17538         udelay(1000);
17539         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
17540
17541         if ((pi->sh->boardflags2 & BFL2_LEGACY)
17542             || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN)) {
17543
17544                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
17545         } else {
17546
17547                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
17548         }
17549
17550         mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
17551
17552         if (pi->phy_init_por) {
17553                 wlc_phy_radio205x_rcal(pi);
17554         }
17555 }
17556
17557 static void wlc_phy_radio_init_2057(phy_info_t *pi)
17558 {
17559         radio_20xx_regs_t *regs_2057_ptr = NULL;
17560
17561         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
17562
17563                 regs_2057_ptr = regs_2057_rev4;
17564         } else if (NREV_IS(pi->pubpi.phy_rev, 8)
17565                    || NREV_IS(pi->pubpi.phy_rev, 9)) {
17566                 switch (pi->pubpi.radiorev) {
17567                 case 5:
17568
17569                         if (pi->pubpi.radiover == 0x0) {
17570
17571                                 regs_2057_ptr = regs_2057_rev5;
17572
17573                         } else if (pi->pubpi.radiover == 0x1) {
17574
17575                                 regs_2057_ptr = regs_2057_rev5v1;
17576                         } else {
17577                                 ASSERT(0);
17578                                 break;
17579                         }
17580
17581                 case 7:
17582
17583                         regs_2057_ptr = regs_2057_rev7;
17584                         break;
17585
17586                 case 8:
17587
17588                         regs_2057_ptr = regs_2057_rev8;
17589                         break;
17590
17591                 default:
17592                         ASSERT(0);
17593                         break;
17594                 }
17595         } else {
17596                 ASSERT(0);
17597         }
17598
17599         wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
17600 }
17601
17602 static void wlc_phy_radio_postinit_2057(phy_info_t *pi)
17603 {
17604
17605         mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
17606
17607         if (pi->sh->chip == !BCM6362_CHIP_ID) {
17608
17609                 mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x2, 0x2);
17610         }
17611
17612         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
17613         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
17614         mdelay(2);
17615         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
17616         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
17617
17618         if (pi->phy_init_por) {
17619                 wlc_phy_radio205x_rcal(pi);
17620                 wlc_phy_radio2057_rccal(pi);
17621         }
17622
17623         mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
17624 }
17625
17626 static bool
17627 wlc_phy_chan2freq_nphy(phy_info_t *pi, uint channel, int *f,
17628                        chan_info_nphy_radio2057_t **t0,
17629                        chan_info_nphy_radio205x_t **t1,
17630                        chan_info_nphy_radio2057_rev5_t **t2,
17631                        chan_info_nphy_2055_t **t3)
17632 {
17633         uint i;
17634         chan_info_nphy_radio2057_t *chan_info_tbl_p_0 = NULL;
17635         chan_info_nphy_radio205x_t *chan_info_tbl_p_1 = NULL;
17636         chan_info_nphy_radio2057_rev5_t *chan_info_tbl_p_2 = NULL;
17637         u32 tbl_len = 0;
17638
17639         int freq = 0;
17640
17641         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17642
17643                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
17644
17645                         chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
17646                         tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
17647
17648                 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
17649                            || NREV_IS(pi->pubpi.phy_rev, 9)) {
17650                         switch (pi->pubpi.radiorev) {
17651
17652                         case 5:
17653
17654                                 if (pi->pubpi.radiover == 0x0) {
17655
17656                                         chan_info_tbl_p_2 =
17657                                             chan_info_nphyrev8_2057_rev5;
17658                                         tbl_len =
17659                                             ARRAY_SIZE
17660                                             (chan_info_nphyrev8_2057_rev5);
17661
17662                                 } else if (pi->pubpi.radiover == 0x1) {
17663
17664                                         chan_info_tbl_p_2 =
17665                                             chan_info_nphyrev9_2057_rev5v1;
17666                                         tbl_len =
17667                                             ARRAY_SIZE
17668                                             (chan_info_nphyrev9_2057_rev5v1);
17669
17670                                 }
17671                                 break;
17672
17673                         case 7:
17674                                 chan_info_tbl_p_0 =
17675                                     chan_info_nphyrev8_2057_rev7;
17676                                 tbl_len =
17677                                     ARRAY_SIZE(chan_info_nphyrev8_2057_rev7);
17678                                 break;
17679
17680                         case 8:
17681                                 chan_info_tbl_p_0 =
17682                                     chan_info_nphyrev8_2057_rev8;
17683                                 tbl_len =
17684                                     ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
17685                                 break;
17686
17687                         default:
17688                                 if (NORADIO_ENAB(pi->pubpi)) {
17689                                         goto fail;
17690                                 }
17691                                 break;
17692                         }
17693                 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
17694
17695                         chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
17696                         tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
17697                 } else {
17698                         goto fail;
17699                 }
17700
17701                 for (i = 0; i < tbl_len; i++) {
17702                         if (pi->pubpi.radiorev == 5) {
17703
17704                                 if (chan_info_tbl_p_2[i].chan == channel)
17705                                         break;
17706                         } else {
17707
17708                                 if (chan_info_tbl_p_0[i].chan == channel)
17709                                         break;
17710                         }
17711                 }
17712
17713                 if (i >= tbl_len) {
17714                         ASSERT(i < tbl_len);
17715                         goto fail;
17716                 }
17717                 if (pi->pubpi.radiorev == 5) {
17718                         *t2 = &chan_info_tbl_p_2[i];
17719                         freq = chan_info_tbl_p_2[i].freq;
17720                 } else {
17721                         *t0 = &chan_info_tbl_p_0[i];
17722                         freq = chan_info_tbl_p_0[i].freq;
17723                 }
17724
17725         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17726                 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
17727                         chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
17728                         tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
17729                 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17730                         chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
17731                         tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
17732                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
17733                            || NREV_IS(pi->pubpi.phy_rev, 6)) {
17734                         switch (pi->pubpi.radiorev) {
17735                         case 5:
17736                                 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
17737                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
17738                                 break;
17739                         case 6:
17740                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
17741                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
17742                                 break;
17743                         case 7:
17744                         case 9:
17745                                 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
17746                                 tbl_len =
17747                                     ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
17748                                 break;
17749                         case 8:
17750                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
17751                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
17752                                 break;
17753                         case 11:
17754                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
17755                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v11);
17756                                 break;
17757                         default:
17758                                 if (NORADIO_ENAB(pi->pubpi)) {
17759                                         goto fail;
17760                                 }
17761                                 break;
17762                         }
17763                 }
17764
17765                 for (i = 0; i < tbl_len; i++) {
17766                         if (chan_info_tbl_p_1[i].chan == channel)
17767                                 break;
17768                 }
17769
17770                 if (i >= tbl_len) {
17771                         ASSERT(i < tbl_len);
17772                         goto fail;
17773                 }
17774                 *t1 = &chan_info_tbl_p_1[i];
17775                 freq = chan_info_tbl_p_1[i].freq;
17776
17777         } else {
17778                 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
17779                         if (chan_info_nphy_2055[i].chan == channel)
17780                                 break;
17781
17782                 if (i >= ARRAY_SIZE(chan_info_nphy_2055)) {
17783                         ASSERT(i < ARRAY_SIZE(chan_info_nphy_2055));
17784                         goto fail;
17785                 }
17786                 *t3 = &chan_info_nphy_2055[i];
17787                 freq = chan_info_nphy_2055[i].freq;
17788         }
17789
17790         *f = freq;
17791         return true;
17792
17793  fail:
17794         *f = WL_CHAN_FREQ_RANGE_2G;
17795         return false;
17796 }
17797
17798 u8 wlc_phy_get_chan_freq_range_nphy(phy_info_t *pi, uint channel)
17799 {
17800         int freq;
17801         chan_info_nphy_radio2057_t *t0 = NULL;
17802         chan_info_nphy_radio205x_t *t1 = NULL;
17803         chan_info_nphy_radio2057_rev5_t *t2 = NULL;
17804         chan_info_nphy_2055_t *t3 = NULL;
17805
17806         if (NORADIO_ENAB(pi->pubpi))
17807                 return WL_CHAN_FREQ_RANGE_2G;
17808
17809         if (channel == 0)
17810                 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
17811
17812         wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
17813
17814         if (CHSPEC_IS2G(pi->radio_chanspec))
17815                 return WL_CHAN_FREQ_RANGE_2G;
17816
17817         if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN)) {
17818                 return WL_CHAN_FREQ_RANGE_5GL;
17819         } else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN)) {
17820                 return WL_CHAN_FREQ_RANGE_5GM;
17821         } else {
17822                 return WL_CHAN_FREQ_RANGE_5GH;
17823         }
17824 }
17825
17826 static void
17827 wlc_phy_chanspec_radio2055_setup(phy_info_t *pi, chan_info_nphy_2055_t *ci)
17828 {
17829
17830         write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
17831         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
17832         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
17833         write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
17834
17835         WLC_PHY_WAR_PR51571(pi);
17836
17837         write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
17838         write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
17839         write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
17840         write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
17841
17842         WLC_PHY_WAR_PR51571(pi);
17843
17844         write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
17845         write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
17846         write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
17847         write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
17848
17849         WLC_PHY_WAR_PR51571(pi);
17850
17851         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
17852                         ci->RF_core1_lgbuf_a_tune);
17853         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
17854                         ci->RF_core1_lgbuf_g_tune);
17855         write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
17856         write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
17857                         ci->RF_core1_tx_pga_pad_tn);
17858
17859         WLC_PHY_WAR_PR51571(pi);
17860
17861         write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
17862                         ci->RF_core1_tx_mx_bgtrim);
17863         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
17864                         ci->RF_core2_lgbuf_a_tune);
17865         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
17866                         ci->RF_core2_lgbuf_g_tune);
17867         write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
17868
17869         WLC_PHY_WAR_PR51571(pi);
17870
17871         write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
17872                         ci->RF_core2_tx_pga_pad_tn);
17873         write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
17874                         ci->RF_core2_tx_mx_bgtrim);
17875
17876         udelay(50);
17877
17878         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
17879         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
17880
17881         WLC_PHY_WAR_PR51571(pi);
17882
17883         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
17884
17885         udelay(300);
17886 }
17887
17888 static void
17889 wlc_phy_chanspec_radio2056_setup(phy_info_t *pi,
17890                                  const chan_info_nphy_radio205x_t *ci)
17891 {
17892         radio_regs_t *regs_SYN_2056_ptr = NULL;
17893
17894         write_radio_reg(pi,
17895                         RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
17896                         ci->RF_SYN_pll_vcocal1);
17897         write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
17898                         ci->RF_SYN_pll_vcocal2);
17899         write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
17900                         ci->RF_SYN_pll_refdiv);
17901         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
17902                         ci->RF_SYN_pll_mmd2);
17903         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
17904                         ci->RF_SYN_pll_mmd1);
17905         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
17906                         ci->RF_SYN_pll_loopfilter1);
17907         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
17908                         ci->RF_SYN_pll_loopfilter2);
17909         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
17910                         ci->RF_SYN_pll_loopfilter3);
17911         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
17912                         ci->RF_SYN_pll_loopfilter4);
17913         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
17914                         ci->RF_SYN_pll_loopfilter5);
17915         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
17916                         ci->RF_SYN_reserved_addr27);
17917         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
17918                         ci->RF_SYN_reserved_addr28);
17919         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
17920                         ci->RF_SYN_reserved_addr29);
17921         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
17922                         ci->RF_SYN_logen_VCOBUF1);
17923         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
17924                         ci->RF_SYN_logen_MIXER2);
17925         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
17926                         ci->RF_SYN_logen_BUF3);
17927         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
17928                         ci->RF_SYN_logen_BUF4);
17929
17930         write_radio_reg(pi,
17931                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
17932                         ci->RF_RX0_lnaa_tune);
17933         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
17934                         ci->RF_RX0_lnag_tune);
17935         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
17936                         ci->RF_TX0_intpaa_boost_tune);
17937         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
17938                         ci->RF_TX0_intpag_boost_tune);
17939         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
17940                         ci->RF_TX0_pada_boost_tune);
17941         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
17942                         ci->RF_TX0_padg_boost_tune);
17943         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
17944                         ci->RF_TX0_pgaa_boost_tune);
17945         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
17946                         ci->RF_TX0_pgag_boost_tune);
17947         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
17948                         ci->RF_TX0_mixa_boost_tune);
17949         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
17950                         ci->RF_TX0_mixg_boost_tune);
17951
17952         write_radio_reg(pi,
17953                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
17954                         ci->RF_RX1_lnaa_tune);
17955         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
17956                         ci->RF_RX1_lnag_tune);
17957         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
17958                         ci->RF_TX1_intpaa_boost_tune);
17959         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
17960                         ci->RF_TX1_intpag_boost_tune);
17961         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
17962                         ci->RF_TX1_pada_boost_tune);
17963         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
17964                         ci->RF_TX1_padg_boost_tune);
17965         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
17966                         ci->RF_TX1_pgaa_boost_tune);
17967         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
17968                         ci->RF_TX1_pgag_boost_tune);
17969         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
17970                         ci->RF_TX1_mixa_boost_tune);
17971         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
17972                         ci->RF_TX1_mixg_boost_tune);
17973
17974         if (NREV_IS(pi->pubpi.phy_rev, 3))
17975                 regs_SYN_2056_ptr = regs_SYN_2056;
17976         else if (NREV_IS(pi->pubpi.phy_rev, 4))
17977                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
17978         else {
17979                 switch (pi->pubpi.radiorev) {
17980                 case 5:
17981                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
17982                         break;
17983                 case 6:
17984                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
17985                         break;
17986                 case 7:
17987                 case 9:
17988                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
17989                         break;
17990                 case 8:
17991                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
17992                         break;
17993                 case 11:
17994                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
17995                         break;
17996                 }
17997         }
17998         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17999                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
18000                                 RADIO_2056_SYN,
18001                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
18002         } else {
18003                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
18004                                 RADIO_2056_SYN,
18005                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
18006         }
18007
18008         if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
18009                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18010                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
18011                                         RADIO_2056_SYN, 0x1f);
18012                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
18013                                         RADIO_2056_SYN, 0x1f);
18014
18015                         if ((pi->sh->chip == BCM4716_CHIP_ID) ||
18016                             (pi->sh->chip == BCM47162_CHIP_ID)) {
18017
18018                                 write_radio_reg(pi,
18019                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
18020                                                 RADIO_2056_SYN, 0x14);
18021                                 write_radio_reg(pi,
18022                                                 RADIO_2056_SYN_PLL_CP2 |
18023                                                 RADIO_2056_SYN, 0x00);
18024                         } else {
18025                                 write_radio_reg(pi,
18026                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
18027                                                 RADIO_2056_SYN, 0xb);
18028                                 write_radio_reg(pi,
18029                                                 RADIO_2056_SYN_PLL_CP2 |
18030                                                 RADIO_2056_SYN, 0x14);
18031                         }
18032                 }
18033         }
18034
18035         if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
18036             (CHSPEC_IS2G(pi->radio_chanspec))) {
18037                 write_radio_reg(pi,
18038                                 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
18039                                 0x1f);
18040                 write_radio_reg(pi,
18041                                 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
18042                                 0x1f);
18043                 write_radio_reg(pi,
18044                                 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
18045                                 0xb);
18046                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
18047                                 0x20);
18048         }
18049
18050         if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
18051                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18052                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
18053                                         RADIO_2056_SYN, 0x1f);
18054                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
18055                                         RADIO_2056_SYN, 0x1f);
18056                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
18057                                         RADIO_2056_SYN, 0x5);
18058                         write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
18059                                         RADIO_2056_SYN, 0xc);
18060                 }
18061         }
18062
18063         if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
18064                 u16 pag_boost_tune;
18065                 u16 padg_boost_tune;
18066                 u16 pgag_boost_tune;
18067                 u16 mixg_boost_tune;
18068                 u16 bias, cascbias;
18069                 uint core;
18070
18071                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18072
18073                         if (NREV_GE(pi->pubpi.phy_rev, 5)) {
18074
18075                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18076                                                  PADG_IDAC, 0xcc);
18077
18078                                 if ((pi->sh->chip == BCM4716_CHIP_ID) ||
18079                                     (pi->sh->chip ==
18080                                      BCM47162_CHIP_ID)) {
18081                                         bias = 0x40;
18082                                         cascbias = 0x45;
18083                                         pag_boost_tune = 0x5;
18084                                         pgag_boost_tune = 0x33;
18085                                         padg_boost_tune = 0x77;
18086                                         mixg_boost_tune = 0x55;
18087                                 } else {
18088                                         bias = 0x25;
18089                                         cascbias = 0x20;
18090
18091                                         if ((pi->sh->chip ==
18092                                              BCM43224_CHIP_ID)
18093                                             || (pi->sh->chip ==
18094                                                 BCM43225_CHIP_ID)
18095                                             || (pi->sh->chip ==
18096                                                 BCM43421_CHIP_ID)) {
18097                                                 if (pi->sh->chippkg ==
18098                                                     BCM43224_FAB_SMIC) {
18099                                                         bias = 0x2a;
18100                                                         cascbias = 0x38;
18101                                                 }
18102                                         }
18103
18104                                         pag_boost_tune = 0x4;
18105                                         pgag_boost_tune = 0x03;
18106                                         padg_boost_tune = 0x77;
18107                                         mixg_boost_tune = 0x65;
18108                                 }
18109
18110                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18111                                                  INTPAG_IMAIN_STAT, bias);
18112                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18113                                                  INTPAG_IAUX_STAT, bias);
18114                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18115                                                  INTPAG_CASCBIAS, cascbias);
18116
18117                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18118                                                  INTPAG_BOOST_TUNE,
18119                                                  pag_boost_tune);
18120                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18121                                                  PGAG_BOOST_TUNE,
18122                                                  pgag_boost_tune);
18123                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18124                                                  PADG_BOOST_TUNE,
18125                                                  padg_boost_tune);
18126                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18127                                                  MIXG_BOOST_TUNE,
18128                                                  mixg_boost_tune);
18129                         } else {
18130
18131                                 bias = IS40MHZ(pi) ? 0x40 : 0x20;
18132
18133                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18134                                                  INTPAG_IMAIN_STAT, bias);
18135                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18136                                                  INTPAG_IAUX_STAT, bias);
18137                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18138                                                  INTPAG_CASCBIAS, 0x30);
18139                         }
18140                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
18141                                          0xee);
18142                 }
18143         }
18144
18145         if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
18146             && CHSPEC_IS5G(pi->radio_chanspec)) {
18147                 u16 paa_boost_tune;
18148                 u16 pada_boost_tune;
18149                 u16 pgaa_boost_tune;
18150                 u16 mixa_boost_tune;
18151                 u16 freq, pabias, cascbias;
18152                 uint core;
18153
18154                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
18155
18156                 if (freq < 5150) {
18157
18158                         paa_boost_tune = 0xa;
18159                         pada_boost_tune = 0x77;
18160                         pgaa_boost_tune = 0xf;
18161                         mixa_boost_tune = 0xf;
18162                 } else if (freq < 5340) {
18163
18164                         paa_boost_tune = 0x8;
18165                         pada_boost_tune = 0x77;
18166                         pgaa_boost_tune = 0xfb;
18167                         mixa_boost_tune = 0xf;
18168                 } else if (freq < 5650) {
18169
18170                         paa_boost_tune = 0x0;
18171                         pada_boost_tune = 0x77;
18172                         pgaa_boost_tune = 0xb;
18173                         mixa_boost_tune = 0xf;
18174                 } else {
18175
18176                         paa_boost_tune = 0x0;
18177                         pada_boost_tune = 0x77;
18178                         if (freq != 5825) {
18179                                 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
18180                         } else {
18181                                 pgaa_boost_tune = 6;
18182                         }
18183                         mixa_boost_tune = 0xf;
18184                 }
18185
18186                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18187                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18188                                          INTPAA_BOOST_TUNE, paa_boost_tune);
18189                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18190                                          PADA_BOOST_TUNE, pada_boost_tune);
18191                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18192                                          PGAA_BOOST_TUNE, pgaa_boost_tune);
18193                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18194                                          MIXA_BOOST_TUNE, mixa_boost_tune);
18195
18196                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18197                                          TXSPARE1, 0x30);
18198                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18199                                          PA_SPARE2, 0xee);
18200
18201                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18202                                          PADA_CASCBIAS, 0x3);
18203
18204                         cascbias = 0x30;
18205
18206                         if ((pi->sh->chip == BCM43224_CHIP_ID) ||
18207                             (pi->sh->chip == BCM43225_CHIP_ID) ||
18208                             (pi->sh->chip == BCM43421_CHIP_ID)) {
18209                                 if (pi->sh->chippkg == BCM43224_FAB_SMIC) {
18210                                         cascbias = 0x35;
18211                                 }
18212                         }
18213
18214                         pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
18215
18216                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18217                                          INTPAA_IAUX_STAT, pabias);
18218                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18219                                          INTPAA_IMAIN_STAT, pabias);
18220                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18221                                          INTPAA_CASCBIAS, cascbias);
18222                 }
18223         }
18224
18225         udelay(50);
18226
18227         wlc_phy_radio205x_vcocal_nphy(pi);
18228 }
18229
18230 void wlc_phy_radio205x_vcocal_nphy(phy_info_t *pi)
18231 {
18232         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18233                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
18234                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
18235                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
18236                               (1 << 2));
18237                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
18238         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18239                 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
18240                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
18241                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
18242                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
18243                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
18244         }
18245
18246         udelay(300);
18247 }
18248
18249 #define MAX_205x_RCAL_WAITLOOPS 10000
18250
18251 static u16 wlc_phy_radio205x_rcal(phy_info_t *pi)
18252 {
18253         u16 rcal_reg = 0;
18254         int i;
18255
18256         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18257
18258                 if (pi->pubpi.radiorev == 5) {
18259
18260                         and_phy_reg(pi, 0x342, ~(0x1 << 1));
18261
18262                         udelay(10);
18263
18264                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
18265                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
18266                                       0x1);
18267                 }
18268                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
18269
18270                 udelay(10);
18271
18272                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
18273
18274                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18275                         rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
18276                         if (rcal_reg & 0x1) {
18277                                 break;
18278                         }
18279                         udelay(100);
18280                 }
18281
18282                 ASSERT(i < MAX_205x_RCAL_WAITLOOPS);
18283
18284                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
18285
18286                 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
18287
18288                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
18289                 if (pi->pubpi.radiorev == 5) {
18290
18291                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
18292                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
18293                                       0x0);
18294                 }
18295
18296                 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
18297
18298                         mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
18299                                       rcal_reg);
18300                         mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
18301                                       rcal_reg << 2);
18302                 }
18303
18304         } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
18305                 u16 savereg;
18306
18307                 savereg =
18308                     read_radio_reg(pi,
18309                                    RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN);
18310                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
18311                                 savereg | 0x7);
18312                 udelay(10);
18313
18314                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18315                                 0x1);
18316                 udelay(10);
18317
18318                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18319                                 0x9);
18320
18321                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18322                         rcal_reg = read_radio_reg(pi,
18323                                                   RADIO_2056_SYN_RCAL_CODE_OUT |
18324                                                   RADIO_2056_SYN);
18325                         if (rcal_reg & 0x80) {
18326                                 break;
18327                         }
18328                         udelay(100);
18329                 }
18330
18331                 ASSERT(i < MAX_205x_RCAL_WAITLOOPS);
18332
18333                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18334                                 0x1);
18335
18336                 rcal_reg =
18337                     read_radio_reg(pi,
18338                                    RADIO_2056_SYN_RCAL_CODE_OUT |
18339                                    RADIO_2056_SYN);
18340
18341                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18342                                 0x0);
18343
18344                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
18345                                 savereg);
18346
18347                 return rcal_reg & 0x1f;
18348         }
18349         return rcal_reg & 0x3e;
18350 }
18351
18352 static void
18353 wlc_phy_chanspec_radio2057_setup(phy_info_t *pi,
18354                                  const chan_info_nphy_radio2057_t *ci,
18355                                  const chan_info_nphy_radio2057_rev5_t *ci2)
18356 {
18357         int coreNum;
18358         u16 txmix2g_tune_boost_pu = 0;
18359         u16 pad2g_tune_pus = 0;
18360
18361         if (pi->pubpi.radiorev == 5) {
18362
18363                 write_radio_reg(pi,
18364                                 RADIO_2057_VCOCAL_COUNTVAL0,
18365                                 ci2->RF_vcocal_countval0);
18366                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
18367                                 ci2->RF_vcocal_countval1);
18368                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
18369                                 ci2->RF_rfpll_refmaster_sparextalsize);
18370                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18371                                 ci2->RF_rfpll_loopfilter_r1);
18372                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18373                                 ci2->RF_rfpll_loopfilter_c2);
18374                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18375                                 ci2->RF_rfpll_loopfilter_c1);
18376                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
18377                                 ci2->RF_cp_kpd_idac);
18378                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
18379                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
18380                 write_radio_reg(pi,
18381                                 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
18382                 write_radio_reg(pi,
18383                                 RADIO_2057_LOGEN_MX2G_TUNE,
18384                                 ci2->RF_logen_mx2g_tune);
18385                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
18386                                 ci2->RF_logen_indbuf2g_tune);
18387
18388                 write_radio_reg(pi,
18389                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
18390                                 ci2->RF_txmix2g_tune_boost_pu_core0);
18391                 write_radio_reg(pi,
18392                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
18393                                 ci2->RF_pad2g_tune_pus_core0);
18394                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
18395                                 ci2->RF_lna2g_tune_core0);
18396
18397                 write_radio_reg(pi,
18398                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
18399                                 ci2->RF_txmix2g_tune_boost_pu_core1);
18400                 write_radio_reg(pi,
18401                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
18402                                 ci2->RF_pad2g_tune_pus_core1);
18403                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
18404                                 ci2->RF_lna2g_tune_core1);
18405
18406         } else {
18407
18408                 write_radio_reg(pi,
18409                                 RADIO_2057_VCOCAL_COUNTVAL0,
18410                                 ci->RF_vcocal_countval0);
18411                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
18412                                 ci->RF_vcocal_countval1);
18413                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
18414                                 ci->RF_rfpll_refmaster_sparextalsize);
18415                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18416                                 ci->RF_rfpll_loopfilter_r1);
18417                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18418                                 ci->RF_rfpll_loopfilter_c2);
18419                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18420                                 ci->RF_rfpll_loopfilter_c1);
18421                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
18422                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
18423                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
18424                 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
18425                 write_radio_reg(pi,
18426                                 RADIO_2057_LOGEN_MX2G_TUNE,
18427                                 ci->RF_logen_mx2g_tune);
18428                 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
18429                                 ci->RF_logen_mx5g_tune);
18430                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
18431                                 ci->RF_logen_indbuf2g_tune);
18432                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
18433                                 ci->RF_logen_indbuf5g_tune);
18434
18435                 write_radio_reg(pi,
18436                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
18437                                 ci->RF_txmix2g_tune_boost_pu_core0);
18438                 write_radio_reg(pi,
18439                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
18440                                 ci->RF_pad2g_tune_pus_core0);
18441                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
18442                                 ci->RF_pga_boost_tune_core0);
18443                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
18444                                 ci->RF_txmix5g_boost_tune_core0);
18445                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
18446                                 ci->RF_pad5g_tune_misc_pus_core0);
18447                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
18448                                 ci->RF_lna2g_tune_core0);
18449                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
18450                                 ci->RF_lna5g_tune_core0);
18451
18452                 write_radio_reg(pi,
18453                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
18454                                 ci->RF_txmix2g_tune_boost_pu_core1);
18455                 write_radio_reg(pi,
18456                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
18457                                 ci->RF_pad2g_tune_pus_core1);
18458                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
18459                                 ci->RF_pga_boost_tune_core1);
18460                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
18461                                 ci->RF_txmix5g_boost_tune_core1);
18462                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
18463                                 ci->RF_pad5g_tune_misc_pus_core1);
18464                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
18465                                 ci->RF_lna2g_tune_core1);
18466                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
18467                                 ci->RF_lna5g_tune_core1);
18468         }
18469
18470         if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
18471
18472                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18473                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18474                                         0x3f);
18475                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
18476                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18477                                         0x8);
18478                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18479                                         0x8);
18480                 } else {
18481                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18482                                         0x1f);
18483                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
18484                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18485                                         0x8);
18486                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18487                                         0x8);
18488                 }
18489         } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
18490                    (pi->pubpi.radiorev == 8)) {
18491
18492                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18493                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18494                                         0x1b);
18495                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
18496                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18497                                         0xa);
18498                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18499                                         0xa);
18500                 } else {
18501                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18502                                         0x1f);
18503                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
18504                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18505                                         0x8);
18506                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18507                                         0x8);
18508                 }
18509
18510         }
18511
18512         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18513                 if (PHY_IPA(pi)) {
18514                         if (pi->pubpi.radiorev == 3) {
18515                                 txmix2g_tune_boost_pu = 0x6b;
18516                         }
18517
18518                         if (pi->pubpi.radiorev == 5)
18519                                 pad2g_tune_pus = 0x73;
18520
18521                 } else {
18522                         if (pi->pubpi.radiorev != 5) {
18523                                 pad2g_tune_pus = 0x3;
18524
18525                                 txmix2g_tune_boost_pu = 0x61;
18526                         }
18527                 }
18528
18529                 for (coreNum = 0; coreNum <= 1; coreNum++) {
18530
18531                         if (txmix2g_tune_boost_pu != 0)
18532                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
18533                                                  TXMIX2G_TUNE_BOOST_PU,
18534                                                  txmix2g_tune_boost_pu);
18535
18536                         if (pad2g_tune_pus != 0)
18537                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
18538                                                  PAD2G_TUNE_PUS,
18539                                                  pad2g_tune_pus);
18540                 }
18541         }
18542
18543         udelay(50);
18544
18545         wlc_phy_radio205x_vcocal_nphy(pi);
18546 }
18547
18548 static u16 wlc_phy_radio2057_rccal(phy_info_t *pi)
18549 {
18550         u16 rccal_valid;
18551         int i;
18552         bool chip43226_6362A0;
18553
18554         chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
18555                             || (pi->pubpi.radiorev == 4)
18556                             || (pi->pubpi.radiorev == 6));
18557
18558         rccal_valid = 0;
18559         if (chip43226_6362A0) {
18560                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
18561                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
18562         } else {
18563                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
18564
18565                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
18566         }
18567         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
18568         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
18569
18570         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18571                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
18572                 if (rccal_valid & 0x2) {
18573                         break;
18574                 }
18575                 udelay(500);
18576         }
18577
18578         ASSERT(rccal_valid & 0x2);
18579
18580         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
18581
18582         rccal_valid = 0;
18583         if (chip43226_6362A0) {
18584                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
18585                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
18586         } else {
18587                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
18588
18589                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
18590         }
18591         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
18592         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
18593
18594         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18595                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
18596                 if (rccal_valid & 0x2) {
18597                         break;
18598                 }
18599                 udelay(500);
18600         }
18601
18602         ASSERT(rccal_valid & 0x2);
18603
18604         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
18605
18606         rccal_valid = 0;
18607         if (chip43226_6362A0) {
18608                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
18609
18610                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
18611                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
18612         } else {
18613                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
18614                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
18615                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
18616         }
18617         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
18618
18619         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18620                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
18621                 if (rccal_valid & 0x2) {
18622                         break;
18623                 }
18624                 udelay(500);
18625         }
18626
18627         ASSERT(rccal_valid & 0x2);
18628
18629         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
18630
18631         return rccal_valid;
18632 }
18633
18634 static void
18635 wlc_phy_adjust_rx_analpfbw_nphy(phy_info_t *pi, u16 reduction_factr)
18636 {
18637         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18638                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18639                     CHSPEC_IS40(pi->radio_chanspec)) {
18640                         if (!pi->nphy_anarxlpf_adjusted) {
18641                                 write_radio_reg(pi,
18642                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18643                                                  RADIO_2056_RX0),
18644                                                 ((pi->nphy_rccal_value +
18645                                                   reduction_factr) | 0x80));
18646
18647                                 pi->nphy_anarxlpf_adjusted = true;
18648                         }
18649                 } else {
18650                         if (pi->nphy_anarxlpf_adjusted) {
18651                                 write_radio_reg(pi,
18652                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18653                                                  RADIO_2056_RX0),
18654                                                 (pi->nphy_rccal_value | 0x80));
18655
18656                                 pi->nphy_anarxlpf_adjusted = false;
18657                         }
18658                 }
18659         }
18660 }
18661
18662 static void
18663 wlc_phy_adjust_min_noisevar_nphy(phy_info_t *pi, int ntones, int *tone_id_buf,
18664                                  u32 *noise_var_buf)
18665 {
18666         int i;
18667         u32 offset;
18668         int tone_id;
18669         int tbllen =
18670             CHSPEC_IS40(pi->
18671                         radio_chanspec) ? NPHY_NOISEVAR_TBLLEN40 :
18672             NPHY_NOISEVAR_TBLLEN20;
18673
18674         if (pi->nphy_noisevars_adjusted) {
18675                 for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
18676                         tone_id = pi->nphy_saved_noisevars.tone_id[i];
18677                         offset = (tone_id >= 0) ?
18678                             ((tone_id * 2) + 1) : (tbllen + (tone_id * 2) + 1);
18679                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18680                                                  offset, 32,
18681                                                  (void *)&pi->
18682                                                  nphy_saved_noisevars.
18683                                                  min_noise_vars[i]);
18684                 }
18685
18686                 pi->nphy_saved_noisevars.bufcount = 0;
18687                 pi->nphy_noisevars_adjusted = false;
18688         }
18689
18690         if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
18691                 pi->nphy_saved_noisevars.bufcount = 0;
18692
18693                 for (i = 0; i < ntones; i++) {
18694                         tone_id = tone_id_buf[i];
18695                         offset = (tone_id >= 0) ?
18696                             ((tone_id * 2) + 1) : (tbllen + (tone_id * 2) + 1);
18697                         pi->nphy_saved_noisevars.tone_id[i] = tone_id;
18698                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18699                                                 offset, 32,
18700                                                 &pi->nphy_saved_noisevars.
18701                                                 min_noise_vars[i]);
18702                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18703                                                  offset, 32,
18704                                                  (void *)&noise_var_buf[i]);
18705                         pi->nphy_saved_noisevars.bufcount++;
18706                 }
18707
18708                 pi->nphy_noisevars_adjusted = true;
18709         }
18710 }
18711
18712 static void wlc_phy_adjust_crsminpwr_nphy(phy_info_t *pi, u8 minpwr)
18713 {
18714         u16 regval;
18715
18716         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18717                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18718                     CHSPEC_IS40(pi->radio_chanspec)) {
18719                         if (!pi->nphy_crsminpwr_adjusted) {
18720                                 regval = read_phy_reg(pi, 0x27d);
18721                                 pi->nphy_crsminpwr[0] = regval & 0xff;
18722                                 regval &= 0xff00;
18723                                 regval |= (u16) minpwr;
18724                                 write_phy_reg(pi, 0x27d, regval);
18725
18726                                 regval = read_phy_reg(pi, 0x280);
18727                                 pi->nphy_crsminpwr[1] = regval & 0xff;
18728                                 regval &= 0xff00;
18729                                 regval |= (u16) minpwr;
18730                                 write_phy_reg(pi, 0x280, regval);
18731
18732                                 regval = read_phy_reg(pi, 0x283);
18733                                 pi->nphy_crsminpwr[2] = regval & 0xff;
18734                                 regval &= 0xff00;
18735                                 regval |= (u16) minpwr;
18736                                 write_phy_reg(pi, 0x283, regval);
18737
18738                                 pi->nphy_crsminpwr_adjusted = true;
18739                         }
18740                 } else {
18741                         if (pi->nphy_crsminpwr_adjusted) {
18742                                 regval = read_phy_reg(pi, 0x27d);
18743                                 regval &= 0xff00;
18744                                 regval |= pi->nphy_crsminpwr[0];
18745                                 write_phy_reg(pi, 0x27d, regval);
18746
18747                                 regval = read_phy_reg(pi, 0x280);
18748                                 regval &= 0xff00;
18749                                 regval |= pi->nphy_crsminpwr[1];
18750                                 write_phy_reg(pi, 0x280, regval);
18751
18752                                 regval = read_phy_reg(pi, 0x283);
18753                                 regval &= 0xff00;
18754                                 regval |= pi->nphy_crsminpwr[2];
18755                                 write_phy_reg(pi, 0x283, regval);
18756
18757                                 pi->nphy_crsminpwr_adjusted = false;
18758                         }
18759                 }
18760         }
18761 }
18762
18763 static void wlc_phy_txlpfbw_nphy(phy_info_t *pi)
18764 {
18765         u8 tx_lpf_bw = 0;
18766
18767         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18768                 if (CHSPEC_IS40(pi->radio_chanspec)) {
18769                         tx_lpf_bw = 3;
18770                 } else {
18771                         tx_lpf_bw = 1;
18772                 }
18773
18774                 if (PHY_IPA(pi)) {
18775                         if (CHSPEC_IS40(pi->radio_chanspec)) {
18776                                 tx_lpf_bw = 5;
18777                         } else {
18778                                 tx_lpf_bw = 4;
18779                         }
18780                 }
18781                 write_phy_reg(pi, 0xe8,
18782                               (tx_lpf_bw << 0) |
18783                               (tx_lpf_bw << 3) |
18784                               (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18785
18786                 if (PHY_IPA(pi)) {
18787
18788                         if (CHSPEC_IS40(pi->radio_chanspec)) {
18789                                 tx_lpf_bw = 4;
18790                         } else {
18791                                 tx_lpf_bw = 1;
18792                         }
18793
18794                         write_phy_reg(pi, 0xe9,
18795                                       (tx_lpf_bw << 0) |
18796                                       (tx_lpf_bw << 3) |
18797                                       (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18798                 }
18799         }
18800 }
18801
18802 static void wlc_phy_spurwar_nphy(phy_info_t *pi)
18803 {
18804         u16 cur_channel = 0;
18805         int nphy_adj_tone_id_buf[] = { 57, 58 };
18806         u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
18807         bool isAdjustNoiseVar = false;
18808         uint numTonesAdjust = 0;
18809         u32 tempval = 0;
18810
18811         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18812                 if (pi->phyhang_avoid)
18813                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
18814
18815                 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
18816
18817                 if (pi->nphy_gband_spurwar_en) {
18818
18819                         wlc_phy_adjust_rx_analpfbw_nphy(pi,
18820                                                         NPHY_ANARXLPFBW_REDUCTIONFACT);
18821
18822                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18823                                 if ((cur_channel == 11)
18824                                     && CHSPEC_IS40(pi->radio_chanspec)) {
18825
18826                                         wlc_phy_adjust_min_noisevar_nphy(pi, 2,
18827                                                                          nphy_adj_tone_id_buf,
18828                                                                          nphy_adj_noise_var_buf);
18829                                 } else {
18830
18831                                         wlc_phy_adjust_min_noisevar_nphy(pi, 0,
18832                                                                          NULL,
18833                                                                          NULL);
18834                                 }
18835                         }
18836                         wlc_phy_adjust_crsminpwr_nphy(pi,
18837                                                       NPHY_ADJUSTED_MINCRSPOWER);
18838                 }
18839
18840                 if ((pi->nphy_gband_spurwar2_en)
18841                     && CHSPEC_IS2G(pi->radio_chanspec)) {
18842
18843                         if (CHSPEC_IS40(pi->radio_chanspec)) {
18844                                 switch (cur_channel) {
18845                                 case 3:
18846                                         nphy_adj_tone_id_buf[0] = 57;
18847                                         nphy_adj_tone_id_buf[1] = 58;
18848                                         nphy_adj_noise_var_buf[0] = 0x22f;
18849                                         nphy_adj_noise_var_buf[1] = 0x25f;
18850                                         isAdjustNoiseVar = true;
18851                                         break;
18852                                 case 4:
18853                                         nphy_adj_tone_id_buf[0] = 41;
18854                                         nphy_adj_tone_id_buf[1] = 42;
18855                                         nphy_adj_noise_var_buf[0] = 0x22f;
18856                                         nphy_adj_noise_var_buf[1] = 0x25f;
18857                                         isAdjustNoiseVar = true;
18858                                         break;
18859                                 case 5:
18860                                         nphy_adj_tone_id_buf[0] = 25;
18861                                         nphy_adj_tone_id_buf[1] = 26;
18862                                         nphy_adj_noise_var_buf[0] = 0x24f;
18863                                         nphy_adj_noise_var_buf[1] = 0x25f;
18864                                         isAdjustNoiseVar = true;
18865                                         break;
18866                                 case 6:
18867                                         nphy_adj_tone_id_buf[0] = 9;
18868                                         nphy_adj_tone_id_buf[1] = 10;
18869                                         nphy_adj_noise_var_buf[0] = 0x22f;
18870                                         nphy_adj_noise_var_buf[1] = 0x24f;
18871                                         isAdjustNoiseVar = true;
18872                                         break;
18873                                 case 7:
18874                                         nphy_adj_tone_id_buf[0] = 121;
18875                                         nphy_adj_tone_id_buf[1] = 122;
18876                                         nphy_adj_noise_var_buf[0] = 0x18f;
18877                                         nphy_adj_noise_var_buf[1] = 0x24f;
18878                                         isAdjustNoiseVar = true;
18879                                         break;
18880                                 case 8:
18881                                         nphy_adj_tone_id_buf[0] = 105;
18882                                         nphy_adj_tone_id_buf[1] = 106;
18883                                         nphy_adj_noise_var_buf[0] = 0x22f;
18884                                         nphy_adj_noise_var_buf[1] = 0x25f;
18885                                         isAdjustNoiseVar = true;
18886                                         break;
18887                                 case 9:
18888                                         nphy_adj_tone_id_buf[0] = 89;
18889                                         nphy_adj_tone_id_buf[1] = 90;
18890                                         nphy_adj_noise_var_buf[0] = 0x22f;
18891                                         nphy_adj_noise_var_buf[1] = 0x24f;
18892                                         isAdjustNoiseVar = true;
18893                                         break;
18894                                 case 10:
18895                                         nphy_adj_tone_id_buf[0] = 73;
18896                                         nphy_adj_tone_id_buf[1] = 74;
18897                                         nphy_adj_noise_var_buf[0] = 0x22f;
18898                                         nphy_adj_noise_var_buf[1] = 0x24f;
18899                                         isAdjustNoiseVar = true;
18900                                         break;
18901                                 default:
18902                                         isAdjustNoiseVar = false;
18903                                         break;
18904                                 }
18905                         }
18906
18907                         if (isAdjustNoiseVar) {
18908                                 numTonesAdjust = sizeof(nphy_adj_tone_id_buf) /
18909                                     sizeof(nphy_adj_tone_id_buf[0]);
18910
18911                                 wlc_phy_adjust_min_noisevar_nphy(pi,
18912                                                                  numTonesAdjust,
18913                                                                  nphy_adj_tone_id_buf,
18914                                                                  nphy_adj_noise_var_buf);
18915
18916                                 tempval = 0;
18917
18918                         } else {
18919
18920                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
18921                                                                  NULL);
18922                         }
18923                 }
18924
18925                 if ((pi->nphy_aband_spurwar_en) &&
18926                     (CHSPEC_IS5G(pi->radio_chanspec))) {
18927                         switch (cur_channel) {
18928                         case 54:
18929                                 nphy_adj_tone_id_buf[0] = 32;
18930                                 nphy_adj_noise_var_buf[0] = 0x25f;
18931                                 break;
18932                         case 38:
18933                         case 102:
18934                         case 118:
18935                                 if ((pi->sh->chip == BCM4716_CHIP_ID) &&
18936                                     (pi->sh->chippkg == BCM4717_PKG_ID)) {
18937                                         nphy_adj_tone_id_buf[0] = 32;
18938                                         nphy_adj_noise_var_buf[0] = 0x21f;
18939                                 } else {
18940                                         nphy_adj_tone_id_buf[0] = 0;
18941                                         nphy_adj_noise_var_buf[0] = 0x0;
18942                                 }
18943                                 break;
18944                         case 134:
18945                                 nphy_adj_tone_id_buf[0] = 32;
18946                                 nphy_adj_noise_var_buf[0] = 0x21f;
18947                                 break;
18948                         case 151:
18949                                 nphy_adj_tone_id_buf[0] = 16;
18950                                 nphy_adj_noise_var_buf[0] = 0x23f;
18951                                 break;
18952                         case 153:
18953                         case 161:
18954                                 nphy_adj_tone_id_buf[0] = 48;
18955                                 nphy_adj_noise_var_buf[0] = 0x23f;
18956                                 break;
18957                         default:
18958                                 nphy_adj_tone_id_buf[0] = 0;
18959                                 nphy_adj_noise_var_buf[0] = 0x0;
18960                                 break;
18961                         }
18962
18963                         if (nphy_adj_tone_id_buf[0]
18964                             && nphy_adj_noise_var_buf[0]) {
18965                                 wlc_phy_adjust_min_noisevar_nphy(pi, 1,
18966                                                                  nphy_adj_tone_id_buf,
18967                                                                  nphy_adj_noise_var_buf);
18968                         } else {
18969                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
18970                                                                  NULL);
18971                         }
18972                 }
18973
18974                 if (pi->phyhang_avoid)
18975                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
18976         }
18977 }
18978
18979 static void
18980 wlc_phy_chanspec_nphy_setup(phy_info_t *pi, chanspec_t chanspec,
18981                             const nphy_sfo_cfg_t *ci)
18982 {
18983         u16 val;
18984
18985         val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
18986         if (CHSPEC_IS5G(chanspec) && !val) {
18987
18988                 val = R_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param);
18989                 W_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param,
18990                       (val | MAC_PHY_FORCE_CLK));
18991
18992                 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
18993                            (BBCFG_RESETCCA | BBCFG_RESETRX));
18994
18995                 W_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param, val);
18996
18997                 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
18998         } else if (!CHSPEC_IS5G(chanspec) && val) {
18999
19000                 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
19001
19002                 val = R_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param);
19003                 W_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param,
19004                       (val | MAC_PHY_FORCE_CLK));
19005
19006                 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
19007                             (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
19008
19009                 W_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param, val);
19010         }
19011
19012         write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
19013         write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
19014         write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
19015
19016         write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
19017         write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
19018         write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
19019
19020         if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
19021                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
19022
19023                 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
19024         } else {
19025                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
19026                                         NPHY_ClassifierCtrl_ofdm_en);
19027
19028                 if (CHSPEC_IS2G(chanspec))
19029                         and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
19030         }
19031
19032         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
19033                 wlc_phy_txpwr_fixpower_nphy(pi);
19034         }
19035
19036         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
19037
19038                 wlc_phy_adjust_lnagaintbl_nphy(pi);
19039         }
19040
19041         wlc_phy_txlpfbw_nphy(pi);
19042
19043         if (NREV_GE(pi->pubpi.phy_rev, 3)
19044             && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
19045                 u8 spuravoid = 0;
19046
19047                 val = CHSPEC_CHANNEL(chanspec);
19048                 if (!CHSPEC_IS40(pi->radio_chanspec)) {
19049                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19050                                 if ((val == 13) || (val == 14) || (val == 153)) {
19051                                         spuravoid = 1;
19052                                 }
19053                         } else {
19054
19055                                 if (((val >= 5) && (val <= 8)) || (val == 13)
19056                                     || (val == 14)) {
19057                                         spuravoid = 1;
19058                                 }
19059                         }
19060                 } else {
19061                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19062                                 if (val == 54) {
19063                                         spuravoid = 1;
19064                                 }
19065                         } else {
19066
19067                                 if (pi->nphy_aband_spurwar_en &&
19068                                     ((val == 38) || (val == 102)
19069                                      || (val == 118))) {
19070                                         if ((pi->sh->chip ==
19071                                              BCM4716_CHIP_ID)
19072                                             && (pi->sh->chippkg ==
19073                                                 BCM4717_PKG_ID)) {
19074                                                 spuravoid = 0;
19075                                         } else {
19076                                                 spuravoid = 1;
19077                                         }
19078                                 }
19079                         }
19080                 }
19081
19082                 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
19083                         spuravoid = 1;
19084
19085                 if ((pi->sh->chip == BCM4716_CHIP_ID) ||
19086                     (pi->sh->chip == BCM47162_CHIP_ID)) {
19087                         si_pmu_spuravoid(pi->sh->sih, pi->sh->osh, spuravoid);
19088                 } else {
19089                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
19090                         si_pmu_spuravoid(pi->sh->sih, pi->sh->osh, spuravoid);
19091                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
19092                 }
19093
19094                 if ((pi->sh->chip == BCM43224_CHIP_ID) ||
19095                     (pi->sh->chip == BCM43225_CHIP_ID) ||
19096                     (pi->sh->chip == BCM43421_CHIP_ID)) {
19097
19098                         if (spuravoid == 1) {
19099
19100                                 W_REG(pi->sh->osh, &pi->regs->tsf_clk_frac_l,
19101                                       0x5341);
19102                                 W_REG(pi->sh->osh, &pi->regs->tsf_clk_frac_h,
19103                                       0x8);
19104                         } else {
19105
19106                                 W_REG(pi->sh->osh, &pi->regs->tsf_clk_frac_l,
19107                                       0x8889);
19108                                 W_REG(pi->sh->osh, &pi->regs->tsf_clk_frac_h,
19109                                       0x8);
19110                         }
19111                 }
19112
19113                 if (!((pi->sh->chip == BCM4716_CHIP_ID) ||
19114                       (pi->sh->chip == BCM47162_CHIP_ID))) {
19115                         wlapi_bmac_core_phypll_reset(pi->sh->physhim);
19116                 }
19117
19118                 mod_phy_reg(pi, 0x01, (0x1 << 15),
19119                             ((spuravoid > 0) ? (0x1 << 15) : 0));
19120
19121                 wlc_phy_resetcca_nphy(pi);
19122
19123                 pi->phy_isspuravoid = (spuravoid > 0);
19124         }
19125
19126         if (NREV_LT(pi->pubpi.phy_rev, 7))
19127                 write_phy_reg(pi, 0x17e, 0x3830);
19128
19129         wlc_phy_spurwar_nphy(pi);
19130 }
19131
19132 void wlc_phy_chanspec_set_nphy(phy_info_t *pi, chanspec_t chanspec)
19133 {
19134         int freq;
19135         chan_info_nphy_radio2057_t *t0 = NULL;
19136         chan_info_nphy_radio205x_t *t1 = NULL;
19137         chan_info_nphy_radio2057_rev5_t *t2 = NULL;
19138         chan_info_nphy_2055_t *t3 = NULL;
19139
19140         if (NORADIO_ENAB(pi->pubpi)) {
19141                 return;
19142         }
19143
19144         if (!wlc_phy_chan2freq_nphy
19145             (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
19146                 return;
19147
19148         wlc_phy_chanspec_radio_set((wlc_phy_t *) pi, chanspec);
19149
19150         if (CHSPEC_BW(chanspec) != pi->bw)
19151                 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
19152
19153         if (CHSPEC_IS40(chanspec)) {
19154                 if (CHSPEC_SB_UPPER(chanspec)) {
19155                         or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
19156                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19157                                 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
19158                         }
19159                 } else {
19160                         and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
19161                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19162                                 and_phy_reg(pi, 0x310,
19163                                             (~PRIM_SEL_UP20 & 0xffff));
19164                         }
19165                 }
19166         }
19167
19168         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19169                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19170
19171                         if ((pi->pubpi.radiorev <= 4)
19172                             || (pi->pubpi.radiorev == 6)) {
19173                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
19174                                               0x2,
19175                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
19176                                                : 0));
19177                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
19178                                               0x2,
19179                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
19180                                                : 0));
19181                         }
19182
19183                         wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
19184                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
19185                                                     (pi->pubpi.radiorev ==
19186                                                      5) ? (const nphy_sfo_cfg_t
19187                                                            *)&(t2->
19188                                                                PHY_BW1a)
19189                                                     : (const nphy_sfo_cfg_t *)
19190                                                     &(t0->PHY_BW1a));
19191
19192                 } else {
19193
19194                         mod_radio_reg(pi,
19195                                       RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
19196                                       0x4,
19197                                       (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
19198                         wlc_phy_chanspec_radio2056_setup(pi, t1);
19199
19200                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
19201                                                     (const nphy_sfo_cfg_t *)
19202                                                     &(t1->PHY_BW1a));
19203                 }
19204
19205         } else {
19206
19207                 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
19208                               (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
19209                                : (0x05 << 4)));
19210
19211                 wlc_phy_chanspec_radio2055_setup(pi, t3);
19212                 wlc_phy_chanspec_nphy_setup(pi, chanspec,
19213                                             (const nphy_sfo_cfg_t *)&(t3->
19214                                                                       PHY_BW1a));
19215         }
19216
19217 }
19218
19219 static void wlc_phy_savecal_nphy(phy_info_t *pi)
19220 {
19221         void *tbl_ptr;
19222         int coreNum;
19223         u16 *txcal_radio_regs = NULL;
19224
19225         if (pi->phyhang_avoid)
19226                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19227
19228         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19229
19230                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
19231                                           &pi->calibration_cache.
19232                                           rxcal_coeffs_2G);
19233
19234                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19235                         txcal_radio_regs =
19236                             pi->calibration_cache.txcal_radio_regs_2G;
19237                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19238
19239                         pi->calibration_cache.txcal_radio_regs_2G[0] =
19240                             read_radio_reg(pi,
19241                                            RADIO_2056_TX_LOFT_FINE_I |
19242                                            RADIO_2056_TX0);
19243                         pi->calibration_cache.txcal_radio_regs_2G[1] =
19244                             read_radio_reg(pi,
19245                                            RADIO_2056_TX_LOFT_FINE_Q |
19246                                            RADIO_2056_TX0);
19247                         pi->calibration_cache.txcal_radio_regs_2G[2] =
19248                             read_radio_reg(pi,
19249                                            RADIO_2056_TX_LOFT_FINE_I |
19250                                            RADIO_2056_TX1);
19251                         pi->calibration_cache.txcal_radio_regs_2G[3] =
19252                             read_radio_reg(pi,
19253                                            RADIO_2056_TX_LOFT_FINE_Q |
19254                                            RADIO_2056_TX1);
19255
19256                         pi->calibration_cache.txcal_radio_regs_2G[4] =
19257                             read_radio_reg(pi,
19258                                            RADIO_2056_TX_LOFT_COARSE_I |
19259                                            RADIO_2056_TX0);
19260                         pi->calibration_cache.txcal_radio_regs_2G[5] =
19261                             read_radio_reg(pi,
19262                                            RADIO_2056_TX_LOFT_COARSE_Q |
19263                                            RADIO_2056_TX0);
19264                         pi->calibration_cache.txcal_radio_regs_2G[6] =
19265                             read_radio_reg(pi,
19266                                            RADIO_2056_TX_LOFT_COARSE_I |
19267                                            RADIO_2056_TX1);
19268                         pi->calibration_cache.txcal_radio_regs_2G[7] =
19269                             read_radio_reg(pi,
19270                                            RADIO_2056_TX_LOFT_COARSE_Q |
19271                                            RADIO_2056_TX1);
19272                 } else {
19273                         pi->calibration_cache.txcal_radio_regs_2G[0] =
19274                             read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
19275                         pi->calibration_cache.txcal_radio_regs_2G[1] =
19276                             read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
19277                         pi->calibration_cache.txcal_radio_regs_2G[2] =
19278                             read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
19279                         pi->calibration_cache.txcal_radio_regs_2G[3] =
19280                             read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
19281                 }
19282
19283                 pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
19284                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
19285         } else {
19286
19287                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
19288                                           &pi->calibration_cache.
19289                                           rxcal_coeffs_5G);
19290
19291                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19292                         txcal_radio_regs =
19293                             pi->calibration_cache.txcal_radio_regs_5G;
19294                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19295
19296                         pi->calibration_cache.txcal_radio_regs_5G[0] =
19297                             read_radio_reg(pi,
19298                                            RADIO_2056_TX_LOFT_FINE_I |
19299                                            RADIO_2056_TX0);
19300                         pi->calibration_cache.txcal_radio_regs_5G[1] =
19301                             read_radio_reg(pi,
19302                                            RADIO_2056_TX_LOFT_FINE_Q |
19303                                            RADIO_2056_TX0);
19304                         pi->calibration_cache.txcal_radio_regs_5G[2] =
19305                             read_radio_reg(pi,
19306                                            RADIO_2056_TX_LOFT_FINE_I |
19307                                            RADIO_2056_TX1);
19308                         pi->calibration_cache.txcal_radio_regs_5G[3] =
19309                             read_radio_reg(pi,
19310                                            RADIO_2056_TX_LOFT_FINE_Q |
19311                                            RADIO_2056_TX1);
19312
19313                         pi->calibration_cache.txcal_radio_regs_5G[4] =
19314                             read_radio_reg(pi,
19315                                            RADIO_2056_TX_LOFT_COARSE_I |
19316                                            RADIO_2056_TX0);
19317                         pi->calibration_cache.txcal_radio_regs_5G[5] =
19318                             read_radio_reg(pi,
19319                                            RADIO_2056_TX_LOFT_COARSE_Q |
19320                                            RADIO_2056_TX0);
19321                         pi->calibration_cache.txcal_radio_regs_5G[6] =
19322                             read_radio_reg(pi,
19323                                            RADIO_2056_TX_LOFT_COARSE_I |
19324                                            RADIO_2056_TX1);
19325                         pi->calibration_cache.txcal_radio_regs_5G[7] =
19326                             read_radio_reg(pi,
19327                                            RADIO_2056_TX_LOFT_COARSE_Q |
19328                                            RADIO_2056_TX1);
19329                 } else {
19330                         pi->calibration_cache.txcal_radio_regs_5G[0] =
19331                             read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
19332                         pi->calibration_cache.txcal_radio_regs_5G[1] =
19333                             read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
19334                         pi->calibration_cache.txcal_radio_regs_5G[2] =
19335                             read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
19336                         pi->calibration_cache.txcal_radio_regs_5G[3] =
19337                             read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
19338                 }
19339
19340                 pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
19341                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
19342         }
19343         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19344                 for (coreNum = 0; coreNum <= 1; coreNum++) {
19345
19346                         txcal_radio_regs[2 * coreNum] =
19347                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19348                                             LOFT_FINE_I);
19349                         txcal_radio_regs[2 * coreNum + 1] =
19350                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19351                                             LOFT_FINE_Q);
19352
19353                         txcal_radio_regs[2 * coreNum + 4] =
19354                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19355                                             LOFT_COARSE_I);
19356                         txcal_radio_regs[2 * coreNum + 5] =
19357                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19358                                             LOFT_COARSE_Q);
19359                 }
19360         }
19361
19362         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
19363
19364         if (pi->phyhang_avoid)
19365                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19366 }
19367
19368 static void wlc_phy_restorecal_nphy(phy_info_t *pi)
19369 {
19370         u16 *loft_comp;
19371         u16 txcal_coeffs_bphy[4];
19372         u16 *tbl_ptr;
19373         int coreNum;
19374         u16 *txcal_radio_regs = NULL;
19375
19376         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19377                 if (pi->nphy_iqcal_chanspec_2G == 0)
19378                         return;
19379
19380                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
19381                 loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
19382         } else {
19383                 if (pi->nphy_iqcal_chanspec_5G == 0)
19384                         return;
19385
19386                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
19387                 loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
19388         }
19389
19390         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16,
19391                                  (void *)tbl_ptr);
19392
19393         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19394                 txcal_coeffs_bphy[0] = tbl_ptr[0];
19395                 txcal_coeffs_bphy[1] = tbl_ptr[1];
19396                 txcal_coeffs_bphy[2] = tbl_ptr[2];
19397                 txcal_coeffs_bphy[3] = tbl_ptr[3];
19398         } else {
19399                 txcal_coeffs_bphy[0] = 0;
19400                 txcal_coeffs_bphy[1] = 0;
19401                 txcal_coeffs_bphy[2] = 0;
19402                 txcal_coeffs_bphy[3] = 0;
19403         }
19404
19405         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
19406                                  txcal_coeffs_bphy);
19407
19408         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
19409
19410         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
19411
19412         if (NREV_LT(pi->pubpi.phy_rev, 2))
19413                 wlc_phy_tx_iq_war_nphy(pi);
19414
19415         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19416                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19417                         txcal_radio_regs =
19418                             pi->calibration_cache.txcal_radio_regs_2G;
19419                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19420
19421                         write_radio_reg(pi,
19422                                         RADIO_2056_TX_LOFT_FINE_I |
19423                                         RADIO_2056_TX0,
19424                                         pi->calibration_cache.
19425                                         txcal_radio_regs_2G[0]);
19426                         write_radio_reg(pi,
19427                                         RADIO_2056_TX_LOFT_FINE_Q |
19428                                         RADIO_2056_TX0,
19429                                         pi->calibration_cache.
19430                                         txcal_radio_regs_2G[1]);
19431                         write_radio_reg(pi,
19432                                         RADIO_2056_TX_LOFT_FINE_I |
19433                                         RADIO_2056_TX1,
19434                                         pi->calibration_cache.
19435                                         txcal_radio_regs_2G[2]);
19436                         write_radio_reg(pi,
19437                                         RADIO_2056_TX_LOFT_FINE_Q |
19438                                         RADIO_2056_TX1,
19439                                         pi->calibration_cache.
19440                                         txcal_radio_regs_2G[3]);
19441
19442                         write_radio_reg(pi,
19443                                         RADIO_2056_TX_LOFT_COARSE_I |
19444                                         RADIO_2056_TX0,
19445                                         pi->calibration_cache.
19446                                         txcal_radio_regs_2G[4]);
19447                         write_radio_reg(pi,
19448                                         RADIO_2056_TX_LOFT_COARSE_Q |
19449                                         RADIO_2056_TX0,
19450                                         pi->calibration_cache.
19451                                         txcal_radio_regs_2G[5]);
19452                         write_radio_reg(pi,
19453                                         RADIO_2056_TX_LOFT_COARSE_I |
19454                                         RADIO_2056_TX1,
19455                                         pi->calibration_cache.
19456                                         txcal_radio_regs_2G[6]);
19457                         write_radio_reg(pi,
19458                                         RADIO_2056_TX_LOFT_COARSE_Q |
19459                                         RADIO_2056_TX1,
19460                                         pi->calibration_cache.
19461                                         txcal_radio_regs_2G[7]);
19462                 } else {
19463                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
19464                                         pi->calibration_cache.
19465                                         txcal_radio_regs_2G[0]);
19466                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
19467                                         pi->calibration_cache.
19468                                         txcal_radio_regs_2G[1]);
19469                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
19470                                         pi->calibration_cache.
19471                                         txcal_radio_regs_2G[2]);
19472                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
19473                                         pi->calibration_cache.
19474                                         txcal_radio_regs_2G[3]);
19475                 }
19476
19477                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
19478                                           &pi->calibration_cache.
19479                                           rxcal_coeffs_2G);
19480         } else {
19481                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19482                         txcal_radio_regs =
19483                             pi->calibration_cache.txcal_radio_regs_5G;
19484                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19485
19486                         write_radio_reg(pi,
19487                                         RADIO_2056_TX_LOFT_FINE_I |
19488                                         RADIO_2056_TX0,
19489                                         pi->calibration_cache.
19490                                         txcal_radio_regs_5G[0]);
19491                         write_radio_reg(pi,
19492                                         RADIO_2056_TX_LOFT_FINE_Q |
19493                                         RADIO_2056_TX0,
19494                                         pi->calibration_cache.
19495                                         txcal_radio_regs_5G[1]);
19496                         write_radio_reg(pi,
19497                                         RADIO_2056_TX_LOFT_FINE_I |
19498                                         RADIO_2056_TX1,
19499                                         pi->calibration_cache.
19500                                         txcal_radio_regs_5G[2]);
19501                         write_radio_reg(pi,
19502                                         RADIO_2056_TX_LOFT_FINE_Q |
19503                                         RADIO_2056_TX1,
19504                                         pi->calibration_cache.
19505                                         txcal_radio_regs_5G[3]);
19506
19507                         write_radio_reg(pi,
19508                                         RADIO_2056_TX_LOFT_COARSE_I |
19509                                         RADIO_2056_TX0,
19510                                         pi->calibration_cache.
19511                                         txcal_radio_regs_5G[4]);
19512                         write_radio_reg(pi,
19513                                         RADIO_2056_TX_LOFT_COARSE_Q |
19514                                         RADIO_2056_TX0,
19515                                         pi->calibration_cache.
19516                                         txcal_radio_regs_5G[5]);
19517                         write_radio_reg(pi,
19518                                         RADIO_2056_TX_LOFT_COARSE_I |
19519                                         RADIO_2056_TX1,
19520                                         pi->calibration_cache.
19521                                         txcal_radio_regs_5G[6]);
19522                         write_radio_reg(pi,
19523                                         RADIO_2056_TX_LOFT_COARSE_Q |
19524                                         RADIO_2056_TX1,
19525                                         pi->calibration_cache.
19526                                         txcal_radio_regs_5G[7]);
19527                 } else {
19528                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
19529                                         pi->calibration_cache.
19530                                         txcal_radio_regs_5G[0]);
19531                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
19532                                         pi->calibration_cache.
19533                                         txcal_radio_regs_5G[1]);
19534                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
19535                                         pi->calibration_cache.
19536                                         txcal_radio_regs_5G[2]);
19537                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
19538                                         pi->calibration_cache.
19539                                         txcal_radio_regs_5G[3]);
19540                 }
19541
19542                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
19543                                           &pi->calibration_cache.
19544                                           rxcal_coeffs_5G);
19545         }
19546
19547         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19548                 for (coreNum = 0; coreNum <= 1; coreNum++) {
19549
19550                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19551                                          LOFT_FINE_I,
19552                                          txcal_radio_regs[2 * coreNum]);
19553                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19554                                          LOFT_FINE_Q,
19555                                          txcal_radio_regs[2 * coreNum + 1]);
19556
19557                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19558                                          LOFT_COARSE_I,
19559                                          txcal_radio_regs[2 * coreNum + 4]);
19560                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19561                                          LOFT_COARSE_Q,
19562                                          txcal_radio_regs[2 * coreNum + 5]);
19563                 }
19564         }
19565 }
19566
19567 void wlc_phy_antsel_init(wlc_phy_t *ppi, bool lut_init)
19568 {
19569         phy_info_t *pi = (phy_info_t *) ppi;
19570         u16 mask = 0xfc00;
19571         u32 mc = 0;
19572
19573         if (NREV_GE(pi->pubpi.phy_rev, 7))
19574                 return;
19575
19576         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19577                 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
19578
19579                 if (lut_init == false)
19580                         return;
19581
19582                 if (pi->srom_fem2g.antswctrllut == 0) {
19583                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19584                                                  1, 0x02, 16, &v0);
19585                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19586                                                  1, 0x03, 16, &v1);
19587                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19588                                                  1, 0x08, 16, &v2);
19589                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19590                                                  1, 0x0C, 16, &v3);
19591                 } else {
19592                         ASSERT(0);
19593                 }
19594
19595                 if (pi->srom_fem5g.antswctrllut == 0) {
19596                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19597                                                  1, 0x12, 16, &v0);
19598                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19599                                                  1, 0x13, 16, &v1);
19600                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19601                                                  1, 0x18, 16, &v2);
19602                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19603                                                  1, 0x1C, 16, &v3);
19604                 } else {
19605                         ASSERT(0);
19606                 }
19607         } else {
19608
19609                 write_phy_reg(pi, 0xc8, 0x0);
19610                 write_phy_reg(pi, 0xc9, 0x0);
19611
19612                 si_gpiocontrol(pi->sh->sih, mask, mask, GPIO_DRV_PRIORITY);
19613
19614                 mc = R_REG(pi->sh->osh, &pi->regs->maccontrol);
19615                 mc &= ~MCTL_GPOUT_SEL_MASK;
19616                 W_REG(pi->sh->osh, &pi->regs->maccontrol, mc);
19617
19618                 OR_REG(pi->sh->osh, &pi->regs->psm_gpio_oe, mask);
19619
19620                 AND_REG(pi->sh->osh, &pi->regs->psm_gpio_out, ~mask);
19621
19622                 if (lut_init) {
19623                         write_phy_reg(pi, 0xf8, 0x02d8);
19624                         write_phy_reg(pi, 0xf9, 0x0301);
19625                         write_phy_reg(pi, 0xfa, 0x02d8);
19626                         write_phy_reg(pi, 0xfb, 0x0301);
19627                 }
19628         }
19629 }
19630
19631 u16 wlc_phy_classifier_nphy(phy_info_t *pi, u16 mask, u16 val)
19632 {
19633         u16 curr_ctl, new_ctl;
19634         bool suspended = false;
19635
19636         if (D11REV_IS(pi->sh->corerev, 16)) {
19637                 suspended =
19638                     (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC) ?
19639                     false : true;
19640                 if (!suspended)
19641                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
19642         }
19643
19644         curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
19645
19646         new_ctl = (curr_ctl & (~mask)) | (val & mask);
19647
19648         mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
19649
19650         if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
19651                 wlapi_enable_mac(pi->sh->physhim);
19652
19653         return new_ctl;
19654 }
19655
19656 static void wlc_phy_clip_det_nphy(phy_info_t *pi, u8 write, u16 *vals)
19657 {
19658
19659         if (write == 0) {
19660                 vals[0] = read_phy_reg(pi, 0x2c);
19661                 vals[1] = read_phy_reg(pi, 0x42);
19662         } else {
19663                 write_phy_reg(pi, 0x2c, vals[0]);
19664                 write_phy_reg(pi, 0x42, vals[1]);
19665         }
19666 }
19667
19668 void wlc_phy_force_rfseq_nphy(phy_info_t *pi, u8 cmd)
19669 {
19670         u16 trigger_mask, status_mask;
19671         u16 orig_RfseqCoreActv;
19672
19673         switch (cmd) {
19674         case NPHY_RFSEQ_RX2TX:
19675                 trigger_mask = NPHY_RfseqTrigger_rx2tx;
19676                 status_mask = NPHY_RfseqStatus_rx2tx;
19677                 break;
19678         case NPHY_RFSEQ_TX2RX:
19679                 trigger_mask = NPHY_RfseqTrigger_tx2rx;
19680                 status_mask = NPHY_RfseqStatus_tx2rx;
19681                 break;
19682         case NPHY_RFSEQ_RESET2RX:
19683                 trigger_mask = NPHY_RfseqTrigger_reset2rx;
19684                 status_mask = NPHY_RfseqStatus_reset2rx;
19685                 break;
19686         case NPHY_RFSEQ_UPDATEGAINH:
19687                 trigger_mask = NPHY_RfseqTrigger_updategainh;
19688                 status_mask = NPHY_RfseqStatus_updategainh;
19689                 break;
19690         case NPHY_RFSEQ_UPDATEGAINL:
19691                 trigger_mask = NPHY_RfseqTrigger_updategainl;
19692                 status_mask = NPHY_RfseqStatus_updategainl;
19693                 break;
19694         case NPHY_RFSEQ_UPDATEGAINU:
19695                 trigger_mask = NPHY_RfseqTrigger_updategainu;
19696                 status_mask = NPHY_RfseqStatus_updategainu;
19697                 break;
19698         default:
19699                 return;
19700         }
19701
19702         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
19703         or_phy_reg(pi, 0xa1,
19704                    (NPHY_RfseqMode_CoreActv_override |
19705                     NPHY_RfseqMode_Trigger_override));
19706         or_phy_reg(pi, 0xa3, trigger_mask);
19707         SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
19708         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
19709
19710         ASSERT((read_phy_reg(pi, 0xa4) & status_mask) == 0);
19711 }
19712
19713 static void
19714 wlc_phy_set_rfseq_nphy(phy_info_t *pi, u8 cmd, u8 *events, u8 *dlys,
19715                        u8 len)
19716 {
19717         u32 t1_offset, t2_offset;
19718         u8 ctr;
19719         u8 end_event =
19720             NREV_GE(pi->pubpi.phy_rev,
19721                     3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
19722         u8 end_dly = 1;
19723
19724         ASSERT(len <= 16);
19725
19726         if (pi->phyhang_avoid)
19727                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19728
19729         t1_offset = cmd << 4;
19730         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
19731                                  events);
19732         t2_offset = t1_offset + 0x080;
19733         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
19734                                  dlys);
19735
19736         for (ctr = len; ctr < 16; ctr++) {
19737                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
19738                                          t1_offset + ctr, 8, &end_event);
19739                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
19740                                          t2_offset + ctr, 8, &end_dly);
19741         }
19742
19743         if (pi->phyhang_avoid)
19744                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19745 }
19746
19747 static u16 wlc_phy_read_lpf_bw_ctl_nphy(phy_info_t *pi, u16 offset)
19748 {
19749         u16 lpf_bw_ctl_val = 0;
19750         u16 rx2tx_lpf_rc_lut_offset = 0;
19751
19752         if (offset == 0) {
19753                 if (CHSPEC_IS40(pi->radio_chanspec)) {
19754                         rx2tx_lpf_rc_lut_offset = 0x159;
19755                 } else {
19756                         rx2tx_lpf_rc_lut_offset = 0x154;
19757                 }
19758         } else {
19759                 rx2tx_lpf_rc_lut_offset = offset;
19760         }
19761         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
19762                                 (u32) rx2tx_lpf_rc_lut_offset, 16,
19763                                 &lpf_bw_ctl_val);
19764
19765         lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
19766
19767         return lpf_bw_ctl_val;
19768 }
19769
19770 static void
19771 wlc_phy_rfctrl_override_nphy_rev7(phy_info_t *pi, u16 field, u16 value,
19772                                   u8 core_mask, u8 off, u8 override_id)
19773 {
19774         u8 core_num;
19775         u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
19776         u8 val_shift = 0;
19777
19778         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19779                 en_mask = field;
19780                 for (core_num = 0; core_num < 2; core_num++) {
19781                         if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
19782
19783                                 switch (field) {
19784                                 case (0x1 << 2):
19785                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19786                                         val_addr = (core_num == 0) ? 0x7a :
19787                                             0x7d;
19788                                         val_mask = (0x1 << 1);
19789                                         val_shift = 1;
19790                                         break;
19791                                 case (0x1 << 3):
19792                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19793                                         val_addr = (core_num == 0) ? 0x7a :
19794                                             0x7d;
19795                                         val_mask = (0x1 << 2);
19796                                         val_shift = 2;
19797                                         break;
19798                                 case (0x1 << 4):
19799                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19800                                         val_addr = (core_num == 0) ? 0x7a :
19801                                             0x7d;
19802                                         val_mask = (0x1 << 4);
19803                                         val_shift = 4;
19804                                         break;
19805                                 case (0x1 << 5):
19806                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19807                                         val_addr = (core_num == 0) ? 0x7a :
19808                                             0x7d;
19809                                         val_mask = (0x1 << 5);
19810                                         val_shift = 5;
19811                                         break;
19812                                 case (0x1 << 6):
19813                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19814                                         val_addr = (core_num == 0) ? 0x7a :
19815                                             0x7d;
19816                                         val_mask = (0x1 << 6);
19817                                         val_shift = 6;
19818                                         break;
19819                                 case (0x1 << 7):
19820                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19821                                         val_addr = (core_num == 0) ? 0x7a :
19822                                             0x7d;
19823                                         val_mask = (0x1 << 7);
19824                                         val_shift = 7;
19825                                         break;
19826                                 case (0x1 << 10):
19827                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19828                                         val_addr = (core_num == 0) ? 0xf8 :
19829                                             0xfa;
19830                                         val_mask = (0x7 << 4);
19831                                         val_shift = 4;
19832                                         break;
19833                                 case (0x1 << 11):
19834                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19835                                         val_addr = (core_num == 0) ? 0x7b :
19836                                             0x7e;
19837                                         val_mask = (0xffff << 0);
19838                                         val_shift = 0;
19839                                         break;
19840                                 case (0x1 << 12):
19841                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19842                                         val_addr = (core_num == 0) ? 0x7c :
19843                                             0x7f;
19844                                         val_mask = (0xffff << 0);
19845                                         val_shift = 0;
19846                                         break;
19847                                 case (0x3 << 13):
19848                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19849                                         val_addr = (core_num == 0) ? 0x348 :
19850                                             0x349;
19851                                         val_mask = (0xff << 0);
19852                                         val_shift = 0;
19853                                         break;
19854                                 case (0x1 << 13):
19855                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19856                                         val_addr = (core_num == 0) ? 0x348 :
19857                                             0x349;
19858                                         val_mask = (0xf << 0);
19859                                         val_shift = 0;
19860                                         break;
19861                                 default:
19862                                         addr = 0xffff;
19863                                         break;
19864                                 }
19865                         } else if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID1) {
19866
19867                                 switch (field) {
19868                                 case (0x1 << 1):
19869                                         en_addr = (core_num == 0) ? 0x342 :
19870                                             0x343;
19871                                         val_addr = (core_num == 0) ? 0x340 :
19872                                             0x341;
19873                                         val_mask = (0x1 << 1);
19874                                         val_shift = 1;
19875                                         break;
19876                                 case (0x1 << 3):
19877                                         en_addr = (core_num == 0) ? 0x342 :
19878                                             0x343;
19879                                         val_addr = (core_num == 0) ? 0x340 :
19880                                             0x341;
19881                                         val_mask = (0x1 << 3);
19882                                         val_shift = 3;
19883                                         break;
19884                                 case (0x1 << 5):
19885                                         en_addr = (core_num == 0) ? 0x342 :
19886                                             0x343;
19887                                         val_addr = (core_num == 0) ? 0x340 :
19888                                             0x341;
19889                                         val_mask = (0x1 << 5);
19890                                         val_shift = 5;
19891                                         break;
19892                                 case (0x1 << 4):
19893                                         en_addr = (core_num == 0) ? 0x342 :
19894                                             0x343;
19895                                         val_addr = (core_num == 0) ? 0x340 :
19896                                             0x341;
19897                                         val_mask = (0x1 << 4);
19898                                         val_shift = 4;
19899                                         break;
19900                                 case (0x1 << 2):
19901
19902                                         en_addr = (core_num == 0) ? 0x342 :
19903                                             0x343;
19904                                         val_addr = (core_num == 0) ? 0x340 :
19905                                             0x341;
19906                                         val_mask = (0x1 << 2);
19907                                         val_shift = 2;
19908                                         break;
19909                                 case (0x1 << 7):
19910
19911                                         en_addr = (core_num == 0) ? 0x342 :
19912                                             0x343;
19913                                         val_addr = (core_num == 0) ? 0x340 :
19914                                             0x341;
19915                                         val_mask = (0x7 << 8);
19916                                         val_shift = 8;
19917                                         break;
19918                                 case (0x1 << 11):
19919                                         en_addr = (core_num == 0) ? 0x342 :
19920                                             0x343;
19921                                         val_addr = (core_num == 0) ? 0x340 :
19922                                             0x341;
19923                                         val_mask = (0x1 << 14);
19924                                         val_shift = 14;
19925                                         break;
19926                                 case (0x1 << 10):
19927                                         en_addr = (core_num == 0) ? 0x342 :
19928                                             0x343;
19929                                         val_addr = (core_num == 0) ? 0x340 :
19930                                             0x341;
19931                                         val_mask = (0x1 << 13);
19932                                         val_shift = 13;
19933                                         break;
19934                                 case (0x1 << 9):
19935                                         en_addr = (core_num == 0) ? 0x342 :
19936                                             0x343;
19937                                         val_addr = (core_num == 0) ? 0x340 :
19938                                             0x341;
19939                                         val_mask = (0x1 << 12);
19940                                         val_shift = 12;
19941                                         break;
19942                                 case (0x1 << 8):
19943                                         en_addr = (core_num == 0) ? 0x342 :
19944                                             0x343;
19945                                         val_addr = (core_num == 0) ? 0x340 :
19946                                             0x341;
19947                                         val_mask = (0x1 << 11);
19948                                         val_shift = 11;
19949                                         break;
19950                                 case (0x1 << 6):
19951                                         en_addr = (core_num == 0) ? 0x342 :
19952                                             0x343;
19953                                         val_addr = (core_num == 0) ? 0x340 :
19954                                             0x341;
19955                                         val_mask = (0x1 << 6);
19956                                         val_shift = 6;
19957                                         break;
19958                                 case (0x1 << 0):
19959                                         en_addr = (core_num == 0) ? 0x342 :
19960                                             0x343;
19961                                         val_addr = (core_num == 0) ? 0x340 :
19962                                             0x341;
19963                                         val_mask = (0x1 << 0);
19964                                         val_shift = 0;
19965                                         break;
19966                                 default:
19967                                         addr = 0xffff;
19968                                         break;
19969                                 }
19970                         } else if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID2) {
19971
19972                                 switch (field) {
19973                                 case (0x1 << 3):
19974                                         en_addr = (core_num == 0) ? 0x346 :
19975                                             0x347;
19976                                         val_addr = (core_num == 0) ? 0x344 :
19977                                             0x345;
19978                                         val_mask = (0x1 << 3);
19979                                         val_shift = 3;
19980                                         break;
19981                                 case (0x1 << 1):
19982                                         en_addr = (core_num == 0) ? 0x346 :
19983                                             0x347;
19984                                         val_addr = (core_num == 0) ? 0x344 :
19985                                             0x345;
19986                                         val_mask = (0x1 << 1);
19987                                         val_shift = 1;
19988                                         break;
19989                                 case (0x1 << 0):
19990                                         en_addr = (core_num == 0) ? 0x346 :
19991                                             0x347;
19992                                         val_addr = (core_num == 0) ? 0x344 :
19993                                             0x345;
19994                                         val_mask = (0x1 << 0);
19995                                         val_shift = 0;
19996                                         break;
19997                                 case (0x1 << 2):
19998                                         en_addr = (core_num == 0) ? 0x346 :
19999                                             0x347;
20000                                         val_addr = (core_num == 0) ? 0x344 :
20001                                             0x345;
20002                                         val_mask = (0x1 << 2);
20003                                         val_shift = 2;
20004                                         break;
20005                                 case (0x1 << 4):
20006                                         en_addr = (core_num == 0) ? 0x346 :
20007                                             0x347;
20008                                         val_addr = (core_num == 0) ? 0x344 :
20009                                             0x345;
20010                                         val_mask = (0x1 << 4);
20011                                         val_shift = 4;
20012                                         break;
20013                                 default:
20014                                         addr = 0xffff;
20015                                         break;
20016                                 }
20017                         }
20018
20019                         if (off) {
20020                                 and_phy_reg(pi, en_addr, ~en_mask);
20021                                 and_phy_reg(pi, val_addr, ~val_mask);
20022                         } else {
20023
20024                                 if ((core_mask == 0)
20025                                     || (core_mask & (1 << core_num))) {
20026                                         or_phy_reg(pi, en_addr, en_mask);
20027
20028                                         if (addr != 0xffff) {
20029                                                 mod_phy_reg(pi, val_addr,
20030                                                             val_mask,
20031                                                             (value <<
20032                                                              val_shift));
20033                                         }
20034                                 }
20035                         }
20036                 }
20037         }
20038 }
20039
20040 static void
20041 wlc_phy_rfctrl_override_nphy(phy_info_t *pi, u16 field, u16 value,
20042                              u8 core_mask, u8 off)
20043 {
20044         u8 core_num;
20045         u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
20046             0, val_mask = 0;
20047         u8 shift = 0, val_shift = 0;
20048
20049         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
20050
20051                 en_mask = field;
20052                 for (core_num = 0; core_num < 2; core_num++) {
20053
20054                         switch (field) {
20055                         case (0x1 << 1):
20056                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20057                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20058                                 val_mask = (0x1 << 0);
20059                                 val_shift = 0;
20060                                 break;
20061                         case (0x1 << 2):
20062                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20063                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20064                                 val_mask = (0x1 << 1);
20065                                 val_shift = 1;
20066                                 break;
20067                         case (0x1 << 3):
20068                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20069                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20070                                 val_mask = (0x1 << 2);
20071                                 val_shift = 2;
20072                                 break;
20073                         case (0x1 << 4):
20074                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20075                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20076                                 val_mask = (0x1 << 4);
20077                                 val_shift = 4;
20078                                 break;
20079                         case (0x1 << 5):
20080                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20081                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20082                                 val_mask = (0x1 << 5);
20083                                 val_shift = 5;
20084                                 break;
20085                         case (0x1 << 6):
20086                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20087                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20088                                 val_mask = (0x1 << 6);
20089                                 val_shift = 6;
20090                                 break;
20091                         case (0x1 << 7):
20092                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20093                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20094                                 val_mask = (0x1 << 7);
20095                                 val_shift = 7;
20096                                 break;
20097                         case (0x1 << 8):
20098                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20099                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20100                                 val_mask = (0x7 << 8);
20101                                 val_shift = 8;
20102                                 break;
20103                         case (0x1 << 11):
20104                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20105                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20106                                 val_mask = (0x7 << 13);
20107                                 val_shift = 13;
20108                                 break;
20109
20110                         case (0x1 << 9):
20111                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20112                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
20113                                 val_mask = (0x7 << 0);
20114                                 val_shift = 0;
20115                                 break;
20116
20117                         case (0x1 << 10):
20118                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20119                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
20120                                 val_mask = (0x7 << 4);
20121                                 val_shift = 4;
20122                                 break;
20123
20124                         case (0x1 << 12):
20125                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20126                                 val_addr = (core_num == 0) ? 0x7b : 0x7e;
20127                                 val_mask = (0xffff << 0);
20128                                 val_shift = 0;
20129                                 break;
20130                         case (0x1 << 13):
20131                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20132                                 val_addr = (core_num == 0) ? 0x7c : 0x7f;
20133                                 val_mask = (0xffff << 0);
20134                                 val_shift = 0;
20135                                 break;
20136                         case (0x1 << 14):
20137                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20138                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
20139                                 val_mask = (0x3 << 6);
20140                                 val_shift = 6;
20141                                 break;
20142                         case (0x1 << 0):
20143                                 en_addr = (core_num == 0) ? 0xe5 : 0xe6;
20144                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
20145                                 val_mask = (0x1 << 15);
20146                                 val_shift = 15;
20147                                 break;
20148                         default:
20149                                 addr = 0xffff;
20150                                 break;
20151                         }
20152
20153                         if (off) {
20154                                 and_phy_reg(pi, en_addr, ~en_mask);
20155                                 and_phy_reg(pi, val_addr, ~val_mask);
20156                         } else {
20157
20158                                 if ((core_mask == 0)
20159                                     || (core_mask & (1 << core_num))) {
20160                                         or_phy_reg(pi, en_addr, en_mask);
20161
20162                                         if (addr != 0xffff) {
20163                                                 mod_phy_reg(pi, val_addr,
20164                                                             val_mask,
20165                                                             (value <<
20166                                                              val_shift));
20167                                         }
20168                                 }
20169                         }
20170                 }
20171         } else {
20172
20173                 if (off) {
20174                         and_phy_reg(pi, 0xec, ~field);
20175                         value = 0x0;
20176                 } else {
20177                         or_phy_reg(pi, 0xec, field);
20178                 }
20179
20180                 for (core_num = 0; core_num < 2; core_num++) {
20181
20182                         switch (field) {
20183                         case (0x1 << 1):
20184                         case (0x1 << 9):
20185                         case (0x1 << 12):
20186                         case (0x1 << 13):
20187                         case (0x1 << 14):
20188                                 addr = 0x78;
20189
20190                                 core_mask = 0x1;
20191                                 break;
20192                         case (0x1 << 2):
20193                         case (0x1 << 3):
20194                         case (0x1 << 4):
20195                         case (0x1 << 5):
20196                         case (0x1 << 6):
20197                         case (0x1 << 7):
20198                         case (0x1 << 8):
20199                                 addr = (core_num == 0) ? 0x7a : 0x7d;
20200                                 break;
20201                         case (0x1 << 10):
20202                                 addr = (core_num == 0) ? 0x7b : 0x7e;
20203                                 break;
20204                         case (0x1 << 11):
20205                                 addr = (core_num == 0) ? 0x7c : 0x7f;
20206                                 break;
20207                         default:
20208                                 addr = 0xffff;
20209                         }
20210
20211                         switch (field) {
20212                         case (0x1 << 1):
20213                                 mask = (0x7 << 3);
20214                                 shift = 3;
20215                                 break;
20216                         case (0x1 << 9):
20217                                 mask = (0x1 << 2);
20218                                 shift = 2;
20219                                 break;
20220                         case (0x1 << 12):
20221                                 mask = (0x1 << 8);
20222                                 shift = 8;
20223                                 break;
20224                         case (0x1 << 13):
20225                                 mask = (0x1 << 9);
20226                                 shift = 9;
20227                                 break;
20228                         case (0x1 << 14):
20229                                 mask = (0xf << 12);
20230                                 shift = 12;
20231                                 break;
20232                         case (0x1 << 2):
20233                                 mask = (0x1 << 0);
20234                                 shift = 0;
20235                                 break;
20236                         case (0x1 << 3):
20237                                 mask = (0x1 << 1);
20238                                 shift = 1;
20239                                 break;
20240                         case (0x1 << 4):
20241                                 mask = (0x1 << 2);
20242                                 shift = 2;
20243                                 break;
20244                         case (0x1 << 5):
20245                                 mask = (0x3 << 4);
20246                                 shift = 4;
20247                                 break;
20248                         case (0x1 << 6):
20249                                 mask = (0x3 << 6);
20250                                 shift = 6;
20251                                 break;
20252                         case (0x1 << 7):
20253                                 mask = (0x1 << 8);
20254                                 shift = 8;
20255                                 break;
20256                         case (0x1 << 8):
20257                                 mask = (0x1 << 9);
20258                                 shift = 9;
20259                                 break;
20260                         case (0x1 << 10):
20261                                 mask = 0x1fff;
20262                                 shift = 0x0;
20263                                 break;
20264                         case (0x1 << 11):
20265                                 mask = 0x1fff;
20266                                 shift = 0x0;
20267                                 break;
20268                         default:
20269                                 mask = 0x0;
20270                                 shift = 0x0;
20271                                 break;
20272                         }
20273
20274                         if ((addr != 0xffff) && (core_mask & (1 << core_num))) {
20275                                 mod_phy_reg(pi, addr, mask, (value << shift));
20276                         }
20277                 }
20278
20279                 or_phy_reg(pi, 0xec, (0x1 << 0));
20280                 or_phy_reg(pi, 0x78, (0x1 << 0));
20281                 udelay(1);
20282                 and_phy_reg(pi, 0xec, ~(0x1 << 0));
20283         }
20284 }
20285
20286 static void
20287 wlc_phy_rfctrl_override_1tomany_nphy(phy_info_t *pi, u16 cmd, u16 value,
20288                                      u8 core_mask, u8 off)
20289 {
20290         u16 rfmxgain = 0, lpfgain = 0;
20291         u16 tgain = 0;
20292
20293         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20294
20295                 switch (cmd) {
20296                 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
20297                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
20298                                                           value, core_mask, off,
20299                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20300                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), value,
20301                                                           core_mask, off,
20302                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20303                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), value,
20304                                                           core_mask, off,
20305                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20306                         break;
20307                 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
20308                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
20309                                                           value, core_mask, off,
20310                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20311                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), value,
20312                                                           core_mask, off,
20313                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20314                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), value,
20315                                                           core_mask, off,
20316                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20317                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), value,
20318                                                           core_mask, off,
20319                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
20320                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0,
20321                                                           core_mask, off,
20322                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20323                         break;
20324                 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
20325                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
20326                                                           value, core_mask, off,
20327                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20328                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), value,
20329                                                           core_mask, off,
20330                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20331                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), value,
20332                                                           core_mask, off,
20333                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
20334                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), value,
20335                                                           core_mask, off,
20336                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
20337                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1,
20338                                                           core_mask, off,
20339                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20340                         break;
20341                 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
20342                         rfmxgain = value & 0x000ff;
20343                         lpfgain = value & 0x0ff00;
20344                         lpfgain = lpfgain >> 8;
20345
20346                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
20347                                                           rfmxgain, core_mask,
20348                                                           off,
20349                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20350                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x3 << 13),
20351                                                           lpfgain, core_mask,
20352                                                           off,
20353                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20354                         break;
20355                 case NPHY_REV7_RfctrlOverride_cmd_txgain:
20356                         tgain = value & 0x7fff;
20357                         lpfgain = value & 0x8000;
20358                         lpfgain = lpfgain >> 14;
20359
20360                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
20361                                                           tgain, core_mask, off,
20362                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20363                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 13),
20364                                                           lpfgain, core_mask,
20365                                                           off,
20366                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20367                         break;
20368                 }
20369         }
20370 }
20371
20372 static void
20373 wlc_phy_scale_offset_rssi_nphy(phy_info_t *pi, u16 scale, s8 offset,
20374                                u8 coresel, u8 rail, u8 rssi_type)
20375 {
20376         u16 valuetostuff;
20377
20378         offset = (offset > NPHY_RSSICAL_MAXREAD) ?
20379             NPHY_RSSICAL_MAXREAD : offset;
20380         offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
20381             -NPHY_RSSICAL_MAXREAD - 1 : offset;
20382
20383         valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
20384
20385         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20386              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20387             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20388                 write_phy_reg(pi, 0x1a6, valuetostuff);
20389         }
20390         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20391              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20392             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20393                 write_phy_reg(pi, 0x1ac, valuetostuff);
20394         }
20395         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20396              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20397             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20398                 write_phy_reg(pi, 0x1b2, valuetostuff);
20399         }
20400         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20401              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20402             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20403                 write_phy_reg(pi, 0x1b8, valuetostuff);
20404         }
20405
20406         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20407              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20408             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20409                 write_phy_reg(pi, 0x1a4, valuetostuff);
20410         }
20411         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20412              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20413             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20414                 write_phy_reg(pi, 0x1aa, valuetostuff);
20415         }
20416         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20417              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20418             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20419                 write_phy_reg(pi, 0x1b0, valuetostuff);
20420         }
20421         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20422              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20423             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20424                 write_phy_reg(pi, 0x1b6, valuetostuff);
20425         }
20426
20427         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20428              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20429             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20430                 write_phy_reg(pi, 0x1a5, valuetostuff);
20431         }
20432         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20433              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20434             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20435                 write_phy_reg(pi, 0x1ab, valuetostuff);
20436         }
20437         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20438              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20439             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20440                 write_phy_reg(pi, 0x1b1, valuetostuff);
20441         }
20442         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20443              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20444             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20445                 write_phy_reg(pi, 0x1b7, valuetostuff);
20446         }
20447
20448         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20449              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20450             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20451                 write_phy_reg(pi, 0x1a7, valuetostuff);
20452         }
20453         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20454              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20455             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20456                 write_phy_reg(pi, 0x1ad, valuetostuff);
20457         }
20458         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20459              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20460             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20461                 write_phy_reg(pi, 0x1b3, valuetostuff);
20462         }
20463         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20464              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20465             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20466                 write_phy_reg(pi, 0x1b9, valuetostuff);
20467         }
20468
20469         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20470              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20471             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20472                 write_phy_reg(pi, 0x1a8, valuetostuff);
20473         }
20474         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20475              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20476             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20477                 write_phy_reg(pi, 0x1ae, valuetostuff);
20478         }
20479         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20480              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20481             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20482                 write_phy_reg(pi, 0x1b4, valuetostuff);
20483         }
20484         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20485              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20486             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20487                 write_phy_reg(pi, 0x1ba, valuetostuff);
20488         }
20489
20490         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20491              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20492             (rssi_type == NPHY_RSSI_SEL_TSSI_2G)) {
20493                 write_phy_reg(pi, 0x1a9, valuetostuff);
20494         }
20495         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20496              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20497             (rssi_type == NPHY_RSSI_SEL_TSSI_2G)) {
20498                 write_phy_reg(pi, 0x1b5, valuetostuff);
20499         }
20500
20501         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20502              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20503             (rssi_type == NPHY_RSSI_SEL_TSSI_5G)) {
20504                 write_phy_reg(pi, 0x1af, valuetostuff);
20505         }
20506         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20507              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20508             (rssi_type == NPHY_RSSI_SEL_TSSI_5G)) {
20509                 write_phy_reg(pi, 0x1bb, valuetostuff);
20510         }
20511 }
20512
20513 void wlc_phy_rssisel_nphy(phy_info_t *pi, u8 core_code, u8 rssi_type)
20514 {
20515         u16 mask, val;
20516         u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
20517             startseq;
20518         u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
20519             rfctrlovr_trigger_val;
20520         u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
20521         u16 rfctrlcmd_val, rfctrlovr_val;
20522         u8 core;
20523
20524         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20525                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
20526                         mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
20527                         mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
20528
20529                         mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
20530                         mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
20531
20532                         mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
20533                         mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
20534
20535                         mask = (0x1 << 2) |
20536                             (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
20537                         mod_phy_reg(pi, 0xf9, mask, 0);
20538                         mod_phy_reg(pi, 0xfb, mask, 0);
20539
20540                 } else {
20541                         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20542                                 if (core_code == RADIO_MIMO_CORESEL_CORE1
20543                                     && core == PHY_CORE_1)
20544                                         continue;
20545                                 else if (core_code == RADIO_MIMO_CORESEL_CORE2
20546                                          && core == PHY_CORE_0)
20547                                         continue;
20548
20549                                 mod_phy_reg(pi, (core == PHY_CORE_0) ?
20550                                             0x8f : 0xa5, (0x1 << 9), 1 << 9);
20551
20552                                 if (rssi_type == NPHY_RSSI_SEL_W1 ||
20553                                     rssi_type == NPHY_RSSI_SEL_W2 ||
20554                                     rssi_type == NPHY_RSSI_SEL_NB) {
20555
20556                                         mod_phy_reg(pi,
20557                                                     (core ==
20558                                                      PHY_CORE_0) ? 0xa6 : 0xa7,
20559                                                     (0x3 << 8), 0);
20560
20561                                         mask = (0x1 << 2) |
20562                                             (0x1 << 3) |
20563                                             (0x1 << 4) | (0x1 << 5);
20564                                         mod_phy_reg(pi,
20565                                                     (core ==
20566                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
20567                                                     mask, 0);
20568
20569                                         if (rssi_type == NPHY_RSSI_SEL_W1) {
20570                                                 if (CHSPEC_IS5G
20571                                                     (pi->radio_chanspec)) {
20572                                                         mask = (0x1 << 2);
20573                                                         val = 1 << 2;
20574                                                 } else {
20575                                                         mask = (0x1 << 3);
20576                                                         val = 1 << 3;
20577                                                 }
20578                                         } else if (rssi_type ==
20579                                                    NPHY_RSSI_SEL_W2) {
20580                                                 mask = (0x1 << 4);
20581                                                 val = 1 << 4;
20582                                         } else {
20583                                                 mask = (0x1 << 5);
20584                                                 val = 1 << 5;
20585                                         }
20586                                         mod_phy_reg(pi,
20587                                                     (core ==
20588                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
20589                                                     mask, val);
20590
20591                                         mask = (0x1 << 5);
20592                                         val = 1 << 5;
20593                                         mod_phy_reg(pi, (core == PHY_CORE_0) ?
20594                                                     0xe5 : 0xe6, mask, val);
20595                                 } else {
20596                                         if (rssi_type == NPHY_RSSI_SEL_TBD) {
20597
20598                                                 mask = (0x3 << 8);
20599                                                 val = 1 << 8;
20600                                                 mod_phy_reg(pi,
20601                                                             (core ==
20602                                                              PHY_CORE_0) ? 0xa6
20603                                                             : 0xa7, mask, val);
20604                                                 mask = (0x3 << 10);
20605                                                 val = 1 << 10;
20606                                                 mod_phy_reg(pi,
20607                                                             (core ==
20608                                                              PHY_CORE_0) ? 0xa6
20609                                                             : 0xa7, mask, val);
20610                                         } else if (rssi_type ==
20611                                                    NPHY_RSSI_SEL_IQ) {
20612
20613                                                 mask = (0x3 << 8);
20614                                                 val = 2 << 8;
20615                                                 mod_phy_reg(pi,
20616                                                             (core ==
20617                                                              PHY_CORE_0) ? 0xa6
20618                                                             : 0xa7, mask, val);
20619                                                 mask = (0x3 << 10);
20620                                                 val = 2 << 10;
20621                                                 mod_phy_reg(pi,
20622                                                             (core ==
20623                                                              PHY_CORE_0) ? 0xa6
20624                                                             : 0xa7, mask, val);
20625                                         } else {
20626
20627                                                 mask = (0x3 << 8);
20628                                                 val = 3 << 8;
20629                                                 mod_phy_reg(pi,
20630                                                             (core ==
20631                                                              PHY_CORE_0) ? 0xa6
20632                                                             : 0xa7, mask, val);
20633                                                 mask = (0x3 << 10);
20634                                                 val = 3 << 10;
20635                                                 mod_phy_reg(pi,
20636                                                             (core ==
20637                                                              PHY_CORE_0) ? 0xa6
20638                                                             : 0xa7, mask, val);
20639
20640                                                 if (PHY_IPA(pi)) {
20641                                                         if (NREV_GE
20642                                                             (pi->pubpi.phy_rev,
20643                                                              7)) {
20644
20645                                                                 write_radio_reg
20646                                                                     (pi,
20647                                                                      ((core ==
20648                                                                        PHY_CORE_0)
20649                                                                       ?
20650                                                                       RADIO_2057_TX0_TX_SSI_MUX
20651                                                                       :
20652                                                                       RADIO_2057_TX1_TX_SSI_MUX),
20653                                                                      (CHSPEC_IS5G
20654                                                                       (pi->
20655                                                                        radio_chanspec)
20656                                                                       ? 0xc :
20657                                                                       0xe));
20658                                                         } else {
20659                                                                 write_radio_reg
20660                                                                     (pi,
20661                                                                      RADIO_2056_TX_TX_SSI_MUX
20662                                                                      |
20663                                                                      ((core ==
20664                                                                        PHY_CORE_0)
20665                                                                       ?
20666                                                                       RADIO_2056_TX0
20667                                                                       :
20668                                                                       RADIO_2056_TX1),
20669                                                                      (CHSPEC_IS5G
20670                                                                       (pi->
20671                                                                        radio_chanspec)
20672                                                                       ? 0xc :
20673                                                                       0xe));
20674                                                         }
20675                                                 } else {
20676
20677                                                         if (NREV_GE
20678                                                             (pi->pubpi.phy_rev,
20679                                                              7)) {
20680                                                                 write_radio_reg
20681                                                                     (pi,
20682                                                                      ((core ==
20683                                                                        PHY_CORE_0)
20684                                                                       ?
20685                                                                       RADIO_2057_TX0_TX_SSI_MUX
20686                                                                       :
20687                                                                       RADIO_2057_TX1_TX_SSI_MUX),
20688                                                                      0x11);
20689
20690                                                                 if (pi->pubpi.
20691                                                                     radioid ==
20692                                                                     BCM2057_ID)
20693                                                                         write_radio_reg
20694                                                                             (pi,
20695                                                                              RADIO_2057_IQTEST_SEL_PU,
20696                                                                              0x1);
20697
20698                                                         } else {
20699                                                                 write_radio_reg
20700                                                                     (pi,
20701                                                                      RADIO_2056_TX_TX_SSI_MUX
20702                                                                      |
20703                                                                      ((core ==
20704                                                                        PHY_CORE_0)
20705                                                                       ?
20706                                                                       RADIO_2056_TX0
20707                                                                       :
20708                                                                       RADIO_2056_TX1),
20709                                                                      0x11);
20710                                                         }
20711                                                 }
20712
20713                                                 afectrlovr_rssi_val = 1 << 9;
20714                                                 mod_phy_reg(pi,
20715                                                             (core ==
20716                                                              PHY_CORE_0) ? 0x8f
20717                                                             : 0xa5, (0x1 << 9),
20718                                                             afectrlovr_rssi_val);
20719                                         }
20720                                 }
20721                         }
20722                 }
20723         } else {
20724
20725                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
20726                     (rssi_type == NPHY_RSSI_SEL_W2) ||
20727                     (rssi_type == NPHY_RSSI_SEL_NB)) {
20728
20729                         val = 0x0;
20730                 } else if (rssi_type == NPHY_RSSI_SEL_TBD) {
20731
20732                         val = 0x1;
20733                 } else if (rssi_type == NPHY_RSSI_SEL_IQ) {
20734
20735                         val = 0x2;
20736                 } else {
20737
20738                         val = 0x3;
20739                 }
20740                 mask = ((0x3 << 12) | (0x3 << 14));
20741                 val = (val << 12) | (val << 14);
20742                 mod_phy_reg(pi, 0xa6, mask, val);
20743                 mod_phy_reg(pi, 0xa7, mask, val);
20744
20745                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
20746                     (rssi_type == NPHY_RSSI_SEL_W2) ||
20747                     (rssi_type == NPHY_RSSI_SEL_NB)) {
20748                         if (rssi_type == NPHY_RSSI_SEL_W1) {
20749                                 val = 0x1;
20750                         }
20751                         if (rssi_type == NPHY_RSSI_SEL_W2) {
20752                                 val = 0x2;
20753                         }
20754                         if (rssi_type == NPHY_RSSI_SEL_NB) {
20755                                 val = 0x3;
20756                         }
20757                         mask = (0x3 << 4);
20758                         val = (val << 4);
20759                         mod_phy_reg(pi, 0x7a, mask, val);
20760                         mod_phy_reg(pi, 0x7d, mask, val);
20761                 }
20762
20763                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
20764                         afectrlovr_rssi_val = 0;
20765                         rfctrlcmd_rxen_val = 0;
20766                         rfctrlcmd_coresel_val = 0;
20767                         rfctrlovr_rssi_val = 0;
20768                         rfctrlovr_rxen_val = 0;
20769                         rfctrlovr_coresel_val = 0;
20770                         rfctrlovr_trigger_val = 0;
20771                         startseq = 0;
20772                 } else {
20773                         afectrlovr_rssi_val = 1;
20774                         rfctrlcmd_rxen_val = 1;
20775                         rfctrlcmd_coresel_val = core_code;
20776                         rfctrlovr_rssi_val = 1;
20777                         rfctrlovr_rxen_val = 1;
20778                         rfctrlovr_coresel_val = 1;
20779                         rfctrlovr_trigger_val = 1;
20780                         startseq = 1;
20781                 }
20782
20783                 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
20784                 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
20785                                        12) | (afectrlovr_rssi_val << 13);
20786                 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
20787                             afectrlovr_rssi_val);
20788
20789                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
20790                     (rssi_type == NPHY_RSSI_SEL_W2) ||
20791                     (rssi_type == NPHY_RSSI_SEL_NB)) {
20792                         rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
20793                         rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
20794                             (rfctrlcmd_coresel_val << 3);
20795
20796                         rfctrlovr_mask = ((0x1 << 5) |
20797                                           (0x1 << 12) |
20798                                           (0x1 << 1) | (0x1 << 0));
20799                         rfctrlovr_val = (rfctrlovr_rssi_val <<
20800                                          5) |
20801                             (rfctrlovr_rxen_val << 12) |
20802                             (rfctrlovr_coresel_val << 1) |
20803                             (rfctrlovr_trigger_val << 0);
20804
20805                         mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
20806                         mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
20807
20808                         mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
20809                         udelay(20);
20810
20811                         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
20812                 }
20813         }
20814 }
20815
20816 int
20817 wlc_phy_poll_rssi_nphy(phy_info_t *pi, u8 rssi_type, s32 *rssi_buf,
20818                        u8 nsamps)
20819 {
20820         s16 rssi0, rssi1;
20821         u16 afectrlCore1_save = 0;
20822         u16 afectrlCore2_save = 0;
20823         u16 afectrlOverride1_save = 0;
20824         u16 afectrlOverride2_save = 0;
20825         u16 rfctrlOverrideAux0_save = 0;
20826         u16 rfctrlOverrideAux1_save = 0;
20827         u16 rfctrlMiscReg1_save = 0;
20828         u16 rfctrlMiscReg2_save = 0;
20829         u16 rfctrlcmd_save = 0;
20830         u16 rfctrloverride_save = 0;
20831         u16 rfctrlrssiothers1_save = 0;
20832         u16 rfctrlrssiothers2_save = 0;
20833         s8 tmp_buf[4];
20834         u8 ctr = 0, samp = 0;
20835         s32 rssi_out_val;
20836         u16 gpiosel_orig;
20837
20838         afectrlCore1_save = read_phy_reg(pi, 0xa6);
20839         afectrlCore2_save = read_phy_reg(pi, 0xa7);
20840         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20841                 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
20842                 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
20843                 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
20844                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
20845                 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
20846                 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
20847         } else {
20848                 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
20849                 rfctrlcmd_save = read_phy_reg(pi, 0x78);
20850                 rfctrloverride_save = read_phy_reg(pi, 0xec);
20851                 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
20852                 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
20853         }
20854
20855         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
20856
20857         gpiosel_orig = read_phy_reg(pi, 0xca);
20858         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
20859                 write_phy_reg(pi, 0xca, 5);
20860         }
20861
20862         for (ctr = 0; ctr < 4; ctr++) {
20863                 rssi_buf[ctr] = 0;
20864         }
20865
20866         for (samp = 0; samp < nsamps; samp++) {
20867                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
20868                         rssi0 = read_phy_reg(pi, 0x1c9);
20869                         rssi1 = read_phy_reg(pi, 0x1ca);
20870                 } else {
20871                         rssi0 = read_phy_reg(pi, 0x219);
20872                         rssi1 = read_phy_reg(pi, 0x21a);
20873                 }
20874
20875                 ctr = 0;
20876                 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
20877                 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
20878                 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
20879                 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
20880
20881                 for (ctr = 0; ctr < 4; ctr++) {
20882                         rssi_buf[ctr] += tmp_buf[ctr];
20883                 }
20884
20885         }
20886
20887         rssi_out_val = rssi_buf[3] & 0xff;
20888         rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
20889         rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
20890         rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
20891
20892         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
20893                 write_phy_reg(pi, 0xca, gpiosel_orig);
20894         }
20895
20896         write_phy_reg(pi, 0xa6, afectrlCore1_save);
20897         write_phy_reg(pi, 0xa7, afectrlCore2_save);
20898         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20899                 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
20900                 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
20901                 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
20902                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
20903                 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
20904                 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
20905         } else {
20906                 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
20907                 write_phy_reg(pi, 0x78, rfctrlcmd_save);
20908                 write_phy_reg(pi, 0xec, rfctrloverride_save);
20909                 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
20910                 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
20911         }
20912
20913         return rssi_out_val;
20914 }
20915
20916 s16 wlc_phy_tempsense_nphy(phy_info_t *pi)
20917 {
20918         u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
20919         u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
20920         u16 pwrdet_rxtx_core1_save;
20921         u16 pwrdet_rxtx_core2_save;
20922         u16 afectrlCore1_save;
20923         u16 afectrlCore2_save;
20924         u16 afectrlOverride_save;
20925         u16 afectrlOverride2_save;
20926         u16 pd_pll_ts_save;
20927         u16 gpioSel_save;
20928         s32 radio_temp[4];
20929         s32 radio_temp2[4];
20930         u16 syn_tempprocsense_save;
20931         s16 offset = 0;
20932
20933         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20934                 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
20935                 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
20936                 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
20937                 s32 auxADC_Vl;
20938                 u16 RfctrlOverride5_save, RfctrlOverride6_save;
20939                 u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
20940                 u16 RSSIMultCoef0QPowerDet_save;
20941                 u16 tempsense_Rcal;
20942
20943                 syn_tempprocsense_save =
20944                     read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
20945
20946                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
20947                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
20948                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
20949                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
20950                 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
20951                 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
20952                 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
20953                 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
20954                 RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
20955
20956                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
20957                                         &auxADC_Vmid_save);
20958                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
20959                                         &auxADC_Av_save);
20960                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
20961                                         &auxADC_rssi_ctrlL_save);
20962                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
20963                                         &auxADC_rssi_ctrlH_save);
20964
20965                 write_phy_reg(pi, 0x1ae, 0x0);
20966
20967                 auxADC_rssi_ctrlL = 0x0;
20968                 auxADC_rssi_ctrlH = 0x20;
20969                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
20970                                          &auxADC_rssi_ctrlL);
20971                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
20972                                          &auxADC_rssi_ctrlH);
20973
20974                 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
20975
20976                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
20977                                 tempsense_Rcal | 0x01);
20978
20979                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
20980                                                   1, 0, 0,
20981                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
20982                 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
20983                 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
20984                 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
20985                 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
20986
20987                 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
20988                 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
20989                 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
20990                 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
20991                 udelay(5);
20992                 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
20993                 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
20994                 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
20995                 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
20996                 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
20997                 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
20998                 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
20999                 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
21000                 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
21001                 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
21002
21003                 auxADC_Vmid = 0xA3;
21004                 auxADC_Av = 0x0;
21005                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21006                                          &auxADC_Vmid);
21007                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21008                                          &auxADC_Av);
21009
21010                 udelay(3);
21011
21012                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21013                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
21014                                 tempsense_Rcal | 0x03);
21015
21016                 udelay(5);
21017                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21018
21019                 auxADC_Av = 0x7;
21020                 if (radio_temp[1] + radio_temp2[1] < -30) {
21021                         auxADC_Vmid = 0x45;
21022                         auxADC_Vl = 263;
21023                 } else if (radio_temp[1] + radio_temp2[1] < -9) {
21024                         auxADC_Vmid = 0x200;
21025                         auxADC_Vl = 467;
21026                 } else if (radio_temp[1] + radio_temp2[1] < 11) {
21027                         auxADC_Vmid = 0x266;
21028                         auxADC_Vl = 634;
21029                 } else {
21030                         auxADC_Vmid = 0x2D5;
21031                         auxADC_Vl = 816;
21032                 }
21033
21034                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21035                                          &auxADC_Vmid);
21036                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21037                                          &auxADC_Av);
21038
21039                 udelay(3);
21040
21041                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21042                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
21043                                 tempsense_Rcal | 0x01);
21044
21045                 udelay(5);
21046                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21047
21048                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
21049                                 syn_tempprocsense_save);
21050
21051                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21052                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21053                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
21054                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21055                 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
21056                 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
21057                 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
21058                 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
21059                 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
21060
21061                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21062                                          &auxADC_Vmid_save);
21063                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21064                                          &auxADC_Av_save);
21065                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
21066                                          &auxADC_rssi_ctrlL_save);
21067                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
21068                                          &auxADC_rssi_ctrlH_save);
21069
21070                 if (pi->sh->chip == BCM5357_CHIP_ID) {
21071                         radio_temp[0] = (193 * (radio_temp[1] + radio_temp2[1])
21072                                          + 88 * (auxADC_Vl) - 27111 +
21073                                          128) / 256;
21074                 } else if (pi->sh->chip == BCM43236_CHIP_ID) {
21075                         radio_temp[0] = (198 * (radio_temp[1] + radio_temp2[1])
21076                                          + 91 * (auxADC_Vl) - 27243 +
21077                                          128) / 256;
21078                 } else {
21079                         radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
21080                                          + 82 * (auxADC_Vl) - 28861 +
21081                                          128) / 256;
21082                 }
21083
21084                 offset = (s16) pi->phy_tempsense_offset;
21085
21086         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21087                 syn_tempprocsense_save =
21088                     read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
21089
21090                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21091                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21092                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
21093                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21094                 gpioSel_save = read_phy_reg(pi, 0xca);
21095
21096                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
21097
21098                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21099                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21100                 } else {
21101                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
21102                 }
21103
21104                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21105                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21106                         write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
21107                 } else {
21108                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
21109                 }
21110
21111                 radio_temp[0] =
21112                     (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
21113
21114                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
21115                                 syn_tempprocsense_save);
21116
21117                 write_phy_reg(pi, 0xca, gpioSel_save);
21118                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21119                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21120                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
21121                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21122
21123                 offset = (s16) pi->phy_tempsense_offset;
21124         } else {
21125
21126                 pwrdet_rxtx_core1_save =
21127                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
21128                 pwrdet_rxtx_core2_save =
21129                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
21130                 core1_txrf_iqcal1_save =
21131                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
21132                 core1_txrf_iqcal2_save =
21133                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
21134                 core2_txrf_iqcal1_save =
21135                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
21136                 core2_txrf_iqcal2_save =
21137                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
21138                 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
21139
21140                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21141                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21142                 afectrlOverride_save = read_phy_reg(pi, 0xa5);
21143                 gpioSel_save = read_phy_reg(pi, 0xca);
21144
21145                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
21146                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
21147                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
21148                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
21149                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
21150                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
21151                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
21152
21153                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21154                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
21155
21156                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21157                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
21158
21159                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21160                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
21161
21162                 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
21163                 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
21164                 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
21165                 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
21166
21167                 radio_temp[0] =
21168                     (radio_temp[0] + radio_temp[1] + radio_temp[2] +
21169                      radio_temp[3]);
21170
21171                 radio_temp[0] =
21172                     (radio_temp[0] + (8 * 32)) * (950 - 350) / 63 + (350 * 8);
21173
21174                 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
21175
21176                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
21177                                 pwrdet_rxtx_core1_save);
21178                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
21179                                 pwrdet_rxtx_core2_save);
21180                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
21181                                 core1_txrf_iqcal1_save);
21182                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
21183                                 core2_txrf_iqcal1_save);
21184                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
21185                                 core1_txrf_iqcal2_save);
21186                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
21187                                 core2_txrf_iqcal2_save);
21188                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
21189
21190                 write_phy_reg(pi, 0xca, gpioSel_save);
21191                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21192                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21193                 write_phy_reg(pi, 0xa5, afectrlOverride_save);
21194         }
21195
21196         return (s16) radio_temp[0] + offset;
21197 }
21198
21199 static void
21200 wlc_phy_set_rssi_2055_vcm(phy_info_t *pi, u8 rssi_type, u8 *vcm_buf)
21201 {
21202         u8 core;
21203
21204         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21205                 if (rssi_type == NPHY_RSSI_SEL_NB) {
21206                         if (core == PHY_CORE_0) {
21207                                 mod_radio_reg(pi,
21208                                               RADIO_2055_CORE1_B0_NBRSSI_VCM,
21209                                               RADIO_2055_NBRSSI_VCM_I_MASK,
21210                                               vcm_buf[2 *
21211                                                       core] <<
21212                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
21213                                 mod_radio_reg(pi,
21214                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
21215                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
21216                                               vcm_buf[2 * core +
21217                                                       1] <<
21218                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
21219                         } else {
21220                                 mod_radio_reg(pi,
21221                                               RADIO_2055_CORE2_B0_NBRSSI_VCM,
21222                                               RADIO_2055_NBRSSI_VCM_I_MASK,
21223                                               vcm_buf[2 *
21224                                                       core] <<
21225                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
21226                                 mod_radio_reg(pi,
21227                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
21228                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
21229                                               vcm_buf[2 * core +
21230                                                       1] <<
21231                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
21232                         }
21233                 } else {
21234
21235                         if (core == PHY_CORE_0) {
21236                                 mod_radio_reg(pi,
21237                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
21238                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
21239                                               vcm_buf[2 *
21240                                                       core] <<
21241                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
21242                         } else {
21243                                 mod_radio_reg(pi,
21244                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
21245                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
21246                                               vcm_buf[2 *
21247                                                       core] <<
21248                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
21249                         }
21250                 }
21251         }
21252 }
21253
21254 void wlc_phy_rssi_cal_nphy(phy_info_t *pi)
21255 {
21256         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21257
21258                 wlc_phy_rssi_cal_nphy_rev3(pi);
21259         } else {
21260                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
21261                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
21262                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
21263         }
21264 }
21265
21266 static void wlc_phy_rssi_cal_nphy_rev2(phy_info_t *pi, u8 rssi_type)
21267 {
21268         s32 target_code;
21269         u16 classif_state;
21270         u16 clip_state[2];
21271         u16 rssi_ctrl_state[2], pd_state[2];
21272         u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
21273         u16 rfctrlintc_override_val;
21274         u16 clip_off[] = { 0xffff, 0xffff };
21275         u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
21276         u8 vcm, min_vcm, vcm_tmp[4];
21277         u8 vcm_final[4] = { 0, 0, 0, 0 };
21278         u8 result_idx, ctr;
21279         s32 poll_results[4][4] = {
21280                 {0, 0, 0, 0},
21281                 {0, 0, 0, 0},
21282                 {0, 0, 0, 0},
21283                 {0, 0, 0, 0}
21284         };
21285         s32 poll_miniq[4][2] = {
21286                 {0, 0},
21287                 {0, 0},
21288                 {0, 0},
21289                 {0, 0}
21290         };
21291         s32 min_d, curr_d;
21292         s32 fine_digital_offset[4];
21293         s32 poll_results_min[4] = { 0, 0, 0, 0 };
21294         s32 min_poll;
21295
21296         switch (rssi_type) {
21297         case NPHY_RSSI_SEL_NB:
21298                 target_code = NPHY_RSSICAL_NB_TARGET;
21299                 break;
21300         case NPHY_RSSI_SEL_W1:
21301                 target_code = NPHY_RSSICAL_W1_TARGET;
21302                 break;
21303         case NPHY_RSSI_SEL_W2:
21304                 target_code = NPHY_RSSICAL_W2_TARGET;
21305                 break;
21306         default:
21307                 return;
21308                 break;
21309         }
21310
21311         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
21312         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
21313         wlc_phy_clip_det_nphy(pi, 0, clip_state);
21314         wlc_phy_clip_det_nphy(pi, 1, clip_off);
21315
21316         rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
21317         rfctrlintc_override_val =
21318             CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
21319
21320         rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
21321         rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
21322         write_phy_reg(pi, 0x91, rfctrlintc_override_val);
21323         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
21324
21325         rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
21326         rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
21327         write_phy_reg(pi, 0x92, rfctrlintc_override_val);
21328         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
21329
21330         pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
21331             RADIO_2055_WBRSSI_G2_PD;
21332         pd_state[0] =
21333             read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
21334         pd_state[1] =
21335             read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
21336         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
21337         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
21338         rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
21339             RADIO_2055_WBRSSI_G2_SEL;
21340         rssi_ctrl_state[0] =
21341             read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
21342         rssi_ctrl_state[1] =
21343             read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
21344         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
21345
21346         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
21347                                        NPHY_RAIL_I, rssi_type);
21348         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
21349                                        NPHY_RAIL_Q, rssi_type);
21350
21351         for (vcm = 0; vcm < 4; vcm++) {
21352
21353                 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
21354                 if (rssi_type != NPHY_RSSI_SEL_W2) {
21355                         wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
21356                 }
21357
21358                 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
21359                                        NPHY_RSSICAL_NPOLL);
21360
21361                 if ((rssi_type == NPHY_RSSI_SEL_W1)
21362                     || (rssi_type == NPHY_RSSI_SEL_W2)) {
21363                         for (ctr = 0; ctr < 2; ctr++) {
21364                                 poll_miniq[vcm][ctr] =
21365                                     min(poll_results[vcm][ctr * 2 + 0],
21366                                         poll_results[vcm][ctr * 2 + 1]);
21367                         }
21368                 }
21369         }
21370
21371         for (result_idx = 0; result_idx < 4; result_idx++) {
21372                 min_d = NPHY_RSSICAL_MAXD;
21373                 min_vcm = 0;
21374                 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
21375                 for (vcm = 0; vcm < 4; vcm++) {
21376                         curr_d = ABS(((rssi_type == NPHY_RSSI_SEL_NB) ?
21377                                       poll_results[vcm][result_idx] :
21378                                       poll_miniq[vcm][result_idx / 2]) -
21379                                      (target_code * NPHY_RSSICAL_NPOLL));
21380                         if (curr_d < min_d) {
21381                                 min_d = curr_d;
21382                                 min_vcm = vcm;
21383                         }
21384                         if (poll_results[vcm][result_idx] < min_poll) {
21385                                 min_poll = poll_results[vcm][result_idx];
21386                         }
21387                 }
21388                 vcm_final[result_idx] = min_vcm;
21389                 poll_results_min[result_idx] = min_poll;
21390         }
21391
21392         if (rssi_type != NPHY_RSSI_SEL_W2) {
21393                 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
21394         }
21395
21396         for (result_idx = 0; result_idx < 4; result_idx++) {
21397                 fine_digital_offset[result_idx] =
21398                     (target_code * NPHY_RSSICAL_NPOLL) -
21399                     poll_results[vcm_final[result_idx]][result_idx];
21400                 if (fine_digital_offset[result_idx] < 0) {
21401                         fine_digital_offset[result_idx] =
21402                             ABS(fine_digital_offset[result_idx]);
21403                         fine_digital_offset[result_idx] +=
21404                             (NPHY_RSSICAL_NPOLL / 2);
21405                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
21406                         fine_digital_offset[result_idx] =
21407                             -fine_digital_offset[result_idx];
21408                 } else {
21409                         fine_digital_offset[result_idx] +=
21410                             (NPHY_RSSICAL_NPOLL / 2);
21411                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
21412                 }
21413
21414                 if (poll_results_min[result_idx] ==
21415                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL) {
21416                         fine_digital_offset[result_idx] =
21417                             (target_code - NPHY_RSSICAL_MAXREAD - 1);
21418                 }
21419
21420                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
21421                                                (s8)
21422                                                fine_digital_offset[result_idx],
21423                                                (result_idx / 2 ==
21424                                                 0) ? RADIO_MIMO_CORESEL_CORE1 :
21425                                                RADIO_MIMO_CORESEL_CORE2,
21426                                                (result_idx % 2 ==
21427                                                 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
21428                                                rssi_type);
21429         }
21430
21431         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
21432         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
21433         if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL) {
21434                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21435                                      NPHY_RSSI_SEL_NB);
21436         } else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL) {
21437                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21438                                      NPHY_RSSI_SEL_W1);
21439         } else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G2_SEL) {
21440                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21441                                      NPHY_RSSI_SEL_W2);
21442         } else {
21443                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21444                                      NPHY_RSSI_SEL_W2);
21445         }
21446         if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL) {
21447                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21448                                      NPHY_RSSI_SEL_NB);
21449         } else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL) {
21450                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21451                                      NPHY_RSSI_SEL_W1);
21452         } else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G2_SEL) {
21453                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21454                                      NPHY_RSSI_SEL_W2);
21455         } else {
21456                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21457                                      NPHY_RSSI_SEL_W2);
21458         }
21459
21460         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
21461
21462         write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
21463         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
21464         write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
21465         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
21466
21467         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
21468         wlc_phy_clip_det_nphy(pi, 1, clip_state);
21469
21470         wlc_phy_resetcca_nphy(pi);
21471 }
21472
21473 int BCMFASTPATH
21474 wlc_phy_rssi_compute_nphy(phy_info_t *pi, wlc_d11rxhdr_t *wlc_rxh)
21475 {
21476         d11rxhdr_t *rxh = &wlc_rxh->rxhdr;
21477         s16 rxpwr, rxpwr0, rxpwr1;
21478         s16 phyRx0_l, phyRx2_l;
21479
21480         rxpwr = 0;
21481         rxpwr0 = ltoh16(rxh->PhyRxStatus_1) & PRXS1_nphy_PWR0_MASK;
21482         rxpwr1 = (ltoh16(rxh->PhyRxStatus_1) & PRXS1_nphy_PWR1_MASK) >> 8;
21483
21484         if (rxpwr0 > 127)
21485                 rxpwr0 -= 256;
21486         if (rxpwr1 > 127)
21487                 rxpwr1 -= 256;
21488
21489         phyRx0_l = ltoh16(rxh->PhyRxStatus_0) & 0x00ff;
21490         phyRx2_l = ltoh16(rxh->PhyRxStatus_2) & 0x00ff;
21491         if (phyRx2_l > 127)
21492                 phyRx2_l -= 256;
21493
21494         if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
21495                 rxpwr0 = rxpwr1;
21496                 rxpwr1 = phyRx2_l;
21497         }
21498
21499         wlc_rxh->rxpwr[0] = (s8) rxpwr0;
21500         wlc_rxh->rxpwr[1] = (s8) rxpwr1;
21501         wlc_rxh->do_rssi_ma = 0;
21502
21503         if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
21504                 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
21505         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
21506                 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
21507         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
21508                 rxpwr = (rxpwr0 + rxpwr1) >> 1;
21509         else
21510                 ASSERT(0);
21511
21512         return rxpwr;
21513 }
21514
21515 static void
21516 wlc_phy_rfctrlintc_override_nphy(phy_info_t *pi, u8 field, u16 value,
21517                                  u8 core_code)
21518 {
21519         u16 mask;
21520         u16 val;
21521         u8 core;
21522
21523         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21524                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21525                         if (core_code == RADIO_MIMO_CORESEL_CORE1
21526                             && core == PHY_CORE_1)
21527                                 continue;
21528                         else if (core_code == RADIO_MIMO_CORESEL_CORE2
21529                                  && core == PHY_CORE_0)
21530                                 continue;
21531
21532                         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
21533
21534                                 mask = (0x1 << 10);
21535                                 val = 1 << 10;
21536                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
21537                                             0x92, mask, val);
21538                         }
21539
21540                         if (field == NPHY_RfctrlIntc_override_OFF) {
21541
21542                                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
21543                                               0x92, 0);
21544
21545                                 wlc_phy_force_rfseq_nphy(pi,
21546                                                          NPHY_RFSEQ_RESET2RX);
21547                         } else if (field == NPHY_RfctrlIntc_override_TRSW) {
21548
21549                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21550
21551                                         mask = (0x1 << 6) | (0x1 << 7);
21552
21553                                         val = value << 6;
21554                                         mod_phy_reg(pi,
21555                                                     (core ==
21556                                                      PHY_CORE_0) ? 0x91 : 0x92,
21557                                                     mask, val);
21558
21559                                         or_phy_reg(pi,
21560                                                    (core ==
21561                                                     PHY_CORE_0) ? 0x91 : 0x92,
21562                                                    (0x1 << 10));
21563
21564                                         and_phy_reg(pi, 0x2ff, (u16)
21565                                                     ~(0x3 << 14));
21566                                         or_phy_reg(pi, 0x2ff, (0x1 << 13));
21567                                         or_phy_reg(pi, 0x2ff, (0x1 << 0));
21568                                 } else {
21569
21570                                         mask = (0x1 << 6) |
21571                                             (0x1 << 7) |
21572                                             (0x1 << 8) | (0x1 << 9);
21573                                         val = value << 6;
21574                                         mod_phy_reg(pi,
21575                                                     (core ==
21576                                                      PHY_CORE_0) ? 0x91 : 0x92,
21577                                                     mask, val);
21578
21579                                         mask = (0x1 << 0);
21580                                         val = 1 << 0;
21581                                         mod_phy_reg(pi,
21582                                                     (core ==
21583                                                      PHY_CORE_0) ? 0xe7 : 0xec,
21584                                                     mask, val);
21585
21586                                         mask = (core == PHY_CORE_0) ? (0x1 << 0)
21587                                             : (0x1 << 1);
21588                                         val = 1 << ((core == PHY_CORE_0) ?
21589                                                     0 : 1);
21590                                         mod_phy_reg(pi, 0x78, mask, val);
21591
21592                                         SPINWAIT(((read_phy_reg(pi, 0x78) & val)
21593                                                   != 0), 10000);
21594                                         ASSERT((read_phy_reg(pi, 0x78) & val) ==
21595                                                0);
21596
21597                                         mask = (0x1 << 0);
21598                                         val = 0 << 0;
21599                                         mod_phy_reg(pi,
21600                                                     (core ==
21601                                                      PHY_CORE_0) ? 0xe7 : 0xec,
21602                                                     mask, val);
21603                                 }
21604                         } else if (field == NPHY_RfctrlIntc_override_PA) {
21605                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21606
21607                                         mask = (0x1 << 4) | (0x1 << 5);
21608
21609                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21610                                                 val = value << 5;
21611                                         } else {
21612                                                 val = value << 4;
21613                                         }
21614
21615                                         mod_phy_reg(pi,
21616                                                     (core ==
21617                                                      PHY_CORE_0) ? 0x91 : 0x92,
21618                                                     mask, val);
21619
21620                                         or_phy_reg(pi,
21621                                                    (core ==
21622                                                     PHY_CORE_0) ? 0x91 : 0x92,
21623                                                    (0x1 << 12));
21624                                 } else {
21625
21626                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21627                                                 mask = (0x1 << 5);
21628                                                 val = value << 5;
21629                                         } else {
21630                                                 mask = (0x1 << 4);
21631                                                 val = value << 4;
21632                                         }
21633                                         mod_phy_reg(pi,
21634                                                     (core ==
21635                                                      PHY_CORE_0) ? 0x91 : 0x92,
21636                                                     mask, val);
21637                                 }
21638                         } else if (field == NPHY_RfctrlIntc_override_EXT_LNA_PU) {
21639                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21640                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21641
21642                                                 mask = (0x1 << 0);
21643                                                 val = value << 0;
21644                                                 mod_phy_reg(pi,
21645                                                             (core ==
21646                                                              PHY_CORE_0) ? 0x91
21647                                                             : 0x92, mask, val);
21648
21649                                                 mask = (0x1 << 2);
21650                                                 mod_phy_reg(pi,
21651                                                             (core ==
21652                                                              PHY_CORE_0) ? 0x91
21653                                                             : 0x92, mask, 0);
21654                                         } else {
21655
21656                                                 mask = (0x1 << 2);
21657                                                 val = value << 2;
21658                                                 mod_phy_reg(pi,
21659                                                             (core ==
21660                                                              PHY_CORE_0) ? 0x91
21661                                                             : 0x92, mask, val);
21662
21663                                                 mask = (0x1 << 0);
21664                                                 mod_phy_reg(pi,
21665                                                             (core ==
21666                                                              PHY_CORE_0) ? 0x91
21667                                                             : 0x92, mask, 0);
21668                                         }
21669
21670                                         mask = (0x1 << 11);
21671                                         val = 1 << 11;
21672                                         mod_phy_reg(pi,
21673                                                     (core ==
21674                                                      PHY_CORE_0) ? 0x91 : 0x92,
21675                                                     mask, val);
21676                                 } else {
21677
21678                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21679                                                 mask = (0x1 << 0);
21680                                                 val = value << 0;
21681                                         } else {
21682                                                 mask = (0x1 << 2);
21683                                                 val = value << 2;
21684                                         }
21685                                         mod_phy_reg(pi,
21686                                                     (core ==
21687                                                      PHY_CORE_0) ? 0x91 : 0x92,
21688                                                     mask, val);
21689                                 }
21690                         } else if (field ==
21691                                    NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
21692                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21693                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21694
21695                                                 mask = (0x1 << 1);
21696                                                 val = value << 1;
21697                                                 mod_phy_reg(pi,
21698                                                             (core ==
21699                                                              PHY_CORE_0) ? 0x91
21700                                                             : 0x92, mask, val);
21701
21702                                                 mask = (0x1 << 3);
21703                                                 mod_phy_reg(pi,
21704                                                             (core ==
21705                                                              PHY_CORE_0) ? 0x91
21706                                                             : 0x92, mask, 0);
21707                                         } else {
21708
21709                                                 mask = (0x1 << 3);
21710                                                 val = value << 3;
21711                                                 mod_phy_reg(pi,
21712                                                             (core ==
21713                                                              PHY_CORE_0) ? 0x91
21714                                                             : 0x92, mask, val);
21715
21716                                                 mask = (0x1 << 1);
21717                                                 mod_phy_reg(pi,
21718                                                             (core ==
21719                                                              PHY_CORE_0) ? 0x91
21720                                                             : 0x92, mask, 0);
21721                                         }
21722
21723                                         mask = (0x1 << 11);
21724                                         val = 1 << 11;
21725                                         mod_phy_reg(pi,
21726                                                     (core ==
21727                                                      PHY_CORE_0) ? 0x91 : 0x92,
21728                                                     mask, val);
21729                                 } else {
21730
21731                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21732                                                 mask = (0x1 << 1);
21733                                                 val = value << 1;
21734                                         } else {
21735                                                 mask = (0x1 << 3);
21736                                                 val = value << 3;
21737                                         }
21738                                         mod_phy_reg(pi,
21739                                                     (core ==
21740                                                      PHY_CORE_0) ? 0x91 : 0x92,
21741                                                     mask, val);
21742                                 }
21743                         }
21744                 }
21745         } else {
21746                 return;
21747         }
21748 }
21749
21750 static void wlc_phy_rssi_cal_nphy_rev3(phy_info_t *pi)
21751 {
21752         u16 classif_state;
21753         u16 clip_state[2];
21754         u16 clip_off[] = { 0xffff, 0xffff };
21755         s32 target_code;
21756         u8 vcm, min_vcm;
21757         u8 vcm_final = 0;
21758         u8 result_idx;
21759         s32 poll_results[8][4] = {
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                 {0, 0, 0, 0}
21768         };
21769         s32 poll_result_core[4] = { 0, 0, 0, 0 };
21770         s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
21771         s32 fine_digital_offset[4];
21772         s32 poll_results_min[4] = { 0, 0, 0, 0 };
21773         s32 min_poll;
21774         u8 vcm_level_max;
21775         u8 core;
21776         u8 wb_cnt;
21777         u8 rssi_type;
21778         u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
21779         u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
21780         u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
21781         u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
21782         u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
21783         u16 NPHY_RfctrlCmd_save;
21784         u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
21785         u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
21786         u8 rxcore_state;
21787         u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
21788         u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
21789         u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
21790         u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
21791
21792         NPHY_REV7_RfctrlOverride3_save = NPHY_REV7_RfctrlOverride4_save =
21793             NPHY_REV7_RfctrlOverride5_save = NPHY_REV7_RfctrlOverride6_save =
21794             NPHY_REV7_RfctrlMiscReg3_save = NPHY_REV7_RfctrlMiscReg4_save =
21795             NPHY_REV7_RfctrlMiscReg5_save = NPHY_REV7_RfctrlMiscReg6_save = 0;
21796
21797         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
21798         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
21799         wlc_phy_clip_det_nphy(pi, 0, clip_state);
21800         wlc_phy_clip_det_nphy(pi, 1, clip_off);
21801
21802         NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
21803         NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
21804         NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
21805         NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
21806         NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
21807         NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
21808         NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
21809         NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
21810         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21811                 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
21812                 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
21813                 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
21814                 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
21815         }
21816         NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
21817         NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
21818         NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
21819         NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
21820         NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
21821         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21822                 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
21823                 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
21824                 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
21825                 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
21826         }
21827         NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
21828         NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
21829
21830         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
21831                                          RADIO_MIMO_CORESEL_ALLRXTX);
21832         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
21833                                          RADIO_MIMO_CORESEL_ALLRXTX);
21834
21835         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21836                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
21837                                                      NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
21838                                                      0, 0, 0);
21839         } else {
21840                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
21841         }
21842
21843         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21844                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
21845                                                      NPHY_REV7_RfctrlOverride_cmd_rx_pu,
21846                                                      1, 0, 0);
21847         } else {
21848                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
21849         }
21850
21851         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21852                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
21853                                                   1, 0, 0,
21854                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
21855                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
21856                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
21857         } else {
21858                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
21859                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
21860         }
21861
21862         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21863                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21864                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
21865                                                           0, 0, 0,
21866                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21867                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 1, 0,
21868                                                           0,
21869                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21870                 } else {
21871                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
21872                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
21873                 }
21874
21875         } else {
21876                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21877                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4),
21878                                                           0, 0, 0,
21879                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21880                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 1, 0,
21881                                                           0,
21882                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21883                 } else {
21884                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
21885                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
21886                 }
21887         }
21888
21889         rxcore_state = wlc_phy_rxcore_getstate_nphy((wlc_phy_t *) pi);
21890
21891         vcm_level_max = 8;
21892
21893         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21894
21895                 if ((rxcore_state & (1 << core)) == 0)
21896                         continue;
21897
21898                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
21899                                                core ==
21900                                                PHY_CORE_0 ?
21901                                                RADIO_MIMO_CORESEL_CORE1 :
21902                                                RADIO_MIMO_CORESEL_CORE2,
21903                                                NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
21904                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
21905                                                core ==
21906                                                PHY_CORE_0 ?
21907                                                RADIO_MIMO_CORESEL_CORE1 :
21908                                                RADIO_MIMO_CORESEL_CORE2,
21909                                                NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
21910
21911                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
21912                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21913
21914                                 mod_radio_reg(pi, (core == PHY_CORE_0) ?
21915                                               RADIO_2057_NB_MASTER_CORE0 :
21916                                               RADIO_2057_NB_MASTER_CORE1,
21917                                               RADIO_2057_VCM_MASK, vcm);
21918                         } else {
21919
21920                                 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
21921                                               ((core ==
21922                                                 PHY_CORE_0) ? RADIO_2056_RX0 :
21923                                                RADIO_2056_RX1),
21924                                               RADIO_2056_VCM_MASK,
21925                                               vcm << RADIO_2056_RSSI_VCM_SHIFT);
21926                         }
21927
21928                         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
21929                                                &poll_results[vcm][0],
21930                                                NPHY_RSSICAL_NPOLL);
21931                 }
21932
21933                 for (result_idx = 0; result_idx < 4; result_idx++) {
21934                         if ((core == result_idx / 2) && (result_idx % 2 == 0)) {
21935
21936                                 min_d = NPHY_RSSICAL_MAXD;
21937                                 min_vcm = 0;
21938                                 min_poll =
21939                                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL +
21940                                     1;
21941                                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
21942                                         curr_d = poll_results[vcm][result_idx] *
21943                                             poll_results[vcm][result_idx] +
21944                                             poll_results[vcm][result_idx + 1] *
21945                                             poll_results[vcm][result_idx + 1];
21946                                         if (curr_d < min_d) {
21947                                                 min_d = curr_d;
21948                                                 min_vcm = vcm;
21949                                         }
21950                                         if (poll_results[vcm][result_idx] <
21951                                             min_poll) {
21952                                                 min_poll =
21953                                                     poll_results[vcm]
21954                                                     [result_idx];
21955                                         }
21956                                 }
21957                                 vcm_final = min_vcm;
21958                                 poll_results_min[result_idx] = min_poll;
21959                         }
21960                 }
21961
21962                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21963                         mod_radio_reg(pi, (core == PHY_CORE_0) ?
21964                                       RADIO_2057_NB_MASTER_CORE0 :
21965                                       RADIO_2057_NB_MASTER_CORE1,
21966                                       RADIO_2057_VCM_MASK, vcm_final);
21967                 } else {
21968                         mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
21969                                       ((core ==
21970                                         PHY_CORE_0) ? RADIO_2056_RX0 :
21971                                        RADIO_2056_RX1), RADIO_2056_VCM_MASK,
21972                                       vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
21973                 }
21974
21975                 for (result_idx = 0; result_idx < 4; result_idx++) {
21976                         if (core == result_idx / 2) {
21977                                 fine_digital_offset[result_idx] =
21978                                     (NPHY_RSSICAL_NB_TARGET *
21979                                      NPHY_RSSICAL_NPOLL) -
21980                                     poll_results[vcm_final][result_idx];
21981                                 if (fine_digital_offset[result_idx] < 0) {
21982                                         fine_digital_offset[result_idx] =
21983                                             ABS(fine_digital_offset
21984                                                 [result_idx]);
21985                                         fine_digital_offset[result_idx] +=
21986                                             (NPHY_RSSICAL_NPOLL / 2);
21987                                         fine_digital_offset[result_idx] /=
21988                                             NPHY_RSSICAL_NPOLL;
21989                                         fine_digital_offset[result_idx] =
21990                                             -fine_digital_offset[result_idx];
21991                                 } else {
21992                                         fine_digital_offset[result_idx] +=
21993                                             (NPHY_RSSICAL_NPOLL / 2);
21994                                         fine_digital_offset[result_idx] /=
21995                                             NPHY_RSSICAL_NPOLL;
21996                                 }
21997
21998                                 if (poll_results_min[result_idx] ==
21999                                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL) {
22000                                         fine_digital_offset[result_idx] =
22001                                             (NPHY_RSSICAL_NB_TARGET -
22002                                              NPHY_RSSICAL_MAXREAD - 1);
22003                                 }
22004
22005                                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
22006                                                                (s8)
22007                                                                fine_digital_offset
22008                                                                [result_idx],
22009                                                                (result_idx /
22010                                                                 2 ==
22011                                                                 0) ?
22012                                                                RADIO_MIMO_CORESEL_CORE1
22013                                                                :
22014                                                                RADIO_MIMO_CORESEL_CORE2,
22015                                                                (result_idx %
22016                                                                 2 ==
22017                                                                 0) ? NPHY_RAIL_I
22018                                                                : NPHY_RAIL_Q,
22019                                                                NPHY_RSSI_SEL_NB);
22020                         }
22021                 }
22022
22023         }
22024
22025         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22026
22027                 if ((rxcore_state & (1 << core)) == 0)
22028                         continue;
22029
22030                 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22031                         if (wb_cnt == 0) {
22032                                 rssi_type = NPHY_RSSI_SEL_W1;
22033                                 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22034                         } else {
22035                                 rssi_type = NPHY_RSSI_SEL_W2;
22036                                 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22037                         }
22038
22039                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22040                                                        core ==
22041                                                        PHY_CORE_0 ?
22042                                                        RADIO_MIMO_CORESEL_CORE1
22043                                                        :
22044                                                        RADIO_MIMO_CORESEL_CORE2,
22045                                                        NPHY_RAIL_I, rssi_type);
22046                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22047                                                        core ==
22048                                                        PHY_CORE_0 ?
22049                                                        RADIO_MIMO_CORESEL_CORE1
22050                                                        :
22051                                                        RADIO_MIMO_CORESEL_CORE2,
22052                                                        NPHY_RAIL_Q, rssi_type);
22053
22054                         wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22055                                                NPHY_RSSICAL_NPOLL);
22056
22057                         for (result_idx = 0; result_idx < 4; result_idx++) {
22058                                 if (core == result_idx / 2) {
22059                                         fine_digital_offset[result_idx] =
22060                                             (target_code * NPHY_RSSICAL_NPOLL) -
22061                                             poll_result_core[result_idx];
22062                                         if (fine_digital_offset[result_idx] < 0) {
22063                                                 fine_digital_offset[result_idx]
22064                                                     =
22065                                                     ABS(fine_digital_offset
22066                                                         [result_idx]);
22067                                                 fine_digital_offset[result_idx]
22068                                                     += (NPHY_RSSICAL_NPOLL / 2);
22069                                                 fine_digital_offset[result_idx]
22070                                                     /= NPHY_RSSICAL_NPOLL;
22071                                                 fine_digital_offset[result_idx]
22072                                                     =
22073                                                     -fine_digital_offset
22074                                                     [result_idx];
22075                                         } else {
22076                                                 fine_digital_offset[result_idx]
22077                                                     += (NPHY_RSSICAL_NPOLL / 2);
22078                                                 fine_digital_offset[result_idx]
22079                                                     /= NPHY_RSSICAL_NPOLL;
22080                                         }
22081
22082                                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
22083                                                                        (s8)
22084                                                                        fine_digital_offset
22085                                                                        [core *
22086                                                                         2],
22087                                                                        (core ==
22088                                                                         PHY_CORE_0)
22089                                                                        ?
22090                                                                        RADIO_MIMO_CORESEL_CORE1
22091                                                                        :
22092                                                                        RADIO_MIMO_CORESEL_CORE2,
22093                                                                        (result_idx
22094                                                                         % 2 ==
22095                                                                         0) ?
22096                                                                        NPHY_RAIL_I
22097                                                                        :
22098                                                                        NPHY_RAIL_Q,
22099                                                                        rssi_type);
22100                                 }
22101                         }
22102
22103                 }
22104         }
22105
22106         write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22107         write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22108
22109         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22110
22111         mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22112         mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22113         mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22114
22115         mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22116         mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22117         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22118
22119         write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22120         write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22121         write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22122         write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22123         write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22124         write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22125         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22126                 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22127                 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22128                 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22129                 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22130         }
22131         write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22132         write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22133         write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22134         write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22135         write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22136         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22137                 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22138                 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22139                 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22140                 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22141         }
22142         write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22143         write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22144
22145         if (CHSPEC_IS2G(pi->radio_chanspec)) {
22146                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22147                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22148                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22149                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22150                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22151                 } else {
22152                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22153                             read_radio_reg(pi,
22154                                            RADIO_2056_RX_RSSI_MISC |
22155                                            RADIO_2056_RX0);
22156                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22157                             read_radio_reg(pi,
22158                                            RADIO_2056_RX_RSSI_MISC |
22159                                            RADIO_2056_RX1);
22160                 }
22161
22162                 pi->rssical_cache.rssical_phyregs_2G[0] =
22163                     read_phy_reg(pi, 0x1a6);
22164                 pi->rssical_cache.rssical_phyregs_2G[1] =
22165                     read_phy_reg(pi, 0x1ac);
22166                 pi->rssical_cache.rssical_phyregs_2G[2] =
22167                     read_phy_reg(pi, 0x1b2);
22168                 pi->rssical_cache.rssical_phyregs_2G[3] =
22169                     read_phy_reg(pi, 0x1b8);
22170                 pi->rssical_cache.rssical_phyregs_2G[4] =
22171                     read_phy_reg(pi, 0x1a4);
22172                 pi->rssical_cache.rssical_phyregs_2G[5] =
22173                     read_phy_reg(pi, 0x1aa);
22174                 pi->rssical_cache.rssical_phyregs_2G[6] =
22175                     read_phy_reg(pi, 0x1b0);
22176                 pi->rssical_cache.rssical_phyregs_2G[7] =
22177                     read_phy_reg(pi, 0x1b6);
22178                 pi->rssical_cache.rssical_phyregs_2G[8] =
22179                     read_phy_reg(pi, 0x1a5);
22180                 pi->rssical_cache.rssical_phyregs_2G[9] =
22181                     read_phy_reg(pi, 0x1ab);
22182                 pi->rssical_cache.rssical_phyregs_2G[10] =
22183                     read_phy_reg(pi, 0x1b1);
22184                 pi->rssical_cache.rssical_phyregs_2G[11] =
22185                     read_phy_reg(pi, 0x1b7);
22186
22187                 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22188         } else {
22189                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22190                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22191                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22192                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22193                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22194                 } else {
22195                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22196                             read_radio_reg(pi,
22197                                            RADIO_2056_RX_RSSI_MISC |
22198                                            RADIO_2056_RX0);
22199                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22200                             read_radio_reg(pi,
22201                                            RADIO_2056_RX_RSSI_MISC |
22202                                            RADIO_2056_RX1);
22203                 }
22204
22205                 pi->rssical_cache.rssical_phyregs_5G[0] =
22206                     read_phy_reg(pi, 0x1a6);
22207                 pi->rssical_cache.rssical_phyregs_5G[1] =
22208                     read_phy_reg(pi, 0x1ac);
22209                 pi->rssical_cache.rssical_phyregs_5G[2] =
22210                     read_phy_reg(pi, 0x1b2);
22211                 pi->rssical_cache.rssical_phyregs_5G[3] =
22212                     read_phy_reg(pi, 0x1b8);
22213                 pi->rssical_cache.rssical_phyregs_5G[4] =
22214                     read_phy_reg(pi, 0x1a4);
22215                 pi->rssical_cache.rssical_phyregs_5G[5] =
22216                     read_phy_reg(pi, 0x1aa);
22217                 pi->rssical_cache.rssical_phyregs_5G[6] =
22218                     read_phy_reg(pi, 0x1b0);
22219                 pi->rssical_cache.rssical_phyregs_5G[7] =
22220                     read_phy_reg(pi, 0x1b6);
22221                 pi->rssical_cache.rssical_phyregs_5G[8] =
22222                     read_phy_reg(pi, 0x1a5);
22223                 pi->rssical_cache.rssical_phyregs_5G[9] =
22224                     read_phy_reg(pi, 0x1ab);
22225                 pi->rssical_cache.rssical_phyregs_5G[10] =
22226                     read_phy_reg(pi, 0x1b1);
22227                 pi->rssical_cache.rssical_phyregs_5G[11] =
22228                     read_phy_reg(pi, 0x1b7);
22229
22230                 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22231         }
22232
22233         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22234         wlc_phy_clip_det_nphy(pi, 1, clip_state);
22235 }
22236
22237 static void wlc_phy_restore_rssical_nphy(phy_info_t *pi)
22238 {
22239         ASSERT(NREV_GE(pi->pubpi.phy_rev, 3));
22240
22241         if (CHSPEC_IS2G(pi->radio_chanspec)) {
22242                 if (pi->nphy_rssical_chanspec_2G == 0)
22243                         return;
22244
22245                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22246                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
22247                                       RADIO_2057_VCM_MASK,
22248                                       pi->rssical_cache.
22249                                       rssical_radio_regs_2G[0]);
22250                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
22251                                       RADIO_2057_VCM_MASK,
22252                                       pi->rssical_cache.
22253                                       rssical_radio_regs_2G[1]);
22254                 } else {
22255                         mod_radio_reg(pi,
22256                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
22257                                       RADIO_2056_VCM_MASK,
22258                                       pi->rssical_cache.
22259                                       rssical_radio_regs_2G[0]);
22260                         mod_radio_reg(pi,
22261                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
22262                                       RADIO_2056_VCM_MASK,
22263                                       pi->rssical_cache.
22264                                       rssical_radio_regs_2G[1]);
22265                 }
22266
22267                 write_phy_reg(pi, 0x1a6,
22268                               pi->rssical_cache.rssical_phyregs_2G[0]);
22269                 write_phy_reg(pi, 0x1ac,
22270                               pi->rssical_cache.rssical_phyregs_2G[1]);
22271                 write_phy_reg(pi, 0x1b2,
22272                               pi->rssical_cache.rssical_phyregs_2G[2]);
22273                 write_phy_reg(pi, 0x1b8,
22274                               pi->rssical_cache.rssical_phyregs_2G[3]);
22275                 write_phy_reg(pi, 0x1a4,
22276                               pi->rssical_cache.rssical_phyregs_2G[4]);
22277                 write_phy_reg(pi, 0x1aa,
22278                               pi->rssical_cache.rssical_phyregs_2G[5]);
22279                 write_phy_reg(pi, 0x1b0,
22280                               pi->rssical_cache.rssical_phyregs_2G[6]);
22281                 write_phy_reg(pi, 0x1b6,
22282                               pi->rssical_cache.rssical_phyregs_2G[7]);
22283                 write_phy_reg(pi, 0x1a5,
22284                               pi->rssical_cache.rssical_phyregs_2G[8]);
22285                 write_phy_reg(pi, 0x1ab,
22286                               pi->rssical_cache.rssical_phyregs_2G[9]);
22287                 write_phy_reg(pi, 0x1b1,
22288                               pi->rssical_cache.rssical_phyregs_2G[10]);
22289                 write_phy_reg(pi, 0x1b7,
22290                               pi->rssical_cache.rssical_phyregs_2G[11]);
22291
22292         } else {
22293                 if (pi->nphy_rssical_chanspec_5G == 0)
22294                         return;
22295
22296                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22297                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
22298                                       RADIO_2057_VCM_MASK,
22299                                       pi->rssical_cache.
22300                                       rssical_radio_regs_5G[0]);
22301                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
22302                                       RADIO_2057_VCM_MASK,
22303                                       pi->rssical_cache.
22304                                       rssical_radio_regs_5G[1]);
22305                 } else {
22306                         mod_radio_reg(pi,
22307                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
22308                                       RADIO_2056_VCM_MASK,
22309                                       pi->rssical_cache.
22310                                       rssical_radio_regs_5G[0]);
22311                         mod_radio_reg(pi,
22312                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
22313                                       RADIO_2056_VCM_MASK,
22314                                       pi->rssical_cache.
22315                                       rssical_radio_regs_5G[1]);
22316                 }
22317
22318                 write_phy_reg(pi, 0x1a6,
22319                               pi->rssical_cache.rssical_phyregs_5G[0]);
22320                 write_phy_reg(pi, 0x1ac,
22321                               pi->rssical_cache.rssical_phyregs_5G[1]);
22322                 write_phy_reg(pi, 0x1b2,
22323                               pi->rssical_cache.rssical_phyregs_5G[2]);
22324                 write_phy_reg(pi, 0x1b8,
22325                               pi->rssical_cache.rssical_phyregs_5G[3]);
22326                 write_phy_reg(pi, 0x1a4,
22327                               pi->rssical_cache.rssical_phyregs_5G[4]);
22328                 write_phy_reg(pi, 0x1aa,
22329                               pi->rssical_cache.rssical_phyregs_5G[5]);
22330                 write_phy_reg(pi, 0x1b0,
22331                               pi->rssical_cache.rssical_phyregs_5G[6]);
22332                 write_phy_reg(pi, 0x1b6,
22333                               pi->rssical_cache.rssical_phyregs_5G[7]);
22334                 write_phy_reg(pi, 0x1a5,
22335                               pi->rssical_cache.rssical_phyregs_5G[8]);
22336                 write_phy_reg(pi, 0x1ab,
22337                               pi->rssical_cache.rssical_phyregs_5G[9]);
22338                 write_phy_reg(pi, 0x1b1,
22339                               pi->rssical_cache.rssical_phyregs_5G[10]);
22340                 write_phy_reg(pi, 0x1b7,
22341                               pi->rssical_cache.rssical_phyregs_5G[11]);
22342         }
22343 }
22344
22345 static u16
22346 wlc_phy_gen_load_samples_nphy(phy_info_t *pi, u32 f_kHz, u16 max_val,
22347                               u8 dac_test_mode)
22348 {
22349         u8 phy_bw, is_phybw40;
22350         u16 num_samps, t, spur;
22351         fixed theta = 0, rot = 0;
22352         u32 tbl_len;
22353         cs32 *tone_buf = NULL;
22354
22355         is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
22356         phy_bw = (is_phybw40 == 1) ? 40 : 20;
22357         tbl_len = (phy_bw << 3);
22358
22359         if (dac_test_mode == 1) {
22360                 spur = read_phy_reg(pi, 0x01);
22361                 spur = (spur >> 15) & 1;
22362                 phy_bw = (spur == 1) ? 82 : 80;
22363                 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
22364
22365                 tbl_len = (phy_bw << 1);
22366         }
22367
22368         tone_buf = kmalloc(sizeof(cs32) * tbl_len, GFP_ATOMIC);
22369         if (tone_buf == NULL) {
22370                 return 0;
22371         }
22372
22373         num_samps = (u16) tbl_len;
22374         rot = FIXED((f_kHz * 36) / phy_bw) / 100;
22375         theta = 0;
22376
22377         for (t = 0; t < num_samps; t++) {
22378
22379                 wlc_phy_cordic(theta, &tone_buf[t]);
22380
22381                 theta += rot;
22382
22383                 tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
22384                 tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
22385         }
22386
22387         wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
22388
22389         if (tone_buf != NULL)
22390                 kfree(tone_buf);
22391
22392         return num_samps;
22393 }
22394
22395 int
22396 wlc_phy_tx_tone_nphy(phy_info_t *pi, u32 f_kHz, u16 max_val,
22397                      u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
22398 {
22399         u16 num_samps;
22400         u16 loops = 0xffff;
22401         u16 wait = 0;
22402
22403         num_samps =
22404                 wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val, dac_test_mode);
22405         if (num_samps == 0) {
22406                 return BCME_ERROR;
22407         }
22408
22409         wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
22410                                 dac_test_mode, modify_bbmult);
22411
22412         return BCME_OK;
22413 }
22414
22415 static void
22416 wlc_phy_loadsampletable_nphy(phy_info_t *pi, cs32 *tone_buf,
22417                              u16 num_samps)
22418 {
22419         u16 t;
22420         u32 *data_buf = NULL;
22421
22422         data_buf = kmalloc(sizeof(u32) * num_samps, GFP_ATOMIC);
22423         if (data_buf == NULL) {
22424                 return;
22425         }
22426
22427         if (pi->phyhang_avoid)
22428                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
22429
22430         for (t = 0; t < num_samps; t++) {
22431                 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
22432                     (((unsigned int)tone_buf[t].q) & 0x3ff);
22433         }
22434         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
22435                                  data_buf);
22436
22437         if (data_buf != NULL)
22438                 kfree(data_buf);
22439
22440         if (pi->phyhang_avoid)
22441                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
22442 }
22443
22444 static void
22445 wlc_phy_runsamples_nphy(phy_info_t *pi, u16 num_samps, u16 loops,
22446                         u16 wait, u8 iqmode, u8 dac_test_mode,
22447                         bool modify_bbmult)
22448 {
22449         u16 bb_mult;
22450         u8 phy_bw, sample_cmd;
22451         u16 orig_RfseqCoreActv;
22452         u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
22453             lpf_bw_ctl_miscreg4;
22454
22455         if (pi->phyhang_avoid)
22456                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
22457
22458         phy_bw = 20;
22459         if (CHSPEC_IS40(pi->radio_chanspec))
22460                 phy_bw = 40;
22461
22462         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22463
22464                 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
22465                 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
22466                 if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
22467                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
22468                             (0x7 << 8);
22469                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
22470                             (0x7 << 8);
22471                 } else {
22472                         wlc_phy_rfctrl_override_nphy_rev7(pi,
22473                                                           (0x1 << 7),
22474                                                           wlc_phy_read_lpf_bw_ctl_nphy
22475                                                           (pi, 0), 0, 0,
22476                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
22477
22478                         pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
22479
22480                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
22481                             (0x7 << 8);
22482                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
22483                             (0x7 << 8);
22484                 }
22485         }
22486
22487         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
22488
22489                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
22490                                         &bb_mult);
22491                 pi->nphy_bb_mult_save =
22492                     BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
22493         }
22494
22495         if (modify_bbmult) {
22496                 bb_mult = (phy_bw == 20) ? 100 : 71;
22497                 bb_mult = (bb_mult << 8) + bb_mult;
22498                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
22499                                          &bb_mult);
22500         }
22501
22502         if (pi->phyhang_avoid)
22503                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
22504
22505         write_phy_reg(pi, 0xc6, num_samps - 1);
22506
22507         if (loops != 0xffff) {
22508                 write_phy_reg(pi, 0xc4, loops - 1);
22509         } else {
22510                 write_phy_reg(pi, 0xc4, loops);
22511         }
22512         write_phy_reg(pi, 0xc5, wait);
22513
22514         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
22515         or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
22516         if (iqmode) {
22517
22518                 and_phy_reg(pi, 0xc2, 0x7FFF);
22519
22520                 or_phy_reg(pi, 0xc2, 0x8000);
22521         } else {
22522
22523                 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
22524                 write_phy_reg(pi, 0xc3, sample_cmd);
22525         }
22526
22527         SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
22528
22529         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
22530 }
22531
22532 void wlc_phy_stopplayback_nphy(phy_info_t *pi)
22533 {
22534         u16 playback_status;
22535         u16 bb_mult;
22536
22537         if (pi->phyhang_avoid)
22538                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
22539
22540         playback_status = read_phy_reg(pi, 0xc7);
22541         if (playback_status & 0x1) {
22542                 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
22543         } else if (playback_status & 0x2) {
22544
22545                 and_phy_reg(pi, 0xc2,
22546                             (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
22547         }
22548
22549         and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
22550
22551         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
22552
22553                 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
22554                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
22555                                          &bb_mult);
22556
22557                 pi->nphy_bb_mult_save = 0;
22558         }
22559
22560         if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
22561                 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
22562                         wlc_phy_rfctrl_override_nphy_rev7(pi,
22563                                                           (0x1 << 7),
22564                                                           0, 0, 1,
22565                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
22566                         pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
22567                 }
22568         }
22569
22570         if (pi->phyhang_avoid)
22571                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
22572 }
22573
22574 nphy_txgains_t wlc_phy_get_tx_gain_nphy(phy_info_t *pi)
22575 {
22576         u16 base_idx[2], curr_gain[2];
22577         u8 core_no;
22578         nphy_txgains_t target_gain;
22579         u32 *tx_pwrctrl_tbl = NULL;
22580
22581         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
22582                 if (pi->phyhang_avoid)
22583                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
22584
22585                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
22586                                         curr_gain);
22587
22588                 if (pi->phyhang_avoid)
22589                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
22590
22591                 for (core_no = 0; core_no < 2; core_no++) {
22592                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22593                                 target_gain.ipa[core_no] =
22594                                     curr_gain[core_no] & 0x0007;
22595                                 target_gain.pad[core_no] =
22596                                     ((curr_gain[core_no] & 0x00F8) >> 3);
22597                                 target_gain.pga[core_no] =
22598                                     ((curr_gain[core_no] & 0x0F00) >> 8);
22599                                 target_gain.txgm[core_no] =
22600                                     ((curr_gain[core_no] & 0x7000) >> 12);
22601                                 target_gain.txlpf[core_no] =
22602                                     ((curr_gain[core_no] & 0x8000) >> 15);
22603                         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22604                                 target_gain.ipa[core_no] =
22605                                     curr_gain[core_no] & 0x000F;
22606                                 target_gain.pad[core_no] =
22607                                     ((curr_gain[core_no] & 0x00F0) >> 4);
22608                                 target_gain.pga[core_no] =
22609                                     ((curr_gain[core_no] & 0x0F00) >> 8);
22610                                 target_gain.txgm[core_no] =
22611                                     ((curr_gain[core_no] & 0x7000) >> 12);
22612                         } else {
22613                                 target_gain.ipa[core_no] =
22614                                     curr_gain[core_no] & 0x0003;
22615                                 target_gain.pad[core_no] =
22616                                     ((curr_gain[core_no] & 0x000C) >> 2);
22617                                 target_gain.pga[core_no] =
22618                                     ((curr_gain[core_no] & 0x0070) >> 4);
22619                                 target_gain.txgm[core_no] =
22620                                     ((curr_gain[core_no] & 0x0380) >> 7);
22621                         }
22622                 }
22623         } else {
22624                 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
22625                 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
22626                 for (core_no = 0; core_no < 2; core_no++) {
22627                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22628                                 if (PHY_IPA(pi)) {
22629                                         tx_pwrctrl_tbl =
22630                                             wlc_phy_get_ipa_gaintbl_nphy(pi);
22631                                 } else {
22632                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22633                                                 if NREV_IS
22634                                                         (pi->pubpi.phy_rev, 3) {
22635                                                         tx_pwrctrl_tbl =
22636                                                             nphy_tpc_5GHz_txgain_rev3;
22637                                                 } else if NREV_IS
22638                                                         (pi->pubpi.phy_rev, 4) {
22639                                                         tx_pwrctrl_tbl =
22640                                                             (pi->srom_fem5g.
22641                                                              extpagain ==
22642                                                              3) ?
22643                                                             nphy_tpc_5GHz_txgain_HiPwrEPA
22644                                                             :
22645                                                             nphy_tpc_5GHz_txgain_rev4;
22646                                                 } else {
22647                                                         tx_pwrctrl_tbl =
22648                                                             nphy_tpc_5GHz_txgain_rev5;
22649                                                 }
22650                                         } else {
22651                                                 if (NREV_GE
22652                                                     (pi->pubpi.phy_rev, 7)) {
22653                                                         if (pi->pubpi.
22654                                                             radiorev == 3) {
22655                                                                 tx_pwrctrl_tbl =
22656                                                                     nphy_tpc_txgain_epa_2057rev3;
22657                                                         } else if (pi->pubpi.
22658                                                                    radiorev ==
22659                                                                    5) {
22660                                                                 tx_pwrctrl_tbl =
22661                                                                     nphy_tpc_txgain_epa_2057rev5;
22662                                                         }
22663
22664                                                 } else {
22665                                                         if (NREV_GE
22666                                                             (pi->pubpi.phy_rev,
22667                                                              5)
22668                                                             && (pi->srom_fem2g.
22669                                                                 extpagain ==
22670                                                                 3)) {
22671                                                                 tx_pwrctrl_tbl =
22672                                                                     nphy_tpc_txgain_HiPwrEPA;
22673                                                         } else {
22674                                                                 tx_pwrctrl_tbl =
22675                                                                     nphy_tpc_txgain_rev3;
22676                                                         }
22677                                                 }
22678                                         }
22679                                 }
22680                                 if NREV_GE
22681                                         (pi->pubpi.phy_rev, 7) {
22682                                         target_gain.ipa[core_no] =
22683                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22684                                              >> 16) & 0x7;
22685                                         target_gain.pad[core_no] =
22686                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22687                                              >> 19) & 0x1f;
22688                                         target_gain.pga[core_no] =
22689                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22690                                              >> 24) & 0xf;
22691                                         target_gain.txgm[core_no] =
22692                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22693                                              >> 28) & 0x7;
22694                                         target_gain.txlpf[core_no] =
22695                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22696                                              >> 31) & 0x1;
22697                                 } else {
22698                                         target_gain.ipa[core_no] =
22699                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22700                                              >> 16) & 0xf;
22701                                         target_gain.pad[core_no] =
22702                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22703                                              >> 20) & 0xf;
22704                                         target_gain.pga[core_no] =
22705                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22706                                              >> 24) & 0xf;
22707                                         target_gain.txgm[core_no] =
22708                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22709                                              >> 28) & 0x7;
22710                                 }
22711                         } else {
22712                                 target_gain.ipa[core_no] =
22713                                     (nphy_tpc_txgain[base_idx[core_no]] >> 16) &
22714                                     0x3;
22715                                 target_gain.pad[core_no] =
22716                                     (nphy_tpc_txgain[base_idx[core_no]] >> 18) &
22717                                     0x3;
22718                                 target_gain.pga[core_no] =
22719                                     (nphy_tpc_txgain[base_idx[core_no]] >> 20) &
22720                                     0x7;
22721                                 target_gain.txgm[core_no] =
22722                                     (nphy_tpc_txgain[base_idx[core_no]] >> 23) &
22723                                     0x7;
22724                         }
22725                 }
22726         }
22727
22728         return target_gain;
22729 }
22730
22731 static void
22732 wlc_phy_iqcal_gainparams_nphy(phy_info_t *pi, u16 core_no,
22733                               nphy_txgains_t target_gain,
22734                               nphy_iqcal_params_t *params)
22735 {
22736         u8 k;
22737         int idx;
22738         u16 gain_index;
22739         u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
22740
22741         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22742                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22743                         params->txlpf = target_gain.txlpf[core_no];
22744                 }
22745                 params->txgm = target_gain.txgm[core_no];
22746                 params->pga = target_gain.pga[core_no];
22747                 params->pad = target_gain.pad[core_no];
22748                 params->ipa = target_gain.ipa[core_no];
22749                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22750                         params->cal_gain =
22751                             ((params->txlpf << 15) | (params->
22752                                                       txgm << 12) | (params->
22753                                                                      pga << 8) |
22754                              (params->pad << 3) | (params->ipa));
22755                 } else {
22756                         params->cal_gain =
22757                             ((params->txgm << 12) | (params->
22758                                                      pga << 8) | (params->
22759                                                                   pad << 4) |
22760                              (params->ipa));
22761                 }
22762                 params->ncorr[0] = 0x79;
22763                 params->ncorr[1] = 0x79;
22764                 params->ncorr[2] = 0x79;
22765                 params->ncorr[3] = 0x79;
22766                 params->ncorr[4] = 0x79;
22767         } else {
22768
22769                 gain_index = ((target_gain.pad[core_no] << 0) |
22770                               (target_gain.pga[core_no] << 4) | (target_gain.
22771                                                                  txgm[core_no]
22772                                                                  << 8));
22773
22774                 idx = -1;
22775                 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
22776                         if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
22777                             gain_index) {
22778                                 idx = k;
22779                                 break;
22780                         }
22781                 }
22782
22783                 ASSERT(idx != -1);
22784
22785                 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
22786                 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
22787                 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
22788                 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
22789                                     (params->pad << 2));
22790                 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
22791                 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
22792                 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
22793                 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
22794         }
22795 }
22796
22797 static void wlc_phy_txcal_radio_setup_nphy(phy_info_t *pi)
22798 {
22799         u16 jtag_core, core;
22800
22801         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22802
22803                 for (core = 0; core <= 1; core++) {
22804
22805                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
22806                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22807                                             TX_SSI_MASTER);
22808
22809                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
22810                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22811                                             IQCAL_VCM_HG);
22812
22813                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
22814                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22815                                             IQCAL_IDAC);
22816
22817                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
22818                             READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM);
22819
22820                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
22821
22822                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
22823                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22824                                             TX_SSI_MUX);
22825
22826                         if (pi->pubpi.radiorev != 5)
22827                                 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
22828                                     READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22829                                                     TSSIA);
22830
22831                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
22832                             READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
22833
22834                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
22835                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22836                                             TSSI_MISC1);
22837
22838                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22839                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22840                                                  TX_SSI_MASTER, 0x0a);
22841                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22842                                                  IQCAL_VCM_HG, 0x43);
22843                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22844                                                  IQCAL_IDAC, 0x55);
22845                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22846                                                  TSSI_VCM, 0x00);
22847                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22848                                                  TSSIG, 0x00);
22849                                 if (pi->use_int_tx_iqlo_cal_nphy) {
22850                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
22851                                                          core, TX_SSI_MUX, 0x4);
22852                                         if (!
22853                                             (pi->
22854                                              internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
22855
22856                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22857                                                                  TX, core,
22858                                                                  TSSIA, 0x31);
22859                                         } else {
22860
22861                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22862                                                                  TX, core,
22863                                                                  TSSIA, 0x21);
22864                                         }
22865                                 }
22866                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22867                                                  TSSI_MISC1, 0x00);
22868                         } else {
22869                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22870                                                  TX_SSI_MASTER, 0x06);
22871                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22872                                                  IQCAL_VCM_HG, 0x43);
22873                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22874                                                  IQCAL_IDAC, 0x55);
22875                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22876                                                  TSSI_VCM, 0x00);
22877
22878                                 if (pi->pubpi.radiorev != 5)
22879                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
22880                                                          core, TSSIA, 0x00);
22881                                 if (pi->use_int_tx_iqlo_cal_nphy) {
22882                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
22883                                                          core, TX_SSI_MUX,
22884                                                          0x06);
22885                                         if (!
22886                                             (pi->
22887                                              internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
22888
22889                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22890                                                                  TX, core,
22891                                                                  TSSIG, 0x31);
22892                                         } else {
22893
22894                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22895                                                                  TX, core,
22896                                                                  TSSIG, 0x21);
22897                                         }
22898                                 }
22899                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22900                                                  TSSI_MISC1, 0x00);
22901                         }
22902                 }
22903         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22904
22905                 for (core = 0; core <= 1; core++) {
22906                         jtag_core =
22907                             (core ==
22908                              PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
22909
22910                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
22911                             read_radio_reg(pi,
22912                                            RADIO_2056_TX_TX_SSI_MASTER |
22913                                            jtag_core);
22914
22915                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
22916                             read_radio_reg(pi,
22917                                            RADIO_2056_TX_IQCAL_VCM_HG |
22918                                            jtag_core);
22919
22920                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
22921                             read_radio_reg(pi,
22922                                            RADIO_2056_TX_IQCAL_IDAC |
22923                                            jtag_core);
22924
22925                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
22926                             read_radio_reg(pi,
22927                                            RADIO_2056_TX_TSSI_VCM | jtag_core);
22928
22929                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
22930                             read_radio_reg(pi,
22931                                            RADIO_2056_TX_TX_AMP_DET |
22932                                            jtag_core);
22933
22934                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
22935                             read_radio_reg(pi,
22936                                            RADIO_2056_TX_TX_SSI_MUX |
22937                                            jtag_core);
22938
22939                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
22940                             read_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core);
22941
22942                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
22943                             read_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core);
22944
22945                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
22946                             read_radio_reg(pi,
22947                                            RADIO_2056_TX_TSSI_MISC1 |
22948                                            jtag_core);
22949
22950                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
22951                             read_radio_reg(pi,
22952                                            RADIO_2056_TX_TSSI_MISC2 |
22953                                            jtag_core);
22954
22955                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
22956                             read_radio_reg(pi,
22957                                            RADIO_2056_TX_TSSI_MISC3 |
22958                                            jtag_core);
22959
22960                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22961                                 write_radio_reg(pi,
22962                                                 RADIO_2056_TX_TX_SSI_MASTER |
22963                                                 jtag_core, 0x0a);
22964                                 write_radio_reg(pi,
22965                                                 RADIO_2056_TX_IQCAL_VCM_HG |
22966                                                 jtag_core, 0x40);
22967                                 write_radio_reg(pi,
22968                                                 RADIO_2056_TX_IQCAL_IDAC |
22969                                                 jtag_core, 0x55);
22970                                 write_radio_reg(pi,
22971                                                 RADIO_2056_TX_TSSI_VCM |
22972                                                 jtag_core, 0x00);
22973                                 write_radio_reg(pi,
22974                                                 RADIO_2056_TX_TX_AMP_DET |
22975                                                 jtag_core, 0x00);
22976
22977                                 if (PHY_IPA(pi)) {
22978                                         write_radio_reg(pi,
22979                                                         RADIO_2056_TX_TX_SSI_MUX
22980                                                         | jtag_core, 0x4);
22981                                         write_radio_reg(pi,
22982                                                         RADIO_2056_TX_TSSIA |
22983                                                         jtag_core, 0x1);
22984                                 } else {
22985                                         write_radio_reg(pi,
22986                                                         RADIO_2056_TX_TX_SSI_MUX
22987                                                         | jtag_core, 0x00);
22988                                         write_radio_reg(pi,
22989                                                         RADIO_2056_TX_TSSIA |
22990                                                         jtag_core, 0x2f);
22991                                 }
22992                                 write_radio_reg(pi,
22993                                                 RADIO_2056_TX_TSSIG | jtag_core,
22994                                                 0x00);
22995                                 write_radio_reg(pi,
22996                                                 RADIO_2056_TX_TSSI_MISC1 |
22997                                                 jtag_core, 0x00);
22998
22999                                 write_radio_reg(pi,
23000                                                 RADIO_2056_TX_TSSI_MISC2 |
23001                                                 jtag_core, 0x00);
23002                                 write_radio_reg(pi,
23003                                                 RADIO_2056_TX_TSSI_MISC3 |
23004                                                 jtag_core, 0x00);
23005                         } else {
23006                                 write_radio_reg(pi,
23007                                                 RADIO_2056_TX_TX_SSI_MASTER |
23008                                                 jtag_core, 0x06);
23009                                 write_radio_reg(pi,
23010                                                 RADIO_2056_TX_IQCAL_VCM_HG |
23011                                                 jtag_core, 0x40);
23012                                 write_radio_reg(pi,
23013                                                 RADIO_2056_TX_IQCAL_IDAC |
23014                                                 jtag_core, 0x55);
23015                                 write_radio_reg(pi,
23016                                                 RADIO_2056_TX_TSSI_VCM |
23017                                                 jtag_core, 0x00);
23018                                 write_radio_reg(pi,
23019                                                 RADIO_2056_TX_TX_AMP_DET |
23020                                                 jtag_core, 0x00);
23021                                 write_radio_reg(pi,
23022                                                 RADIO_2056_TX_TSSIA | jtag_core,
23023                                                 0x00);
23024
23025                                 if (PHY_IPA(pi)) {
23026
23027                                         write_radio_reg(pi,
23028                                                         RADIO_2056_TX_TX_SSI_MUX
23029                                                         | jtag_core, 0x06);
23030                                         if (NREV_LT(pi->pubpi.phy_rev, 5)) {
23031
23032                                                 write_radio_reg(pi,
23033                                                                 RADIO_2056_TX_TSSIG
23034                                                                 | jtag_core,
23035                                                                 0x11);
23036                                         } else {
23037
23038                                                 write_radio_reg(pi,
23039                                                                 RADIO_2056_TX_TSSIG
23040                                                                 | jtag_core,
23041                                                                 0x1);
23042                                         }
23043                                 } else {
23044                                         write_radio_reg(pi,
23045                                                         RADIO_2056_TX_TX_SSI_MUX
23046                                                         | jtag_core, 0x00);
23047                                         write_radio_reg(pi,
23048                                                         RADIO_2056_TX_TSSIG |
23049                                                         jtag_core, 0x20);
23050                                 }
23051
23052                                 write_radio_reg(pi,
23053                                                 RADIO_2056_TX_TSSI_MISC1 |
23054                                                 jtag_core, 0x00);
23055                                 write_radio_reg(pi,
23056                                                 RADIO_2056_TX_TSSI_MISC2 |
23057                                                 jtag_core, 0x00);
23058                                 write_radio_reg(pi,
23059                                                 RADIO_2056_TX_TSSI_MISC3 |
23060                                                 jtag_core, 0x00);
23061                         }
23062                 }
23063         } else {
23064
23065                 pi->tx_rx_cal_radio_saveregs[0] =
23066                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23067                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23068                 pi->tx_rx_cal_radio_saveregs[1] =
23069                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23070                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23071
23072                 pi->tx_rx_cal_radio_saveregs[2] =
23073                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23074                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23075                 pi->tx_rx_cal_radio_saveregs[3] =
23076                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23077                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23078
23079                 pi->tx_rx_cal_radio_saveregs[4] =
23080                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23081                 pi->tx_rx_cal_radio_saveregs[5] =
23082                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23083
23084                 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23085                     0) {
23086
23087                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23088                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23089                 } else {
23090
23091                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23092                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23093                 }
23094
23095                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23096
23097                         or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23098                         or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23099                 } else {
23100
23101                         and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23102                         and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23103                 }
23104         }
23105 }
23106
23107 static void wlc_phy_txcal_radio_cleanup_nphy(phy_info_t *pi)
23108 {
23109         u16 jtag_core, core;
23110
23111         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23112                 for (core = 0; core <= 1; core++) {
23113
23114                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23115                                          TX_SSI_MASTER,
23116                                          pi->
23117                                          tx_rx_cal_radio_saveregs[(core * 11) +
23118                                                                   0]);
23119
23120                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23121                                          pi->
23122                                          tx_rx_cal_radio_saveregs[(core * 11) +
23123                                                                   1]);
23124
23125                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23126                                          pi->
23127                                          tx_rx_cal_radio_saveregs[(core * 11) +
23128                                                                   2]);
23129
23130                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23131                                          pi->
23132                                          tx_rx_cal_radio_saveregs[(core * 11) +
23133                                                                   3]);
23134
23135                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23136                                          pi->
23137                                          tx_rx_cal_radio_saveregs[(core * 11) +
23138                                                                   5]);
23139
23140                         if (pi->pubpi.radiorev != 5)
23141                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23142                                                  TSSIA,
23143                                                  pi->
23144                                                  tx_rx_cal_radio_saveregs[(core
23145                                                                            *
23146                                                                            11) +
23147                                                                           6]);
23148
23149                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23150                                          pi->
23151                                          tx_rx_cal_radio_saveregs[(core * 11) +
23152                                                                   7]);
23153
23154                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23155                                          pi->
23156                                          tx_rx_cal_radio_saveregs[(core * 11) +
23157                                                                   8]);
23158                 }
23159         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23160                 for (core = 0; core <= 1; core++) {
23161                         jtag_core =
23162                             (core ==
23163                              PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23164
23165                         write_radio_reg(pi,
23166                                         RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23167                                         pi->
23168                                         tx_rx_cal_radio_saveregs[(core * 11) +
23169                                                                  0]);
23170
23171                         write_radio_reg(pi,
23172                                         RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23173                                         pi->
23174                                         tx_rx_cal_radio_saveregs[(core * 11) +
23175                                                                  1]);
23176
23177                         write_radio_reg(pi,
23178                                         RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23179                                         pi->
23180                                         tx_rx_cal_radio_saveregs[(core * 11) +
23181                                                                  2]);
23182
23183                         write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23184                                         pi->
23185                                         tx_rx_cal_radio_saveregs[(core * 11) +
23186                                                                  3]);
23187
23188                         write_radio_reg(pi,
23189                                         RADIO_2056_TX_TX_AMP_DET | jtag_core,
23190                                         pi->
23191                                         tx_rx_cal_radio_saveregs[(core * 11) +
23192                                                                  4]);
23193
23194                         write_radio_reg(pi,
23195                                         RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23196                                         pi->
23197                                         tx_rx_cal_radio_saveregs[(core * 11) +
23198                                                                  5]);
23199
23200                         write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23201                                         pi->
23202                                         tx_rx_cal_radio_saveregs[(core * 11) +
23203                                                                  6]);
23204
23205                         write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23206                                         pi->
23207                                         tx_rx_cal_radio_saveregs[(core * 11) +
23208                                                                  7]);
23209
23210                         write_radio_reg(pi,
23211                                         RADIO_2056_TX_TSSI_MISC1 | jtag_core,
23212                                         pi->
23213                                         tx_rx_cal_radio_saveregs[(core * 11) +
23214                                                                  8]);
23215
23216                         write_radio_reg(pi,
23217                                         RADIO_2056_TX_TSSI_MISC2 | jtag_core,
23218                                         pi->
23219                                         tx_rx_cal_radio_saveregs[(core * 11) +
23220                                                                  9]);
23221
23222                         write_radio_reg(pi,
23223                                         RADIO_2056_TX_TSSI_MISC3 | jtag_core,
23224                                         pi->
23225                                         tx_rx_cal_radio_saveregs[(core * 11) +
23226                                                                  10]);
23227                 }
23228         } else {
23229
23230                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
23231                                 pi->tx_rx_cal_radio_saveregs[0]);
23232                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
23233                                 pi->tx_rx_cal_radio_saveregs[1]);
23234                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
23235                                 pi->tx_rx_cal_radio_saveregs[2]);
23236                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
23237                                 pi->tx_rx_cal_radio_saveregs[3]);
23238                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
23239                                 pi->tx_rx_cal_radio_saveregs[4]);
23240                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
23241                                 pi->tx_rx_cal_radio_saveregs[5]);
23242         }
23243 }
23244
23245 static void wlc_phy_txcal_physetup_nphy(phy_info_t *pi)
23246 {
23247         u16 val, mask;
23248
23249         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23250                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23251                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23252
23253                 mask = ((0x3 << 8) | (0x3 << 10));
23254                 val = (0x2 << 8);
23255                 val |= (0x2 << 10);
23256                 mod_phy_reg(pi, 0xa6, mask, val);
23257                 mod_phy_reg(pi, 0xa7, mask, val);
23258
23259                 val = read_phy_reg(pi, 0x8f);
23260                 pi->tx_rx_cal_phy_saveregs[2] = val;
23261                 val |= ((0x1 << 9) | (0x1 << 10));
23262                 write_phy_reg(pi, 0x8f, val);
23263
23264                 val = read_phy_reg(pi, 0xa5);
23265                 pi->tx_rx_cal_phy_saveregs[3] = val;
23266                 val |= ((0x1 << 9) | (0x1 << 10));
23267                 write_phy_reg(pi, 0xa5, val);
23268
23269                 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
23270                 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23271
23272                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23273                                         &val);
23274                 pi->tx_rx_cal_phy_saveregs[5] = val;
23275                 val = 0;
23276                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23277                                          &val);
23278
23279                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23280                                         &val);
23281                 pi->tx_rx_cal_phy_saveregs[6] = val;
23282                 val = 0;
23283                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23284                                          &val);
23285
23286                 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
23287                 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
23288
23289                 if (!(pi->use_int_tx_iqlo_cal_nphy)) {
23290
23291                         wlc_phy_rfctrlintc_override_nphy(pi,
23292                                                          NPHY_RfctrlIntc_override_PA,
23293                                                          1,
23294                                                          RADIO_MIMO_CORESEL_CORE1
23295                                                          |
23296                                                          RADIO_MIMO_CORESEL_CORE2);
23297                 } else {
23298
23299                         wlc_phy_rfctrlintc_override_nphy(pi,
23300                                                          NPHY_RfctrlIntc_override_PA,
23301                                                          0,
23302                                                          RADIO_MIMO_CORESEL_CORE1
23303                                                          |
23304                                                          RADIO_MIMO_CORESEL_CORE2);
23305                 }
23306
23307                 wlc_phy_rfctrlintc_override_nphy(pi,
23308                                                  NPHY_RfctrlIntc_override_TRSW,
23309                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
23310                 wlc_phy_rfctrlintc_override_nphy(pi,
23311                                                  NPHY_RfctrlIntc_override_TRSW,
23312                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
23313
23314                 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
23315                 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
23316                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
23317                             0x29b, (0x1 << 0), (0) << 0);
23318
23319                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
23320                             0x29b, (0x1 << 0), (0) << 0);
23321
23322                 if (NREV_IS(pi->pubpi.phy_rev, 7)
23323                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
23324                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
23325                                                           wlc_phy_read_lpf_bw_ctl_nphy
23326                                                           (pi, 0), 0, 0,
23327                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
23328                 }
23329
23330                 if (pi->use_int_tx_iqlo_cal_nphy
23331                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
23332
23333                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
23334
23335                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
23336                                               1 << 4);
23337
23338                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23339                                         mod_radio_reg(pi,
23340                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE0,
23341                                                       1, 0);
23342                                         mod_radio_reg(pi,
23343                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE1,
23344                                                       1, 0);
23345                                 } else {
23346                                         mod_radio_reg(pi,
23347                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
23348                                                       1, 0);
23349                                         mod_radio_reg(pi,
23350                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
23351                                                       1, 0);
23352                                 }
23353                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
23354                                 wlc_phy_rfctrl_override_nphy_rev7(pi,
23355                                                                   (0x1 << 3), 0,
23356                                                                   0x3, 0,
23357                                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
23358                         }
23359                 }
23360         } else {
23361                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23362                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23363
23364                 mask = ((0x3 << 12) | (0x3 << 14));
23365                 val = (0x2 << 12);
23366                 val |= (0x2 << 14);
23367                 mod_phy_reg(pi, 0xa6, mask, val);
23368                 mod_phy_reg(pi, 0xa7, mask, val);
23369
23370                 val = read_phy_reg(pi, 0xa5);
23371                 pi->tx_rx_cal_phy_saveregs[2] = val;
23372                 val |= ((0x1 << 12) | (0x1 << 13));
23373                 write_phy_reg(pi, 0xa5, val);
23374
23375                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
23376                                         &val);
23377                 pi->tx_rx_cal_phy_saveregs[3] = val;
23378                 val |= 0x2000;
23379                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
23380                                          &val);
23381
23382                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
23383                                         &val);
23384                 pi->tx_rx_cal_phy_saveregs[4] = val;
23385                 val |= 0x2000;
23386                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
23387                                          &val);
23388
23389                 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
23390                 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
23391                 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
23392                 write_phy_reg(pi, 0x91, val);
23393                 write_phy_reg(pi, 0x92, val);
23394         }
23395 }
23396
23397 static void wlc_phy_txcal_phycleanup_nphy(phy_info_t *pi)
23398 {
23399         u16 mask;
23400
23401         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23402                 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
23403                 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
23404                 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
23405                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
23406                 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
23407
23408                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23409                                          &pi->tx_rx_cal_phy_saveregs[5]);
23410                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23411                                          &pi->tx_rx_cal_phy_saveregs[6]);
23412
23413                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
23414                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
23415
23416                 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
23417                 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
23418
23419                 if (NREV_IS(pi->pubpi.phy_rev, 7)
23420                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
23421                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7), 0, 0,
23422                                                           1,
23423                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
23424                 }
23425
23426                 wlc_phy_resetcca_nphy(pi);
23427
23428                 if (pi->use_int_tx_iqlo_cal_nphy
23429                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
23430
23431                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
23432                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23433                                         mod_radio_reg(pi,
23434                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE0,
23435                                                       1, 1);
23436                                         mod_radio_reg(pi,
23437                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE1,
23438                                                       1, 1);
23439                                 } else {
23440                                         mod_radio_reg(pi,
23441                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
23442                                                       1, 1);
23443                                         mod_radio_reg(pi,
23444                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
23445                                                       1, 1);
23446                                 }
23447
23448                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
23449                                               0);
23450                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
23451                                 wlc_phy_rfctrl_override_nphy_rev7(pi,
23452                                                                   (0x1 << 3), 0,
23453                                                                   0x3, 1,
23454                                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
23455                         }
23456                 }
23457         } else {
23458                 mask = ((0x3 << 12) | (0x3 << 14));
23459                 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
23460                 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
23461                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
23462
23463                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
23464                                          &pi->tx_rx_cal_phy_saveregs[3]);
23465
23466                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
23467                                          &pi->tx_rx_cal_phy_saveregs[4]);
23468
23469                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
23470                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
23471         }
23472 }
23473
23474 #define NPHY_CAL_TSSISAMPS      64
23475 #define NPHY_TEST_TONE_FREQ_40MHz 4000
23476 #define NPHY_TEST_TONE_FREQ_20MHz 2500
23477
23478 void
23479 wlc_phy_est_tonepwr_nphy(phy_info_t *pi, s32 *qdBm_pwrbuf, u8 num_samps)
23480 {
23481         u16 tssi_reg;
23482         s32 temp, pwrindex[2];
23483         s32 idle_tssi[2];
23484         s32 rssi_buf[4];
23485         s32 tssival[2];
23486         u8 tssi_type;
23487
23488         tssi_reg = read_phy_reg(pi, 0x1e9);
23489
23490         temp = (s32) (tssi_reg & 0x3f);
23491         idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
23492
23493         temp = (s32) ((tssi_reg >> 8) & 0x3f);
23494         idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
23495
23496         tssi_type =
23497             CHSPEC_IS5G(pi->radio_chanspec) ?
23498             (u8)NPHY_RSSI_SEL_TSSI_5G:(u8)NPHY_RSSI_SEL_TSSI_2G;
23499
23500         wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
23501
23502         tssival[0] = rssi_buf[0] / ((s32) num_samps);
23503         tssival[1] = rssi_buf[2] / ((s32) num_samps);
23504
23505         pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
23506         pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
23507
23508         if (pwrindex[0] < 0) {
23509                 pwrindex[0] = 0;
23510         } else if (pwrindex[0] > 63) {
23511                 pwrindex[0] = 63;
23512         }
23513
23514         if (pwrindex[1] < 0) {
23515                 pwrindex[1] = 0;
23516         } else if (pwrindex[1] > 63) {
23517                 pwrindex[1] = 63;
23518         }
23519
23520         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
23521                                 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
23522         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
23523                                 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
23524 }
23525
23526 static void wlc_phy_internal_cal_txgain_nphy(phy_info_t *pi)
23527 {
23528         u16 txcal_gain[2];
23529
23530         pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
23531         pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
23532         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
23533         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
23534
23535         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23536                                 txcal_gain);
23537
23538         if (CHSPEC_IS2G(pi->radio_chanspec)) {
23539                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
23540                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
23541         } else {
23542                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
23543                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
23544         }
23545
23546         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23547                                  txcal_gain);
23548 }
23549
23550 static void wlc_phy_precal_txgain_nphy(phy_info_t *pi)
23551 {
23552         bool save_bbmult = false;
23553         u8 txcal_index_2057_rev5n7 = 0;
23554         u8 txcal_index_2057_rev3n4n6 = 10;
23555
23556         if (pi->use_int_tx_iqlo_cal_nphy) {
23557                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23558                         if ((pi->pubpi.radiorev == 3) ||
23559                             (pi->pubpi.radiorev == 4) ||
23560                             (pi->pubpi.radiorev == 6)) {
23561
23562                                 pi->nphy_txcal_pwr_idx[0] =
23563                                     txcal_index_2057_rev3n4n6;
23564                                 pi->nphy_txcal_pwr_idx[1] =
23565                                     txcal_index_2057_rev3n4n6;
23566                                 wlc_phy_txpwr_index_nphy(pi, 3,
23567                                                          txcal_index_2057_rev3n4n6,
23568                                                          false);
23569                         } else {
23570
23571                                 pi->nphy_txcal_pwr_idx[0] =
23572                                     txcal_index_2057_rev5n7;
23573                                 pi->nphy_txcal_pwr_idx[1] =
23574                                     txcal_index_2057_rev5n7;
23575                                 wlc_phy_txpwr_index_nphy(pi, 3,
23576                                                          txcal_index_2057_rev5n7,
23577                                                          false);
23578                         }
23579                         save_bbmult = true;
23580
23581                 } else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
23582                         wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
23583                         if (pi->sh->hw_phytxchain != 3) {
23584                                 pi->nphy_txcal_pwr_idx[1] =
23585                                     pi->nphy_txcal_pwr_idx[0];
23586                                 wlc_phy_txpwr_index_nphy(pi, 3,
23587                                                          pi->
23588                                                          nphy_txcal_pwr_idx[0],
23589                                                          true);
23590                                 save_bbmult = true;
23591                         }
23592
23593                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
23594                         if (PHY_IPA(pi)) {
23595                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23596                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
23597                                                                     false);
23598                                 } else {
23599                                         pi->nphy_txcal_pwr_idx[0] = 80;
23600                                         pi->nphy_txcal_pwr_idx[1] = 80;
23601                                         wlc_phy_txpwr_index_nphy(pi, 3, 80,
23602                                                                  false);
23603                                         save_bbmult = true;
23604                                 }
23605                         } else {
23606
23607                                 wlc_phy_internal_cal_txgain_nphy(pi);
23608                                 save_bbmult = true;
23609                         }
23610
23611                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
23612                         if (PHY_IPA(pi)) {
23613                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23614                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
23615                                                                     false);
23616                                 } else {
23617                                         wlc_phy_cal_txgainctrl_nphy(pi, 14,
23618                                                                     false);
23619                                 }
23620                         } else {
23621
23622                                 wlc_phy_internal_cal_txgain_nphy(pi);
23623                                 save_bbmult = true;
23624                         }
23625                 }
23626
23627         } else {
23628                 wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
23629         }
23630
23631         if (save_bbmult) {
23632                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
23633                                         &pi->nphy_txcal_bbmult);
23634         }
23635 }
23636
23637 void
23638 wlc_phy_cal_txgainctrl_nphy(phy_info_t *pi, s32 dBm_targetpower, bool debug)
23639 {
23640         int gainctrl_loopidx;
23641         uint core;
23642         u16 m0m1, curr_m0m1;
23643         s32 delta_power;
23644         s32 txpwrindex;
23645         s32 qdBm_power[2];
23646         u16 orig_BBConfig;
23647         u16 phy_saveregs[4];
23648         u32 freq_test;
23649         u16 ampl_test = 250;
23650         uint stepsize;
23651         bool phyhang_avoid_state = false;
23652
23653         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23654
23655                 stepsize = 2;
23656         } else {
23657
23658                 stepsize = 1;
23659         }
23660
23661         if (CHSPEC_IS40(pi->radio_chanspec)) {
23662                 freq_test = 5000;
23663         } else {
23664                 freq_test = 2500;
23665         }
23666
23667         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
23668         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
23669
23670         if (pi->phyhang_avoid)
23671                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23672
23673         phyhang_avoid_state = pi->phyhang_avoid;
23674         pi->phyhang_avoid = false;
23675
23676         phy_saveregs[0] = read_phy_reg(pi, 0x91);
23677         phy_saveregs[1] = read_phy_reg(pi, 0x92);
23678         phy_saveregs[2] = read_phy_reg(pi, 0xe7);
23679         phy_saveregs[3] = read_phy_reg(pi, 0xec);
23680         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
23681                                          RADIO_MIMO_CORESEL_CORE1 |
23682                                          RADIO_MIMO_CORESEL_CORE2);
23683
23684         if (!debug) {
23685                 wlc_phy_rfctrlintc_override_nphy(pi,
23686                                                  NPHY_RfctrlIntc_override_TRSW,
23687                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
23688                 wlc_phy_rfctrlintc_override_nphy(pi,
23689                                                  NPHY_RfctrlIntc_override_TRSW,
23690                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
23691         } else {
23692                 wlc_phy_rfctrlintc_override_nphy(pi,
23693                                                  NPHY_RfctrlIntc_override_TRSW,
23694                                                  0x1, RADIO_MIMO_CORESEL_CORE1);
23695                 wlc_phy_rfctrlintc_override_nphy(pi,
23696                                                  NPHY_RfctrlIntc_override_TRSW,
23697                                                  0x7, RADIO_MIMO_CORESEL_CORE2);
23698         }
23699
23700         orig_BBConfig = read_phy_reg(pi, 0x01);
23701         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23702
23703         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
23704
23705         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
23706                 txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
23707
23708                 for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
23709                      gainctrl_loopidx++) {
23710                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
23711                                              false);
23712
23713                         if (core == PHY_CORE_0) {
23714                                 curr_m0m1 = m0m1 & 0xff00;
23715                         } else {
23716                                 curr_m0m1 = m0m1 & 0x00ff;
23717                         }
23718
23719                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
23720                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
23721
23722                         udelay(50);
23723
23724                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
23725                                                  NPHY_CAL_TSSISAMPS);
23726
23727                         pi->nphy_bb_mult_save = 0;
23728                         wlc_phy_stopplayback_nphy(pi);
23729
23730                         delta_power = (dBm_targetpower * 4) - qdBm_power[core];
23731
23732                         txpwrindex -= stepsize * delta_power;
23733                         if (txpwrindex < 0) {
23734                                 txpwrindex = 0;
23735                         } else if (txpwrindex > 127) {
23736                                 txpwrindex = 127;
23737                         }
23738
23739                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23740                                 if (NREV_IS(pi->pubpi.phy_rev, 4) &&
23741                                     (pi->srom_fem5g.extpagain == 3)) {
23742                                         if (txpwrindex < 30) {
23743                                                 txpwrindex = 30;
23744                                         }
23745                                 }
23746                         } else {
23747                                 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
23748                                     (pi->srom_fem2g.extpagain == 3)) {
23749                                         if (txpwrindex < 50) {
23750                                                 txpwrindex = 50;
23751                                         }
23752                                 }
23753                         }
23754
23755                         wlc_phy_txpwr_index_nphy(pi, (1 << core),
23756                                                  (u8) txpwrindex, true);
23757                 }
23758
23759                 pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
23760
23761                 if (debug) {
23762                         u16 radio_gain;
23763                         u16 dbg_m0m1;
23764
23765                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
23766
23767                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
23768                                              false);
23769
23770                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
23771                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
23772
23773                         udelay(100);
23774
23775                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
23776                                                  NPHY_CAL_TSSISAMPS);
23777
23778                         wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
23779                                                 &radio_gain);
23780
23781                         mdelay(4000);
23782                         pi->nphy_bb_mult_save = 0;
23783                         wlc_phy_stopplayback_nphy(pi);
23784                 }
23785         }
23786
23787         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
23788         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
23789
23790         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
23791
23792         write_phy_reg(pi, 0x01, orig_BBConfig);
23793
23794         write_phy_reg(pi, 0x91, phy_saveregs[0]);
23795         write_phy_reg(pi, 0x92, phy_saveregs[1]);
23796         write_phy_reg(pi, 0xe7, phy_saveregs[2]);
23797         write_phy_reg(pi, 0xec, phy_saveregs[3]);
23798
23799         pi->phyhang_avoid = phyhang_avoid_state;
23800
23801         if (pi->phyhang_avoid)
23802                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23803 }
23804
23805 static void wlc_phy_update_txcal_ladder_nphy(phy_info_t *pi, u16 core)
23806 {
23807         int index;
23808         u32 bbmult_scale;
23809         u16 bbmult;
23810         u16 tblentry;
23811
23812         nphy_txiqcal_ladder_t ladder_lo[] = {
23813                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
23814                 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
23815                 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
23816         };
23817
23818         nphy_txiqcal_ladder_t ladder_iq[] = {
23819                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
23820                 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
23821                 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
23822         };
23823
23824         bbmult = (core == PHY_CORE_0) ?
23825             ((pi->nphy_txcal_bbmult >> 8) & 0xff) : (pi->
23826                                                      nphy_txcal_bbmult & 0xff);
23827
23828         for (index = 0; index < 18; index++) {
23829                 bbmult_scale = ladder_lo[index].percent * bbmult;
23830                 bbmult_scale /= 100;
23831
23832                 tblentry =
23833                     ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
23834                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
23835                                          &tblentry);
23836
23837                 bbmult_scale = ladder_iq[index].percent * bbmult;
23838                 bbmult_scale /= 100;
23839
23840                 tblentry =
23841                     ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
23842                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
23843                                          16, &tblentry);
23844         }
23845 }
23846
23847 void wlc_phy_cal_perical_nphy_run(phy_info_t *pi, u8 caltype)
23848 {
23849         nphy_txgains_t target_gain;
23850         u8 tx_pwr_ctrl_state;
23851         bool fullcal = true;
23852         bool restore_tx_gain = false;
23853         bool mphase;
23854
23855         if (NORADIO_ENAB(pi->pubpi)) {
23856                 wlc_phy_cal_perical_mphase_reset(pi);
23857                 return;
23858         }
23859
23860         if (PHY_MUTED(pi))
23861                 return;
23862
23863         ASSERT(pi->nphy_perical != PHY_PERICAL_DISABLE);
23864
23865         if (caltype == PHY_PERICAL_AUTO)
23866                 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
23867         else if (caltype == PHY_PERICAL_PARTIAL)
23868                 fullcal = false;
23869
23870         if (pi->cal_type_override != PHY_PERICAL_AUTO) {
23871                 fullcal =
23872                     (pi->cal_type_override == PHY_PERICAL_FULL) ? true : false;
23873         }
23874
23875         if ((pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT)) {
23876                 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
23877                         wlc_phy_cal_perical_mphase_restart(pi);
23878         }
23879
23880         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL)) {
23881                 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
23882         }
23883
23884         wlapi_suspend_mac_and_wait(pi->sh->physhim);
23885
23886         wlc_phyreg_enter((wlc_phy_t *) pi);
23887
23888         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
23889             (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
23890                 pi->nphy_cal_orig_pwr_idx[0] =
23891                     (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
23892                 pi->nphy_cal_orig_pwr_idx[1] =
23893                     (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
23894
23895                 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
23896                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
23897                                                 0x110, 16,
23898                                                 pi->nphy_cal_orig_tx_gain);
23899                 } else {
23900                         pi->nphy_cal_orig_tx_gain[0] = 0;
23901                         pi->nphy_cal_orig_tx_gain[1] = 0;
23902                 }
23903         }
23904         target_gain = wlc_phy_get_tx_gain_nphy(pi);
23905         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
23906         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
23907
23908         if (pi->antsel_type == ANTSEL_2x3)
23909                 wlc_phy_antsel_init((wlc_phy_t *) pi, true);
23910
23911         mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
23912         if (!mphase) {
23913
23914                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23915                         wlc_phy_precal_txgain_nphy(pi);
23916                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
23917                         restore_tx_gain = true;
23918
23919                         target_gain = pi->nphy_cal_target_gain;
23920                 }
23921                 if (BCME_OK ==
23922                     wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal, mphase)) {
23923                         if (PHY_IPA(pi))
23924                                 wlc_phy_a4(pi, true);
23925
23926                         wlc_phyreg_exit((wlc_phy_t *) pi);
23927                         wlapi_enable_mac(pi->sh->physhim);
23928                         wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
23929                                              10000);
23930                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
23931                         wlc_phyreg_enter((wlc_phy_t *) pi);
23932
23933                         if (BCME_OK == wlc_phy_cal_rxiq_nphy(pi, target_gain,
23934                                                              (pi->
23935                                                               first_cal_after_assoc
23936                                                               || (pi->
23937                                                                   cal_type_override
23938                                                                   ==
23939                                                                   PHY_PERICAL_FULL))
23940                                                              ? 2 : 0, false)) {
23941                                 wlc_phy_savecal_nphy(pi);
23942
23943                                 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
23944
23945                                 pi->nphy_perical_last = pi->sh->now;
23946                         }
23947                 }
23948                 if (caltype != PHY_PERICAL_AUTO) {
23949                         wlc_phy_rssi_cal_nphy(pi);
23950                 }
23951
23952                 if (pi->first_cal_after_assoc
23953                     || (pi->cal_type_override == PHY_PERICAL_FULL)) {
23954                         pi->first_cal_after_assoc = false;
23955                         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
23956                         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
23957                 }
23958
23959                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23960                         wlc_phy_radio205x_vcocal_nphy(pi);
23961                 }
23962         } else {
23963                 ASSERT(pi->nphy_perical >= PHY_PERICAL_MPHASE);
23964
23965                 switch (pi->mphase_cal_phase_id) {
23966                 case MPHASE_CAL_STATE_INIT:
23967                         pi->nphy_perical_last = pi->sh->now;
23968                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
23969
23970                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23971                                 wlc_phy_precal_txgain_nphy(pi);
23972                         }
23973                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
23974                         pi->mphase_cal_phase_id++;
23975                         break;
23976
23977                 case MPHASE_CAL_STATE_TXPHASE0:
23978                 case MPHASE_CAL_STATE_TXPHASE1:
23979                 case MPHASE_CAL_STATE_TXPHASE2:
23980                 case MPHASE_CAL_STATE_TXPHASE3:
23981                 case MPHASE_CAL_STATE_TXPHASE4:
23982                 case MPHASE_CAL_STATE_TXPHASE5:
23983                         if ((pi->radar_percal_mask & 0x10) != 0)
23984                                 pi->nphy_rxcal_active = true;
23985
23986                         if (wlc_phy_cal_txiqlo_nphy
23987                             (pi, pi->nphy_cal_target_gain, fullcal,
23988                              true) != BCME_OK) {
23989
23990                                 wlc_phy_cal_perical_mphase_reset(pi);
23991                                 break;
23992                         }
23993
23994                         if (NREV_LE(pi->pubpi.phy_rev, 2) &&
23995                             (pi->mphase_cal_phase_id ==
23996                              MPHASE_CAL_STATE_TXPHASE4)) {
23997                                 pi->mphase_cal_phase_id += 2;
23998                         } else {
23999                                 pi->mphase_cal_phase_id++;
24000                         }
24001                         break;
24002
24003                 case MPHASE_CAL_STATE_PAPDCAL:
24004                         if ((pi->radar_percal_mask & 0x2) != 0)
24005                                 pi->nphy_rxcal_active = true;
24006
24007                         if (PHY_IPA(pi)) {
24008                                 wlc_phy_a4(pi, true);
24009                         }
24010                         pi->mphase_cal_phase_id++;
24011                         break;
24012
24013                 case MPHASE_CAL_STATE_RXCAL:
24014                         if ((pi->radar_percal_mask & 0x1) != 0)
24015                                 pi->nphy_rxcal_active = true;
24016                         if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
24017                                                   (pi->first_cal_after_assoc ||
24018                                                    (pi->cal_type_override ==
24019                                                     PHY_PERICAL_FULL)) ? 2 : 0,
24020                                                   false) == BCME_OK) {
24021                                 wlc_phy_savecal_nphy(pi);
24022                         }
24023
24024                         pi->mphase_cal_phase_id++;
24025                         break;
24026
24027                 case MPHASE_CAL_STATE_RSSICAL:
24028                         if ((pi->radar_percal_mask & 0x4) != 0)
24029                                 pi->nphy_rxcal_active = true;
24030                         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
24031                         wlc_phy_rssi_cal_nphy(pi);
24032
24033                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24034                                 wlc_phy_radio205x_vcocal_nphy(pi);
24035                         }
24036                         restore_tx_gain = true;
24037
24038                         if (pi->first_cal_after_assoc) {
24039                                 pi->mphase_cal_phase_id++;
24040                         } else {
24041                                 wlc_phy_cal_perical_mphase_reset(pi);
24042                         }
24043
24044                         break;
24045
24046                 case MPHASE_CAL_STATE_IDLETSSI:
24047                         if ((pi->radar_percal_mask & 0x8) != 0)
24048                                 pi->nphy_rxcal_active = true;
24049
24050                         if (pi->first_cal_after_assoc) {
24051                                 pi->first_cal_after_assoc = false;
24052                                 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
24053                                 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
24054                         }
24055
24056                         wlc_phy_cal_perical_mphase_reset(pi);
24057                         break;
24058
24059                 default:
24060                         ASSERT(0);
24061                         wlc_phy_cal_perical_mphase_reset(pi);
24062                         break;
24063                 }
24064         }
24065
24066         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24067                 if (restore_tx_gain) {
24068                         if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
24069
24070                                 wlc_phy_txpwr_index_nphy(pi, 1,
24071                                                          pi->
24072                                                          nphy_cal_orig_pwr_idx
24073                                                          [0], false);
24074                                 wlc_phy_txpwr_index_nphy(pi, 2,
24075                                                          pi->
24076                                                          nphy_cal_orig_pwr_idx
24077                                                          [1], false);
24078
24079                                 pi->nphy_txpwrindex[0].index = -1;
24080                                 pi->nphy_txpwrindex[1].index = -1;
24081                         } else {
24082                                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
24083                                                          (s8) (pi->
24084                                                                  nphy_txpwrindex
24085                                                                  [0].
24086                                                                  index_internal),
24087                                                          false);
24088                                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
24089                                                          (s8) (pi->
24090                                                                  nphy_txpwrindex
24091                                                                  [1].
24092                                                                  index_internal),
24093                                                          false);
24094                         }
24095                 }
24096         }
24097
24098         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
24099         wlc_phyreg_exit((wlc_phy_t *) pi);
24100         wlapi_enable_mac(pi->sh->physhim);
24101 }
24102
24103 int
24104 wlc_phy_cal_txiqlo_nphy(phy_info_t *pi, nphy_txgains_t target_gain,
24105                         bool fullcal, bool mphase)
24106 {
24107         u16 val;
24108         u16 tbl_buf[11];
24109         u8 cal_cnt;
24110         u16 cal_cmd;
24111         u8 num_cals, max_cal_cmds;
24112         u16 core_no, cal_type;
24113         u16 diq_start = 0;
24114         u8 phy_bw;
24115         u16 max_val;
24116         u16 tone_freq;
24117         u16 gain_save[2];
24118         u16 cal_gain[2];
24119         nphy_iqcal_params_t cal_params[2];
24120         u32 tbl_len;
24121         void *tbl_ptr;
24122         bool ladder_updated[2];
24123         u8 mphase_cal_lastphase = 0;
24124         int bcmerror = BCME_OK;
24125         bool phyhang_avoid_state = false;
24126
24127         u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
24128                 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
24129                     0x1902,
24130                 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
24131                     0x6407
24132         };
24133
24134         u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
24135                 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
24136                     0x3200,
24137                 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
24138                     0x6407
24139         };
24140
24141         u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
24142                 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
24143                     0x1202,
24144                 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
24145                     0x4707
24146         };
24147
24148         u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
24149                 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
24150                     0x2300,
24151                 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
24152                     0x4707
24153         };
24154
24155         u16 tbl_tx_iqlo_cal_startcoefs[] = {
24156                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
24157                     0x0000
24158         };
24159
24160         u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
24161                 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
24162                 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
24163         };
24164
24165         u16 tbl_tx_iqlo_cal_cmds_recal[] = {
24166                 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
24167                 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
24168         };
24169
24170         u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
24171                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
24172                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
24173                 0x0000
24174         };
24175
24176         u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
24177                 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
24178                 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
24179         };
24180
24181         u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
24182                 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
24183                 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
24184         };
24185
24186         wlc_phy_stay_in_carriersearch_nphy(pi, true);
24187
24188         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
24189                 phyhang_avoid_state = pi->phyhang_avoid;
24190                 pi->phyhang_avoid = false;
24191         }
24192
24193         if (CHSPEC_IS40(pi->radio_chanspec)) {
24194                 phy_bw = 40;
24195         } else {
24196                 phy_bw = 20;
24197         }
24198
24199         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
24200
24201         for (core_no = 0; core_no <= 1; core_no++) {
24202                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
24203                                               &cal_params[core_no]);
24204                 cal_gain[core_no] = cal_params[core_no].cal_gain;
24205         }
24206
24207         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
24208
24209         wlc_phy_txcal_radio_setup_nphy(pi);
24210
24211         wlc_phy_txcal_physetup_nphy(pi);
24212
24213         ladder_updated[0] = ladder_updated[1] = false;
24214         if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
24215               (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
24216                && (CHSPEC_IS2G(pi->radio_chanspec))))) {
24217
24218                 if (phy_bw == 40) {
24219                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
24220                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
24221                 } else {
24222                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
24223                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
24224                 }
24225                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
24226                                          16, tbl_ptr);
24227
24228                 if (phy_bw == 40) {
24229                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
24230                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
24231                 } else {
24232                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
24233                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
24234                 }
24235                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
24236                                          16, tbl_ptr);
24237         }
24238
24239         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24240                 write_phy_reg(pi, 0xc2, 0x8ad9);
24241         } else {
24242                 write_phy_reg(pi, 0xc2, 0x8aa9);
24243         }
24244
24245         max_val = 250;
24246         tone_freq = (phy_bw == 20) ? 2500 : 5000;
24247
24248         if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
24249                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
24250                 bcmerror = BCME_OK;
24251         } else {
24252                 bcmerror =
24253                     wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0, false);
24254         }
24255
24256         if (bcmerror == BCME_OK) {
24257
24258                 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
24259                         tbl_ptr = pi->mphase_txcal_bestcoeffs;
24260                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
24261                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24262
24263                                 tbl_len -= 2;
24264                         }
24265                 } else {
24266                         if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
24267
24268                                 tbl_ptr = pi->nphy_txiqlocal_bestc;
24269                                 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
24270                                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24271
24272                                         tbl_len -= 2;
24273                                 }
24274                         } else {
24275
24276                                 fullcal = true;
24277
24278                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24279                                         tbl_ptr =
24280                                             tbl_tx_iqlo_cal_startcoefs_nphyrev3;
24281                                         tbl_len =
24282                                             ARRAY_SIZE
24283                                             (tbl_tx_iqlo_cal_startcoefs_nphyrev3);
24284                                 } else {
24285                                         tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
24286                                         tbl_len =
24287                                             ARRAY_SIZE
24288                                             (tbl_tx_iqlo_cal_startcoefs);
24289                                 }
24290                         }
24291                 }
24292                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
24293                                          16, tbl_ptr);
24294
24295                 if (fullcal) {
24296                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24297                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
24298                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
24299                 } else {
24300                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24301                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
24302                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
24303                 }
24304
24305                 if (mphase) {
24306                         cal_cnt = pi->mphase_txcal_cmdidx;
24307                         if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds) {
24308                                 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
24309                         } else {
24310                                 num_cals = max_cal_cmds;
24311                         }
24312                 } else {
24313                         cal_cnt = 0;
24314                         num_cals = max_cal_cmds;
24315                 }
24316
24317                 for (; cal_cnt < num_cals; cal_cnt++) {
24318
24319                         if (fullcal) {
24320                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24321                                     tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
24322                                     [cal_cnt] :
24323                                     tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
24324                         } else {
24325                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24326                                     tbl_tx_iqlo_cal_cmds_recal_nphyrev3[cal_cnt]
24327                                     : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
24328                         }
24329
24330                         core_no = ((cal_cmd & 0x3000) >> 12);
24331                         cal_type = ((cal_cmd & 0x0F00) >> 8);
24332
24333                         if (NREV_GE(pi->pubpi.phy_rev, 6) ||
24334                             (NREV_IS(pi->pubpi.phy_rev, 5) &&
24335                              PHY_IPA(pi)
24336                              && (CHSPEC_IS2G(pi->radio_chanspec)))) {
24337                                 if (!ladder_updated[core_no]) {
24338                                         wlc_phy_update_txcal_ladder_nphy(pi,
24339                                                                          core_no);
24340                                         ladder_updated[core_no] = true;
24341                                 }
24342                         }
24343
24344                         val =
24345                             (cal_params[core_no].
24346                              ncorr[cal_type] << 8) | NPHY_N_GCTL;
24347                         write_phy_reg(pi, 0xc1, val);
24348
24349                         if ((cal_type == 1) || (cal_type == 3)
24350                             || (cal_type == 4)) {
24351
24352                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24353                                                         1, 69 + core_no, 16,
24354                                                         tbl_buf);
24355
24356                                 diq_start = tbl_buf[0];
24357
24358                                 tbl_buf[0] = 0;
24359                                 wlc_phy_table_write_nphy(pi,
24360                                                          NPHY_TBL_ID_IQLOCAL, 1,
24361                                                          69 + core_no, 16,
24362                                                          tbl_buf);
24363                         }
24364
24365                         write_phy_reg(pi, 0xc0, cal_cmd);
24366
24367                         SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
24368                                  20000);
24369                         ASSERT((read_phy_reg(pi, 0xc0) & 0xc000) == 0);
24370
24371                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24372                                                 tbl_len, 96, 16, tbl_buf);
24373                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24374                                                  tbl_len, 64, 16, tbl_buf);
24375
24376                         if ((cal_type == 1) || (cal_type == 3)
24377                             || (cal_type == 4)) {
24378
24379                                 tbl_buf[0] = diq_start;
24380
24381                         }
24382
24383                 }
24384
24385                 if (mphase) {
24386                         pi->mphase_txcal_cmdidx = num_cals;
24387                         if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
24388                                 pi->mphase_txcal_cmdidx = 0;
24389                 }
24390
24391                 mphase_cal_lastphase =
24392                     (NREV_LE(pi->pubpi.phy_rev, 2)) ?
24393                     MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
24394
24395                 if (!mphase
24396                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
24397
24398                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
24399                                                 16, tbl_buf);
24400                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
24401                                                  16, tbl_buf);
24402
24403                         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
24404
24405                                 tbl_buf[0] = 0;
24406                                 tbl_buf[1] = 0;
24407                                 tbl_buf[2] = 0;
24408                                 tbl_buf[3] = 0;
24409
24410                         }
24411                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
24412                                                  16, tbl_buf);
24413
24414                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
24415                                                 16, tbl_buf);
24416                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
24417                                                  16, tbl_buf);
24418
24419                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
24420                                                  16, tbl_buf);
24421
24422                         tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
24423                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24424
24425                                 tbl_len -= 2;
24426                         }
24427                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24428                                                 tbl_len, 96, 16,
24429                                                 pi->nphy_txiqlocal_bestc);
24430
24431                         pi->nphy_txiqlocal_coeffsvalid = true;
24432                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
24433                 } else {
24434                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
24435                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24436
24437                                 tbl_len -= 2;
24438                         }
24439                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24440                                                 tbl_len, 96, 16,
24441                                                 pi->mphase_txcal_bestcoeffs);
24442                 }
24443
24444                 wlc_phy_stopplayback_nphy(pi);
24445
24446                 write_phy_reg(pi, 0xc2, 0x0000);
24447
24448         }
24449
24450         wlc_phy_txcal_phycleanup_nphy(pi);
24451
24452         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
24453                                  gain_save);
24454
24455         wlc_phy_txcal_radio_cleanup_nphy(pi);
24456
24457         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
24458                 if (!mphase
24459                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
24460                         wlc_phy_tx_iq_war_nphy(pi);
24461         }
24462
24463         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
24464                 pi->phyhang_avoid = phyhang_avoid_state;
24465         }
24466
24467         wlc_phy_stay_in_carriersearch_nphy(pi, false);
24468
24469         return bcmerror;
24470 }
24471
24472 static void wlc_phy_reapply_txcal_coeffs_nphy(phy_info_t *pi)
24473 {
24474         u16 tbl_buf[7];
24475
24476         ASSERT(NREV_LT(pi->pubpi.phy_rev, 2));
24477
24478         if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
24479             (pi->nphy_txiqlocal_coeffsvalid)) {
24480                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24481                                         ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
24482
24483                 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
24484                     (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
24485                     (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
24486                     (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
24487
24488                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
24489                                                  16, pi->nphy_txiqlocal_bestc);
24490
24491                         tbl_buf[0] = 0;
24492                         tbl_buf[1] = 0;
24493                         tbl_buf[2] = 0;
24494                         tbl_buf[3] = 0;
24495                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
24496                                                  16, tbl_buf);
24497
24498                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
24499                                                  16,
24500                                                  &pi->nphy_txiqlocal_bestc[5]);
24501
24502                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
24503                                                  16,
24504                                                  &pi->nphy_txiqlocal_bestc[5]);
24505                 }
24506         }
24507 }
24508
24509 static void wlc_phy_tx_iq_war_nphy(phy_info_t *pi)
24510 {
24511         nphy_iq_comp_t tx_comp;
24512
24513         wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, (void *)&tx_comp);
24514
24515         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
24516         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
24517         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
24518         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
24519 }
24520
24521 void
24522 wlc_phy_rx_iq_coeffs_nphy(phy_info_t *pi, u8 write, nphy_iq_comp_t *pcomp)
24523 {
24524         if (write) {
24525                 write_phy_reg(pi, 0x9a, pcomp->a0);
24526                 write_phy_reg(pi, 0x9b, pcomp->b0);
24527                 write_phy_reg(pi, 0x9c, pcomp->a1);
24528                 write_phy_reg(pi, 0x9d, pcomp->b1);
24529         } else {
24530                 pcomp->a0 = read_phy_reg(pi, 0x9a);
24531                 pcomp->b0 = read_phy_reg(pi, 0x9b);
24532                 pcomp->a1 = read_phy_reg(pi, 0x9c);
24533                 pcomp->b1 = read_phy_reg(pi, 0x9d);
24534         }
24535 }
24536
24537 void
24538 wlc_phy_rx_iq_est_nphy(phy_info_t *pi, phy_iq_est_t *est, u16 num_samps,
24539                        u8 wait_time, u8 wait_for_crs)
24540 {
24541         u8 core;
24542
24543         write_phy_reg(pi, 0x12b, num_samps);
24544         mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
24545         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
24546                     (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
24547
24548         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
24549
24550         SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
24551                  10000);
24552         ASSERT((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0);
24553
24554         if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
24555                 ASSERT(pi->pubpi.phy_corenum <= PHY_CORE_MAX);
24556                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24557                         est[core].i_pwr =
24558                             (read_phy_reg(pi, NPHY_IqestipwrAccHi(core)) << 16)
24559                             | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
24560                         est[core].q_pwr =
24561                             (read_phy_reg(pi, NPHY_IqestqpwrAccHi(core)) << 16)
24562                             | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
24563                         est[core].iq_prod =
24564                             (read_phy_reg(pi, NPHY_IqestIqAccHi(core)) << 16) |
24565                             read_phy_reg(pi, NPHY_IqestIqAccLo(core));
24566                 }
24567         }
24568 }
24569
24570 #define CAL_RETRY_CNT 2
24571 static void wlc_phy_calc_rx_iq_comp_nphy(phy_info_t *pi, u8 core_mask)
24572 {
24573         u8 curr_core;
24574         phy_iq_est_t est[PHY_CORE_MAX];
24575         nphy_iq_comp_t old_comp, new_comp;
24576         s32 iq = 0;
24577         u32 ii = 0, qq = 0;
24578         s16 iq_nbits, qq_nbits, brsh, arsh;
24579         s32 a, b, temp;
24580         int bcmerror = BCME_OK;
24581         uint cal_retry = 0;
24582
24583         if (core_mask == 0x0)
24584                 return;
24585
24586         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
24587         new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
24588         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
24589
24590  cal_try:
24591         wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
24592
24593         new_comp = old_comp;
24594
24595         for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
24596
24597                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
24598                         iq = est[curr_core].iq_prod;
24599                         ii = est[curr_core].i_pwr;
24600                         qq = est[curr_core].q_pwr;
24601                 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
24602                         iq = est[curr_core].iq_prod;
24603                         ii = est[curr_core].i_pwr;
24604                         qq = est[curr_core].q_pwr;
24605                 } else {
24606                         continue;
24607                 }
24608
24609                 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
24610                         bcmerror = BCME_ERROR;
24611                         break;
24612                 }
24613
24614                 iq_nbits = wlc_phy_nbits(iq);
24615                 qq_nbits = wlc_phy_nbits(qq);
24616
24617                 arsh = 10 - (30 - iq_nbits);
24618                 if (arsh >= 0) {
24619                         a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
24620                         temp = (s32) (ii >> arsh);
24621                         if (temp == 0) {
24622                                 bcmerror = BCME_ERROR;
24623                                 break;
24624                         }
24625                 } else {
24626                         a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
24627                         temp = (s32) (ii << -arsh);
24628                         if (temp == 0) {
24629                                 bcmerror = BCME_ERROR;
24630                                 break;
24631                         }
24632                 }
24633
24634                 a /= temp;
24635
24636                 brsh = qq_nbits - 31 + 20;
24637                 if (brsh >= 0) {
24638                         b = (qq << (31 - qq_nbits));
24639                         temp = (s32) (ii >> brsh);
24640                         if (temp == 0) {
24641                                 bcmerror = BCME_ERROR;
24642                                 break;
24643                         }
24644                 } else {
24645                         b = (qq << (31 - qq_nbits));
24646                         temp = (s32) (ii << -brsh);
24647                         if (temp == 0) {
24648                                 bcmerror = BCME_ERROR;
24649                                 break;
24650                         }
24651                 }
24652                 b /= temp;
24653                 b -= a * a;
24654                 b = (s32) wlc_phy_sqrt_int((u32) b);
24655                 b -= (1 << 10);
24656
24657                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
24658                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24659                                 new_comp.a0 = (s16) a & 0x3ff;
24660                                 new_comp.b0 = (s16) b & 0x3ff;
24661                         } else {
24662
24663                                 new_comp.a0 = (s16) b & 0x3ff;
24664                                 new_comp.b0 = (s16) a & 0x3ff;
24665                         }
24666                 }
24667                 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
24668                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24669                                 new_comp.a1 = (s16) a & 0x3ff;
24670                                 new_comp.b1 = (s16) b & 0x3ff;
24671                         } else {
24672
24673                                 new_comp.a1 = (s16) b & 0x3ff;
24674                                 new_comp.b1 = (s16) a & 0x3ff;
24675                         }
24676                 }
24677         }
24678
24679         if (bcmerror != BCME_OK) {
24680                 printk("%s: Failed, cnt = %d\n", __func__, cal_retry);
24681
24682                 if (cal_retry < CAL_RETRY_CNT) {
24683                         cal_retry++;
24684                         goto cal_try;
24685                 }
24686
24687                 new_comp = old_comp;
24688         } else if (cal_retry > 0) {
24689         }
24690
24691         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
24692 }
24693
24694 static void wlc_phy_rxcal_radio_setup_nphy(phy_info_t *pi, u8 rx_core)
24695 {
24696         u16 offtune_val;
24697         u16 bias_g = 0;
24698         u16 bias_a = 0;
24699
24700         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24701                 if (rx_core == PHY_CORE_0) {
24702                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24703                                 pi->tx_rx_cal_radio_saveregs[0] =
24704                                     read_radio_reg(pi,
24705                                                    RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
24706                                 pi->tx_rx_cal_radio_saveregs[1] =
24707                                     read_radio_reg(pi,
24708                                                    RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
24709
24710                                 write_radio_reg(pi,
24711                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
24712                                                 0x3);
24713                                 write_radio_reg(pi,
24714                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
24715                                                 0xaf);
24716
24717                         } else {
24718                                 pi->tx_rx_cal_radio_saveregs[0] =
24719                                     read_radio_reg(pi,
24720                                                    RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
24721                                 pi->tx_rx_cal_radio_saveregs[1] =
24722                                     read_radio_reg(pi,
24723                                                    RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
24724
24725                                 write_radio_reg(pi,
24726                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
24727                                                 0x3);
24728                                 write_radio_reg(pi,
24729                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
24730                                                 0x7f);
24731                         }
24732
24733                 } else {
24734                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24735                                 pi->tx_rx_cal_radio_saveregs[0] =
24736                                     read_radio_reg(pi,
24737                                                    RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
24738                                 pi->tx_rx_cal_radio_saveregs[1] =
24739                                     read_radio_reg(pi,
24740                                                    RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
24741
24742                                 write_radio_reg(pi,
24743                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
24744                                                 0x3);
24745                                 write_radio_reg(pi,
24746                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
24747                                                 0xaf);
24748
24749                         } else {
24750                                 pi->tx_rx_cal_radio_saveregs[0] =
24751                                     read_radio_reg(pi,
24752                                                    RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
24753                                 pi->tx_rx_cal_radio_saveregs[1] =
24754                                     read_radio_reg(pi,
24755                                                    RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
24756
24757                                 write_radio_reg(pi,
24758                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
24759                                                 0x3);
24760                                 write_radio_reg(pi,
24761                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
24762                                                 0x7f);
24763                         }
24764                 }
24765
24766         } else {
24767                 if (rx_core == PHY_CORE_0) {
24768                         pi->tx_rx_cal_radio_saveregs[0] =
24769                             read_radio_reg(pi,
24770                                            RADIO_2056_TX_RXIQCAL_TXMUX |
24771                                            RADIO_2056_TX1);
24772                         pi->tx_rx_cal_radio_saveregs[1] =
24773                             read_radio_reg(pi,
24774                                            RADIO_2056_RX_RXIQCAL_RXMUX |
24775                                            RADIO_2056_RX0);
24776
24777                         if (pi->pubpi.radiorev >= 5) {
24778                                 pi->tx_rx_cal_radio_saveregs[2] =
24779                                     read_radio_reg(pi,
24780                                                    RADIO_2056_RX_RXSPARE2 |
24781                                                    RADIO_2056_RX0);
24782                                 pi->tx_rx_cal_radio_saveregs[3] =
24783                                     read_radio_reg(pi,
24784                                                    RADIO_2056_TX_TXSPARE2 |
24785                                                    RADIO_2056_TX1);
24786                         }
24787
24788                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24789
24790                                 if (pi->pubpi.radiorev >= 5) {
24791                                         pi->tx_rx_cal_radio_saveregs[4] =
24792                                             read_radio_reg(pi,
24793                                                            RADIO_2056_RX_LNAA_MASTER
24794                                                            | RADIO_2056_RX0);
24795
24796                                         write_radio_reg(pi,
24797                                                         RADIO_2056_RX_LNAA_MASTER
24798                                                         | RADIO_2056_RX0, 0x40);
24799
24800                                         write_radio_reg(pi,
24801                                                         RADIO_2056_TX_TXSPARE2 |
24802                                                         RADIO_2056_TX1, bias_a);
24803
24804                                         write_radio_reg(pi,
24805                                                         RADIO_2056_RX_RXSPARE2 |
24806                                                         RADIO_2056_RX0, bias_a);
24807                                 } else {
24808                                         pi->tx_rx_cal_radio_saveregs[4] =
24809                                             read_radio_reg(pi,
24810                                                            RADIO_2056_RX_LNAA_TUNE
24811                                                            | RADIO_2056_RX0);
24812
24813                                         offtune_val =
24814                                             (pi->
24815                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24816                                             >> 8;
24817                                         offtune_val =
24818                                             (offtune_val <= 0x7) ? 0xF : 0;
24819
24820                                         mod_radio_reg(pi,
24821                                                       RADIO_2056_RX_LNAA_TUNE |
24822                                                       RADIO_2056_RX0, 0xF0,
24823                                                       (offtune_val << 8));
24824                                 }
24825
24826                                 write_radio_reg(pi,
24827                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24828                                                 RADIO_2056_TX1, 0x9);
24829                                 write_radio_reg(pi,
24830                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24831                                                 RADIO_2056_RX0, 0x9);
24832                         } else {
24833                                 if (pi->pubpi.radiorev >= 5) {
24834                                         pi->tx_rx_cal_radio_saveregs[4] =
24835                                             read_radio_reg(pi,
24836                                                            RADIO_2056_RX_LNAG_MASTER
24837                                                            | RADIO_2056_RX0);
24838
24839                                         write_radio_reg(pi,
24840                                                         RADIO_2056_RX_LNAG_MASTER
24841                                                         | RADIO_2056_RX0, 0x40);
24842
24843                                         write_radio_reg(pi,
24844                                                         RADIO_2056_TX_TXSPARE2 |
24845                                                         RADIO_2056_TX1, bias_g);
24846
24847                                         write_radio_reg(pi,
24848                                                         RADIO_2056_RX_RXSPARE2 |
24849                                                         RADIO_2056_RX0, bias_g);
24850
24851                                 } else {
24852                                         pi->tx_rx_cal_radio_saveregs[4] =
24853                                             read_radio_reg(pi,
24854                                                            RADIO_2056_RX_LNAG_TUNE
24855                                                            | RADIO_2056_RX0);
24856
24857                                         offtune_val =
24858                                             (pi->
24859                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24860                                             >> 8;
24861                                         offtune_val =
24862                                             (offtune_val <= 0x7) ? 0xF : 0;
24863
24864                                         mod_radio_reg(pi,
24865                                                       RADIO_2056_RX_LNAG_TUNE |
24866                                                       RADIO_2056_RX0, 0xF0,
24867                                                       (offtune_val << 8));
24868                                 }
24869
24870                                 write_radio_reg(pi,
24871                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24872                                                 RADIO_2056_TX1, 0x6);
24873                                 write_radio_reg(pi,
24874                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24875                                                 RADIO_2056_RX0, 0x6);
24876                         }
24877
24878                 } else {
24879                         pi->tx_rx_cal_radio_saveregs[0] =
24880                             read_radio_reg(pi,
24881                                            RADIO_2056_TX_RXIQCAL_TXMUX |
24882                                            RADIO_2056_TX0);
24883                         pi->tx_rx_cal_radio_saveregs[1] =
24884                             read_radio_reg(pi,
24885                                            RADIO_2056_RX_RXIQCAL_RXMUX |
24886                                            RADIO_2056_RX1);
24887
24888                         if (pi->pubpi.radiorev >= 5) {
24889                                 pi->tx_rx_cal_radio_saveregs[2] =
24890                                     read_radio_reg(pi,
24891                                                    RADIO_2056_RX_RXSPARE2 |
24892                                                    RADIO_2056_RX1);
24893                                 pi->tx_rx_cal_radio_saveregs[3] =
24894                                     read_radio_reg(pi,
24895                                                    RADIO_2056_TX_TXSPARE2 |
24896                                                    RADIO_2056_TX0);
24897                         }
24898
24899                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24900
24901                                 if (pi->pubpi.radiorev >= 5) {
24902                                         pi->tx_rx_cal_radio_saveregs[4] =
24903                                             read_radio_reg(pi,
24904                                                            RADIO_2056_RX_LNAA_MASTER
24905                                                            | RADIO_2056_RX1);
24906
24907                                         write_radio_reg(pi,
24908                                                         RADIO_2056_RX_LNAA_MASTER
24909                                                         | RADIO_2056_RX1, 0x40);
24910
24911                                         write_radio_reg(pi,
24912                                                         RADIO_2056_TX_TXSPARE2 |
24913                                                         RADIO_2056_TX0, bias_a);
24914
24915                                         write_radio_reg(pi,
24916                                                         RADIO_2056_RX_RXSPARE2 |
24917                                                         RADIO_2056_RX1, bias_a);
24918                                 } else {
24919                                         pi->tx_rx_cal_radio_saveregs[4] =
24920                                             read_radio_reg(pi,
24921                                                            RADIO_2056_RX_LNAA_TUNE
24922                                                            | RADIO_2056_RX1);
24923
24924                                         offtune_val =
24925                                             (pi->
24926                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24927                                             >> 8;
24928                                         offtune_val =
24929                                             (offtune_val <= 0x7) ? 0xF : 0;
24930
24931                                         mod_radio_reg(pi,
24932                                                       RADIO_2056_RX_LNAA_TUNE |
24933                                                       RADIO_2056_RX1, 0xF0,
24934                                                       (offtune_val << 8));
24935                                 }
24936
24937                                 write_radio_reg(pi,
24938                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24939                                                 RADIO_2056_TX0, 0x9);
24940                                 write_radio_reg(pi,
24941                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24942                                                 RADIO_2056_RX1, 0x9);
24943                         } else {
24944                                 if (pi->pubpi.radiorev >= 5) {
24945                                         pi->tx_rx_cal_radio_saveregs[4] =
24946                                             read_radio_reg(pi,
24947                                                            RADIO_2056_RX_LNAG_MASTER
24948                                                            | RADIO_2056_RX1);
24949
24950                                         write_radio_reg(pi,
24951                                                         RADIO_2056_RX_LNAG_MASTER
24952                                                         | RADIO_2056_RX1, 0x40);
24953
24954                                         write_radio_reg(pi,
24955                                                         RADIO_2056_TX_TXSPARE2 |
24956                                                         RADIO_2056_TX0, bias_g);
24957
24958                                         write_radio_reg(pi,
24959                                                         RADIO_2056_RX_RXSPARE2 |
24960                                                         RADIO_2056_RX1, bias_g);
24961                                 } else {
24962                                         pi->tx_rx_cal_radio_saveregs[4] =
24963                                             read_radio_reg(pi,
24964                                                            RADIO_2056_RX_LNAG_TUNE
24965                                                            | RADIO_2056_RX1);
24966
24967                                         offtune_val =
24968                                             (pi->
24969                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24970                                             >> 8;
24971                                         offtune_val =
24972                                             (offtune_val <= 0x7) ? 0xF : 0;
24973
24974                                         mod_radio_reg(pi,
24975                                                       RADIO_2056_RX_LNAG_TUNE |
24976                                                       RADIO_2056_RX1, 0xF0,
24977                                                       (offtune_val << 8));
24978                                 }
24979
24980                                 write_radio_reg(pi,
24981                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24982                                                 RADIO_2056_TX0, 0x6);
24983                                 write_radio_reg(pi,
24984                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24985                                                 RADIO_2056_RX1, 0x6);
24986                         }
24987                 }
24988         }
24989 }
24990
24991 static void wlc_phy_rxcal_radio_cleanup_nphy(phy_info_t *pi, u8 rx_core)
24992 {
24993         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24994                 if (rx_core == PHY_CORE_0) {
24995                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24996                                 write_radio_reg(pi,
24997                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
24998                                                 pi->
24999                                                 tx_rx_cal_radio_saveregs[0]);
25000                                 write_radio_reg(pi,
25001                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
25002                                                 pi->
25003                                                 tx_rx_cal_radio_saveregs[1]);
25004
25005                         } else {
25006                                 write_radio_reg(pi,
25007                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
25008                                                 pi->
25009                                                 tx_rx_cal_radio_saveregs[0]);
25010                                 write_radio_reg(pi,
25011                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
25012                                                 pi->
25013                                                 tx_rx_cal_radio_saveregs[1]);
25014                         }
25015
25016                 } else {
25017                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25018                                 write_radio_reg(pi,
25019                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
25020                                                 pi->
25021                                                 tx_rx_cal_radio_saveregs[0]);
25022                                 write_radio_reg(pi,
25023                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
25024                                                 pi->
25025                                                 tx_rx_cal_radio_saveregs[1]);
25026
25027                         } else {
25028                                 write_radio_reg(pi,
25029                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
25030                                                 pi->
25031                                                 tx_rx_cal_radio_saveregs[0]);
25032                                 write_radio_reg(pi,
25033                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
25034                                                 pi->
25035                                                 tx_rx_cal_radio_saveregs[1]);
25036                         }
25037                 }
25038
25039         } else {
25040                 if (rx_core == PHY_CORE_0) {
25041                         write_radio_reg(pi,
25042                                         RADIO_2056_TX_RXIQCAL_TXMUX |
25043                                         RADIO_2056_TX1,
25044                                         pi->tx_rx_cal_radio_saveregs[0]);
25045
25046                         write_radio_reg(pi,
25047                                         RADIO_2056_RX_RXIQCAL_RXMUX |
25048                                         RADIO_2056_RX0,
25049                                         pi->tx_rx_cal_radio_saveregs[1]);
25050
25051                         if (pi->pubpi.radiorev >= 5) {
25052                                 write_radio_reg(pi,
25053                                                 RADIO_2056_RX_RXSPARE2 |
25054                                                 RADIO_2056_RX0,
25055                                                 pi->
25056                                                 tx_rx_cal_radio_saveregs[2]);
25057
25058                                 write_radio_reg(pi,
25059                                                 RADIO_2056_TX_TXSPARE2 |
25060                                                 RADIO_2056_TX1,
25061                                                 pi->
25062                                                 tx_rx_cal_radio_saveregs[3]);
25063                         }
25064
25065                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25066                                 if (pi->pubpi.radiorev >= 5) {
25067                                         write_radio_reg(pi,
25068                                                         RADIO_2056_RX_LNAA_MASTER
25069                                                         | RADIO_2056_RX0,
25070                                                         pi->
25071                                                         tx_rx_cal_radio_saveregs
25072                                                         [4]);
25073                                 } else {
25074                                         write_radio_reg(pi,
25075                                                         RADIO_2056_RX_LNAA_TUNE
25076                                                         | RADIO_2056_RX0,
25077                                                         pi->
25078                                                         tx_rx_cal_radio_saveregs
25079                                                         [4]);
25080                                 }
25081                         } else {
25082                                 if (pi->pubpi.radiorev >= 5) {
25083                                         write_radio_reg(pi,
25084                                                         RADIO_2056_RX_LNAG_MASTER
25085                                                         | RADIO_2056_RX0,
25086                                                         pi->
25087                                                         tx_rx_cal_radio_saveregs
25088                                                         [4]);
25089                                 } else {
25090                                         write_radio_reg(pi,
25091                                                         RADIO_2056_RX_LNAG_TUNE
25092                                                         | RADIO_2056_RX0,
25093                                                         pi->
25094                                                         tx_rx_cal_radio_saveregs
25095                                                         [4]);
25096                                 }
25097                         }
25098
25099                 } else {
25100                         write_radio_reg(pi,
25101                                         RADIO_2056_TX_RXIQCAL_TXMUX |
25102                                         RADIO_2056_TX0,
25103                                         pi->tx_rx_cal_radio_saveregs[0]);
25104
25105                         write_radio_reg(pi,
25106                                         RADIO_2056_RX_RXIQCAL_RXMUX |
25107                                         RADIO_2056_RX1,
25108                                         pi->tx_rx_cal_radio_saveregs[1]);
25109
25110                         if (pi->pubpi.radiorev >= 5) {
25111                                 write_radio_reg(pi,
25112                                                 RADIO_2056_RX_RXSPARE2 |
25113                                                 RADIO_2056_RX1,
25114                                                 pi->
25115                                                 tx_rx_cal_radio_saveregs[2]);
25116
25117                                 write_radio_reg(pi,
25118                                                 RADIO_2056_TX_TXSPARE2 |
25119                                                 RADIO_2056_TX0,
25120                                                 pi->
25121                                                 tx_rx_cal_radio_saveregs[3]);
25122                         }
25123
25124                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25125                                 if (pi->pubpi.radiorev >= 5) {
25126                                         write_radio_reg(pi,
25127                                                         RADIO_2056_RX_LNAA_MASTER
25128                                                         | RADIO_2056_RX1,
25129                                                         pi->
25130                                                         tx_rx_cal_radio_saveregs
25131                                                         [4]);
25132                                 } else {
25133                                         write_radio_reg(pi,
25134                                                         RADIO_2056_RX_LNAA_TUNE
25135                                                         | RADIO_2056_RX1,
25136                                                         pi->
25137                                                         tx_rx_cal_radio_saveregs
25138                                                         [4]);
25139                                 }
25140                         } else {
25141                                 if (pi->pubpi.radiorev >= 5) {
25142                                         write_radio_reg(pi,
25143                                                         RADIO_2056_RX_LNAG_MASTER
25144                                                         | RADIO_2056_RX1,
25145                                                         pi->
25146                                                         tx_rx_cal_radio_saveregs
25147                                                         [4]);
25148                                 } else {
25149                                         write_radio_reg(pi,
25150                                                         RADIO_2056_RX_LNAG_TUNE
25151                                                         | RADIO_2056_RX1,
25152                                                         pi->
25153                                                         tx_rx_cal_radio_saveregs
25154                                                         [4]);
25155                                 }
25156                         }
25157                 }
25158         }
25159 }
25160
25161 static void wlc_phy_rxcal_physetup_nphy(phy_info_t *pi, u8 rx_core)
25162 {
25163         u8 tx_core;
25164         u16 rx_antval, tx_antval;
25165
25166         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25167
25168                 tx_core = rx_core;
25169         } else {
25170                 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
25171         }
25172
25173         pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
25174         pi->tx_rx_cal_phy_saveregs[1] =
25175             read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
25176         pi->tx_rx_cal_phy_saveregs[2] =
25177             read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
25178         pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
25179         pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
25180         pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
25181         pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
25182         pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
25183         pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
25184         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25185                 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
25186                 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
25187                 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
25188                 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
25189         }
25190
25191         pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
25192         pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
25193         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25194                     0x29b, (0x1 << 0), (0) << 0);
25195
25196         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25197                     0x29b, (0x1 << 0), (0) << 0);
25198
25199         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25200
25201                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
25202
25203                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
25204
25205         } else {
25206
25207                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
25208                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
25209                 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
25210                 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
25211         }
25212
25213         mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
25214         mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
25215                     (0x1 << 2), (0x1 << 2));
25216         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
25217                 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
25218                             (0x1 << 0) | (0x1 << 1), 0);
25219                 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
25220                             0x8f : 0xa5,
25221                             (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
25222         }
25223
25224         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
25225                                          RADIO_MIMO_CORESEL_CORE1 |
25226                                          RADIO_MIMO_CORESEL_CORE2);
25227
25228         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25229                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25230                                                   0, 0, 0,
25231                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
25232                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
25233                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25234                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
25235                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25236                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
25237                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25238                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
25239                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
25240                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
25241                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25242                 if (CHSPEC_IS40(pi->radio_chanspec)) {
25243                         wlc_phy_rfctrl_override_nphy_rev7(pi,
25244                                                           (0x1 << 7),
25245                                                           2, 0, 0,
25246                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
25247                 } else {
25248                         wlc_phy_rfctrl_override_nphy_rev7(pi,
25249                                                           (0x1 << 7),
25250                                                           0, 0, 0,
25251                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
25252                 }
25253                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
25254                                                   0, 0, 0,
25255                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25256                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
25257                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25258         } else {
25259                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
25260         }
25261
25262         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
25263
25264         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25265
25266                 wlc_phy_rfctrlintc_override_nphy(pi,
25267                                                  NPHY_RfctrlIntc_override_TRSW,
25268                                                  0x1, rx_core + 1);
25269         } else {
25270
25271                 if (rx_core == PHY_CORE_0) {
25272                         rx_antval = 0x1;
25273                         tx_antval = 0x8;
25274                 } else {
25275                         rx_antval = 0x4;
25276                         tx_antval = 0x2;
25277                 }
25278
25279                 wlc_phy_rfctrlintc_override_nphy(pi,
25280                                                  NPHY_RfctrlIntc_override_TRSW,
25281                                                  rx_antval, rx_core + 1);
25282                 wlc_phy_rfctrlintc_override_nphy(pi,
25283                                                  NPHY_RfctrlIntc_override_TRSW,
25284                                                  tx_antval, tx_core + 1);
25285         }
25286 }
25287
25288 static void wlc_phy_rxcal_phycleanup_nphy(phy_info_t *pi, u8 rx_core)
25289 {
25290
25291         write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
25292         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
25293                       pi->tx_rx_cal_phy_saveregs[1]);
25294         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
25295                       pi->tx_rx_cal_phy_saveregs[2]);
25296         write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
25297         write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
25298
25299         write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
25300         write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
25301         write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
25302         write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
25303         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25304                 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
25305                 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
25306                 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
25307                 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
25308         }
25309
25310         write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
25311         write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
25312 }
25313
25314 static void
25315 wlc_phy_rxcal_gainctrl_nphy_rev5(phy_info_t *pi, u8 rx_core,
25316                                  u16 *rxgain, u8 cal_type)
25317 {
25318
25319         u16 num_samps;
25320         phy_iq_est_t est[PHY_CORE_MAX];
25321         u8 tx_core;
25322         nphy_iq_comp_t save_comp, zero_comp;
25323         u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0, thresh_pwr =
25324             10000;
25325         s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
25326         bool gainctrl_done = false;
25327         u8 mix_tia_gain = 3;
25328         s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
25329         s8 curr_gaintbl_index = 3;
25330         u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
25331         nphy_ipa_txrxgain_t *nphy_rxcal_gaintbl;
25332         u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
25333         int fine_gain_idx;
25334         s8 txpwrindex;
25335         u16 nphy_rxcal_txgain[2];
25336
25337         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25338
25339                 tx_core = rx_core;
25340         } else {
25341                 tx_core = 1 - rx_core;
25342         }
25343
25344         num_samps = 1024;
25345         desired_log2_pwr = (cal_type == 0) ? 13 : 13;
25346
25347         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
25348         zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
25349         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
25350
25351         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25352                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25353                         mix_tia_gain = 3;
25354                 } else if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25355                         mix_tia_gain = 4;
25356                 } else {
25357                         mix_tia_gain = 6;
25358                 }
25359                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25360                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
25361                 } else {
25362                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
25363                 }
25364         } else {
25365                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25366                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
25367                 } else {
25368                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
25369                 }
25370         }
25371
25372         do {
25373
25374                 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
25375                     0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
25376                 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
25377                 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
25378                 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
25379                 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
25380                 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
25381
25382                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25383                         wlc_phy_rfctrl_override_1tomany_nphy(pi,
25384                                                              NPHY_REV7_RfctrlOverride_cmd_rxgain,
25385                                                              ((lpf_biq1 << 12) |
25386                                                               (lpf_biq0 << 8) |
25387                                                               (mix_tia_gain <<
25388                                                                4) | (lna2 << 2)
25389                                                               | lna1), 0x3, 0);
25390                 } else {
25391                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
25392                                                      ((hpvga << 12) |
25393                                                       (lpf_biq1 << 10) |
25394                                                       (lpf_biq0 << 8) |
25395                                                       (mix_tia_gain << 4) |
25396                                                       (lna2 << 2) | lna1), 0x3,
25397                                                      0);
25398                 }
25399
25400                 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
25401
25402                 if (txpwrindex == -1) {
25403                         nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
25404                         nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
25405                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
25406                                                  2, 0x110, 16,
25407                                                  nphy_rxcal_txgain);
25408                 } else {
25409                         wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
25410                                                  false);
25411                 }
25412
25413                 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
25414                                      NPHY_RXCAL_TONEFREQ_40MHz :
25415                                      NPHY_RXCAL_TONEFREQ_20MHz,
25416                                      NPHY_RXCAL_TONEAMP, 0, cal_type, false);
25417
25418                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
25419                 i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
25420                 q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
25421                 curr_pwr = i_pwr + q_pwr;
25422
25423                 switch (gainctrl_dirn) {
25424                 case NPHY_RXCAL_GAIN_INIT:
25425                         if (curr_pwr > thresh_pwr) {
25426                                 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
25427                                 prev_gaintbl_index = curr_gaintbl_index;
25428                                 curr_gaintbl_index--;
25429                         } else {
25430                                 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
25431                                 prev_gaintbl_index = curr_gaintbl_index;
25432                                 curr_gaintbl_index++;
25433                         }
25434                         break;
25435
25436                 case NPHY_RXCAL_GAIN_UP:
25437                         if (curr_pwr > thresh_pwr) {
25438                                 gainctrl_done = true;
25439                                 optim_pwr = prev_pwr;
25440                                 optim_gaintbl_index = prev_gaintbl_index;
25441                         } else {
25442                                 prev_gaintbl_index = curr_gaintbl_index;
25443                                 curr_gaintbl_index++;
25444                         }
25445                         break;
25446
25447                 case NPHY_RXCAL_GAIN_DOWN:
25448                         if (curr_pwr > thresh_pwr) {
25449                                 prev_gaintbl_index = curr_gaintbl_index;
25450                                 curr_gaintbl_index--;
25451                         } else {
25452                                 gainctrl_done = true;
25453                                 optim_pwr = curr_pwr;
25454                                 optim_gaintbl_index = curr_gaintbl_index;
25455                         }
25456                         break;
25457
25458                 default:
25459                         ASSERT(0);
25460                 }
25461
25462                 if ((curr_gaintbl_index < 0) ||
25463                     (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
25464                         gainctrl_done = true;
25465                         optim_pwr = curr_pwr;
25466                         optim_gaintbl_index = prev_gaintbl_index;
25467                 } else {
25468                         prev_pwr = curr_pwr;
25469                 }
25470
25471                 wlc_phy_stopplayback_nphy(pi);
25472         } while (!gainctrl_done);
25473
25474         hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
25475         lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
25476         lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
25477         lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
25478         lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
25479         txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
25480
25481         actual_log2_pwr = wlc_phy_nbits(optim_pwr);
25482         delta_pwr = desired_log2_pwr - actual_log2_pwr;
25483
25484         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25485                 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
25486
25487                 if (fine_gain_idx + (int)lpf_biq0 > 10) {
25488                         lpf_biq1 = 10 - lpf_biq0;
25489                 } else {
25490                         lpf_biq1 = (u16) max(fine_gain_idx, 0);
25491                 }
25492                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
25493                                                      NPHY_REV7_RfctrlOverride_cmd_rxgain,
25494                                                      ((lpf_biq1 << 12) |
25495                                                       (lpf_biq0 << 8) |
25496                                                       (mix_tia_gain << 4) |
25497                                                       (lna2 << 2) | lna1), 0x3,
25498                                                      0);
25499         } else {
25500                 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
25501                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
25502                                              ((hpvga << 12) | (lpf_biq1 << 10) |
25503                                               (lpf_biq0 << 8) | (mix_tia_gain <<
25504                                                                  4) | (lna2 <<
25505                                                                        2) |
25506                                               lna1), 0x3, 0);
25507
25508         }
25509
25510         if (rxgain != NULL) {
25511                 *rxgain++ = lna1;
25512                 *rxgain++ = lna2;
25513                 *rxgain++ = mix_tia_gain;
25514                 *rxgain++ = lpf_biq0;
25515                 *rxgain++ = lpf_biq1;
25516                 *rxgain = hpvga;
25517         }
25518
25519         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
25520 }
25521
25522 static void
25523 wlc_phy_rxcal_gainctrl_nphy(phy_info_t *pi, u8 rx_core, u16 *rxgain,
25524                             u8 cal_type)
25525 {
25526         wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
25527 }
25528
25529 static u8
25530 wlc_phy_rc_sweep_nphy(phy_info_t *pi, u8 core_idx, u8 loopback_type)
25531 {
25532         u32 target_bws[2] = { 9500, 21000 };
25533         u32 ref_tones[2] = { 3000, 6000 };
25534         u32 target_bw, ref_tone;
25535
25536         u32 target_pwr_ratios[2] = { 28606, 18468 };
25537         u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
25538
25539         u16 start_rccal_ovr_val = 128;
25540         u16 txlpf_rccal_lpc_ovr_val = 128;
25541         u16 rxlpf_rccal_hpc_ovr_val = 159;
25542
25543         u16 orig_txlpf_rccal_lpc_ovr_val;
25544         u16 orig_rxlpf_rccal_hpc_ovr_val;
25545         u16 radio_addr_offset_rx;
25546         u16 radio_addr_offset_tx;
25547         u16 orig_dcBypass;
25548         u16 orig_RxStrnFilt40Num[6];
25549         u16 orig_RxStrnFilt40Den[4];
25550         u16 orig_rfctrloverride[2];
25551         u16 orig_rfctrlauxreg[2];
25552         u16 orig_rfctrlrssiothers;
25553         u16 tx_lpf_bw = 4;
25554
25555         u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
25556         u16 lpf_hpc = 7, hpvga_hpc = 7;
25557
25558         s8 rccal_stepsize;
25559         u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
25560         u32 ref_iq_vals = 0, target_iq_vals = 0;
25561         u16 num_samps, log_num_samps = 10;
25562         phy_iq_est_t est[PHY_CORE_MAX];
25563
25564         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25565                 return 0;
25566         }
25567
25568         num_samps = (1 << log_num_samps);
25569
25570         if (CHSPEC_IS40(pi->radio_chanspec)) {
25571                 target_bw = target_bws[1];
25572                 target_pwr_ratio = target_pwr_ratios[1];
25573                 ref_tone = ref_tones[1];
25574                 rx_lpf_bw = rx_lpf_bws[1];
25575         } else {
25576                 target_bw = target_bws[0];
25577                 target_pwr_ratio = target_pwr_ratios[0];
25578                 ref_tone = ref_tones[0];
25579                 rx_lpf_bw = rx_lpf_bws[0];
25580         }
25581
25582         if (core_idx == 0) {
25583                 radio_addr_offset_rx = RADIO_2056_RX0;
25584                 radio_addr_offset_tx =
25585                     (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
25586         } else {
25587                 radio_addr_offset_rx = RADIO_2056_RX1;
25588                 radio_addr_offset_tx =
25589                     (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
25590         }
25591
25592         orig_txlpf_rccal_lpc_ovr_val =
25593             read_radio_reg(pi,
25594                            (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx));
25595         orig_rxlpf_rccal_hpc_ovr_val =
25596             read_radio_reg(pi,
25597                            (RADIO_2056_RX_RXLPF_RCCAL_HPC |
25598                             radio_addr_offset_rx));
25599
25600         orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
25601
25602         orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
25603         orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
25604         orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
25605         orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
25606         orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
25607         orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
25608         orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
25609         orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
25610         orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
25611         orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
25612
25613         orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
25614         orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
25615         orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
25616         orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
25617         orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
25618
25619         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
25620                         txlpf_rccal_lpc_ovr_val);
25621
25622         write_radio_reg(pi,
25623                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
25624                         rxlpf_rccal_hpc_ovr_val);
25625
25626         mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
25627
25628         write_phy_reg(pi, 0x267, 0x02d4);
25629         write_phy_reg(pi, 0x268, 0x0000);
25630         write_phy_reg(pi, 0x269, 0x0000);
25631         write_phy_reg(pi, 0x26a, 0x0000);
25632         write_phy_reg(pi, 0x26b, 0x0000);
25633         write_phy_reg(pi, 0x26c, 0x02d4);
25634         write_phy_reg(pi, 0x26d, 0x0000);
25635         write_phy_reg(pi, 0x26e, 0x0000);
25636         write_phy_reg(pi, 0x26f, 0x0000);
25637         write_phy_reg(pi, 0x270, 0x0000);
25638
25639         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
25640         or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
25641         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
25642         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
25643
25644         mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
25645                     (0x7 << 10), (tx_lpf_bw << 10));
25646         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
25647                     (0x7 << 0), (hpvga_hpc << 0));
25648         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
25649                     (0x7 << 4), (lpf_hpc << 4));
25650         mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
25651                     (0x7 << 8), (rx_lpf_bw << 8));
25652
25653         rccal_stepsize = 16;
25654         rccal_val = start_rccal_ovr_val + rccal_stepsize;
25655
25656         while (rccal_stepsize >= 0) {
25657                 write_radio_reg(pi,
25658                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
25659                                  radio_addr_offset_rx), rccal_val);
25660
25661                 if (rccal_stepsize == 16) {
25662
25663                         wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
25664                                              0, 1, false);
25665                         udelay(2);
25666
25667                         wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
25668
25669                         if (core_idx == 0) {
25670                                 ref_iq_vals =
25671                                     max_t(u32, (est[0].i_pwr +
25672                                          est[0].q_pwr) >> (log_num_samps + 1),
25673                                         1);
25674                         } else {
25675                                 ref_iq_vals =
25676                                     max_t(u32, (est[1].i_pwr +
25677                                          est[1].q_pwr) >> (log_num_samps + 1),
25678                                         1);
25679                         }
25680
25681                         wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
25682                                              0, 1, false);
25683                         udelay(2);
25684                 }
25685
25686                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
25687
25688                 if (core_idx == 0) {
25689                         target_iq_vals =
25690                             (est[0].i_pwr + est[0].q_pwr) >> (log_num_samps +
25691                                                               1);
25692                 } else {
25693                         target_iq_vals =
25694                             (est[1].i_pwr + est[1].q_pwr) >> (log_num_samps +
25695                                                               1);
25696                 }
25697                 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
25698
25699                 if (rccal_stepsize == 0) {
25700                         rccal_stepsize--;
25701                 } else if (rccal_stepsize == 1) {
25702                         last_rccal_val = rccal_val;
25703                         rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
25704                         last_pwr_ratio = pwr_ratio;
25705                         rccal_stepsize--;
25706                 } else {
25707                         rccal_stepsize = (rccal_stepsize >> 1);
25708                         rccal_val += ((pwr_ratio > target_pwr_ratio) ?
25709                                       rccal_stepsize : (-rccal_stepsize));
25710                 }
25711
25712                 if (rccal_stepsize == -1) {
25713                         best_rccal_val =
25714                             (ABS((int)last_pwr_ratio - (int)target_pwr_ratio) <
25715                              ABS((int)pwr_ratio -
25716                                  (int)target_pwr_ratio)) ? last_rccal_val :
25717                             rccal_val;
25718
25719                         if (CHSPEC_IS40(pi->radio_chanspec)) {
25720                                 if ((best_rccal_val > 140)
25721                                     || (best_rccal_val < 135)) {
25722                                         best_rccal_val = 138;
25723                                 }
25724                         } else {
25725                                 if ((best_rccal_val > 142)
25726                                     || (best_rccal_val < 137)) {
25727                                         best_rccal_val = 140;
25728                                 }
25729                         }
25730
25731                         write_radio_reg(pi,
25732                                         (RADIO_2056_RX_RXLPF_RCCAL_LPC |
25733                                          radio_addr_offset_rx), best_rccal_val);
25734                 }
25735         }
25736
25737         wlc_phy_stopplayback_nphy(pi);
25738
25739         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
25740                         orig_txlpf_rccal_lpc_ovr_val);
25741         write_radio_reg(pi,
25742                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
25743                         orig_rxlpf_rccal_hpc_ovr_val);
25744
25745         mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
25746
25747         write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
25748         write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
25749         write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
25750         write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
25751         write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
25752         write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
25753         write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
25754         write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
25755         write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
25756         write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
25757
25758         write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
25759         write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
25760         write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
25761         write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
25762         write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
25763
25764         pi->nphy_anarxlpf_adjusted = false;
25765
25766         return best_rccal_val - 0x80;
25767 }
25768
25769 #define WAIT_FOR_SCOPE  4000
25770 static int
25771 wlc_phy_cal_rxiq_nphy_rev3(phy_info_t *pi, nphy_txgains_t target_gain,
25772                            u8 cal_type, bool debug)
25773 {
25774         u16 orig_BBConfig;
25775         u8 core_no, rx_core;
25776         u8 best_rccal[2];
25777         u16 gain_save[2];
25778         u16 cal_gain[2];
25779         nphy_iqcal_params_t cal_params[2];
25780         u8 rxcore_state;
25781         s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
25782         s8 txlpf_idac;
25783         bool phyhang_avoid_state = false;
25784         bool skip_rxiqcal = false;
25785
25786         orig_BBConfig = read_phy_reg(pi, 0x01);
25787         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25788
25789         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25790
25791         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25792                 phyhang_avoid_state = pi->phyhang_avoid;
25793                 pi->phyhang_avoid = false;
25794         }
25795
25796         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25797
25798         for (core_no = 0; core_no <= 1; core_no++) {
25799                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25800                                               &cal_params[core_no]);
25801                 cal_gain[core_no] = cal_params[core_no].cal_gain;
25802         }
25803
25804         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25805
25806         rxcore_state = wlc_phy_rxcore_getstate_nphy((wlc_phy_t *) pi);
25807
25808         for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
25809
25810                 skip_rxiqcal =
25811                     ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
25812
25813                 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
25814
25815                 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
25816
25817                 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
25818
25819                         wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
25820
25821                         wlc_phy_tx_tone_nphy(pi,
25822                                              (CHSPEC_IS40(pi->radio_chanspec)) ?
25823                                              NPHY_RXCAL_TONEFREQ_40MHz :
25824                                              NPHY_RXCAL_TONEFREQ_20MHz,
25825                                              NPHY_RXCAL_TONEAMP, 0, cal_type,
25826                                              false);
25827
25828                         if (debug)
25829                                 mdelay(WAIT_FOR_SCOPE);
25830
25831                         wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
25832                         wlc_phy_stopplayback_nphy(pi);
25833                 }
25834
25835                 if (((cal_type == 1) || (cal_type == 2))
25836                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
25837
25838                         if (rx_core == PHY_CORE_1) {
25839
25840                                 if (rxcore_state == 1) {
25841                                         wlc_phy_rxcore_setstate_nphy((wlc_phy_t
25842                                                                       *) pi, 3);
25843                                 }
25844
25845                                 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
25846                                                             1);
25847
25848                                 best_rccal[rx_core] =
25849                                     wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
25850                                 pi->nphy_rccal_value = best_rccal[rx_core];
25851
25852                                 if (rxcore_state == 1) {
25853                                         wlc_phy_rxcore_setstate_nphy((wlc_phy_t
25854                                                                       *) pi,
25855                                                                      rxcore_state);
25856                                 }
25857                         }
25858                 }
25859
25860                 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
25861
25862                 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
25863                 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
25864         }
25865
25866         if ((cal_type == 1) || (cal_type == 2)) {
25867
25868                 best_rccal[0] = best_rccal[1];
25869                 write_radio_reg(pi,
25870                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
25871                                  RADIO_2056_RX0), (best_rccal[0] | 0x80));
25872
25873                 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
25874                         rxlpf_rccal_hpc =
25875                             (((int)best_rccal[rx_core] - 12) >> 1) + 10;
25876                         txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
25877
25878                         if (PHY_IPA(pi)) {
25879                                 txlpf_rccal_lpc += IS40MHZ(pi) ? 24 : 12;
25880                                 txlpf_idac = IS40MHZ(pi) ? 0x0e : 0x13;
25881                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
25882                                                  TXLPF_IDAC_4, txlpf_idac);
25883                         }
25884
25885                         rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31), 0);
25886                         txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31), 0);
25887
25888                         write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
25889                                              ((rx_core ==
25890                                                PHY_CORE_0) ? RADIO_2056_RX0 :
25891                                               RADIO_2056_RX1)),
25892                                         (rxlpf_rccal_hpc | 0x80));
25893
25894                         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
25895                                              ((rx_core ==
25896                                                PHY_CORE_0) ? RADIO_2056_TX0 :
25897                                               RADIO_2056_TX1)),
25898                                         (txlpf_rccal_lpc | 0x80));
25899                 }
25900         }
25901
25902         write_phy_reg(pi, 0x01, orig_BBConfig);
25903
25904         wlc_phy_resetcca_nphy(pi);
25905
25906         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25907                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
25908                                                      NPHY_REV7_RfctrlOverride_cmd_rxgain,
25909                                                      0, 0x3, 1);
25910         } else {
25911                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
25912         }
25913         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
25914
25915         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
25916                                  gain_save);
25917
25918         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25919                 pi->phyhang_avoid = phyhang_avoid_state;
25920         }
25921
25922         wlc_phy_stay_in_carriersearch_nphy(pi, false);
25923
25924         return BCME_OK;
25925 }
25926
25927 static int
25928 wlc_phy_cal_rxiq_nphy_rev2(phy_info_t *pi, nphy_txgains_t target_gain,
25929                            bool debug)
25930 {
25931         phy_iq_est_t est[PHY_CORE_MAX];
25932         u8 core_num, rx_core, tx_core;
25933         u16 lna_vals[] = { 0x3, 0x3, 0x1 };
25934         u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
25935         u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
25936         s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
25937         s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
25938         u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
25939         u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
25940         u16 num_samps;
25941         u32 i_pwr, q_pwr, tot_pwr[3];
25942         u8 gain_pass, use_hpf_num;
25943         u16 mask, val1, val2;
25944         u16 core_no;
25945         u16 gain_save[2];
25946         u16 cal_gain[2];
25947         nphy_iqcal_params_t cal_params[2];
25948         u8 phy_bw;
25949         int bcmerror = BCME_OK;
25950         bool first_playtone = true;
25951
25952         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25953
25954         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
25955
25956                 wlc_phy_reapply_txcal_coeffs_nphy(pi);
25957         }
25958
25959         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25960
25961         for (core_no = 0; core_no <= 1; core_no++) {
25962                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25963                                               &cal_params[core_no]);
25964                 cal_gain[core_no] = cal_params[core_no].cal_gain;
25965         }
25966
25967         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25968
25969         num_samps = 1024;
25970         desired_log2_pwr = 13;
25971
25972         for (core_num = 0; core_num < 2; core_num++) {
25973
25974                 rx_core = core_num;
25975                 tx_core = 1 - core_num;
25976
25977                 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
25978                 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
25979                                                 0xa6 : 0xa7);
25980                 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
25981                 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
25982                                                  0x91 : 0x92);
25983                 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
25984                                                  0x91 : 0x92);
25985
25986                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
25987                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
25988
25989                 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
25990                            ((0x1 << 1) | (0x1 << 2)));
25991                 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
25992
25993                 if (((pi->nphy_rxcalparams) & 0xff000000)) {
25994
25995                         write_phy_reg(pi,
25996                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
25997                                       (CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 :
25998                                        0x110));
25999                 } else {
26000
26001                         write_phy_reg(pi,
26002                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
26003                                       (CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 :
26004                                        0x120));
26005                 }
26006
26007                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
26008                               (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
26009                                0x114));
26010
26011                 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
26012                 if (rx_core == PHY_CORE_0) {
26013                         val1 = RADIO_2055_COUPLE_RX_MASK;
26014                         val2 = RADIO_2055_COUPLE_TX_MASK;
26015                 } else {
26016                         val1 = RADIO_2055_COUPLE_TX_MASK;
26017                         val2 = RADIO_2055_COUPLE_RX_MASK;
26018                 }
26019
26020                 if ((pi->nphy_rxcalparams & 0x10000)) {
26021                         mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
26022                                       val1);
26023                         mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
26024                                       val2);
26025                 }
26026
26027                 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
26028
26029                         if (debug)
26030                                 mdelay(WAIT_FOR_SCOPE);
26031
26032                         if (gain_pass < 3) {
26033                                 curr_lna = lna_vals[gain_pass];
26034                                 curr_hpf1 = hpf1_vals[gain_pass];
26035                                 curr_hpf2 = hpf2_vals[gain_pass];
26036                         } else {
26037
26038                                 if (tot_pwr[1] > 10000) {
26039                                         curr_lna = lna_vals[2];
26040                                         curr_hpf1 = hpf1_vals[2];
26041                                         curr_hpf2 = hpf2_vals[2];
26042                                         use_hpf_num = 1;
26043                                         curr_hpf = curr_hpf1;
26044                                         actual_log2_pwr =
26045                                             wlc_phy_nbits(tot_pwr[2]);
26046                                 } else {
26047                                         if (tot_pwr[0] > 10000) {
26048                                                 curr_lna = lna_vals[1];
26049                                                 curr_hpf1 = hpf1_vals[1];
26050                                                 curr_hpf2 = hpf2_vals[1];
26051                                                 use_hpf_num = 1;
26052                                                 curr_hpf = curr_hpf1;
26053                                                 actual_log2_pwr =
26054                                                     wlc_phy_nbits(tot_pwr[1]);
26055                                         } else {
26056                                                 curr_lna = lna_vals[0];
26057                                                 curr_hpf1 = hpf1_vals[0];
26058                                                 curr_hpf2 = hpf2_vals[0];
26059                                                 use_hpf_num = 2;
26060                                                 curr_hpf = curr_hpf2;
26061                                                 actual_log2_pwr =
26062                                                     wlc_phy_nbits(tot_pwr[0]);
26063                                         }
26064                                 }
26065
26066                                 hpf_change = desired_log2_pwr - actual_log2_pwr;
26067                                 curr_hpf += hpf_change;
26068                                 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
26069                                 if (use_hpf_num == 1) {
26070                                         curr_hpf1 = curr_hpf;
26071                                 } else {
26072                                         curr_hpf2 = curr_hpf;
26073                                 }
26074                         }
26075
26076                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
26077                                                      ((curr_hpf2 << 8) |
26078                                                       (curr_hpf1 << 4) |
26079                                                       (curr_lna << 2)), 0x3, 0);
26080                         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
26081
26082                         wlc_phy_stopplayback_nphy(pi);
26083
26084                         if (first_playtone) {
26085                                 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
26086                                                                 (u16) (pi->
26087                                                                           nphy_rxcalparams
26088                                                                           &
26089                                                                           0xffff),
26090                                                                 0, 0, true);
26091                                 first_playtone = false;
26092                         } else {
26093                                 phy_bw =
26094                                     (CHSPEC_IS40(pi->radio_chanspec)) ? 40 : 20;
26095                                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
26096                                                         0, 0, 0, true);
26097                         }
26098
26099                         if (bcmerror == BCME_OK) {
26100                                 if (gain_pass < 3) {
26101
26102                                         wlc_phy_rx_iq_est_nphy(pi, est,
26103                                                                num_samps, 32,
26104                                                                0);
26105                                         i_pwr =
26106                                             (est[rx_core].i_pwr +
26107                                              num_samps / 2) / num_samps;
26108                                         q_pwr =
26109                                             (est[rx_core].q_pwr +
26110                                              num_samps / 2) / num_samps;
26111                                         tot_pwr[gain_pass] = i_pwr + q_pwr;
26112                                 } else {
26113
26114                                         wlc_phy_calc_rx_iq_comp_nphy(pi,
26115                                                                      (1 <<
26116                                                                       rx_core));
26117                                 }
26118
26119                                 wlc_phy_stopplayback_nphy(pi);
26120                         }
26121
26122                         if (bcmerror != BCME_OK)
26123                                 break;
26124                 }
26125
26126                 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
26127                 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
26128
26129                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
26130                               0x92, orig_RfctrlIntcTx);
26131                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
26132                               0x92, orig_RfctrlIntcRx);
26133                 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
26134                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
26135                               0xa7, orig_AfectrlCore);
26136                 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
26137
26138                 if (bcmerror != BCME_OK)
26139                         break;
26140         }
26141
26142         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
26143         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
26144
26145         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26146                                  gain_save);
26147
26148         wlc_phy_stay_in_carriersearch_nphy(pi, false);
26149
26150         return bcmerror;
26151 }
26152
26153 int
26154 wlc_phy_cal_rxiq_nphy(phy_info_t *pi, nphy_txgains_t target_gain,
26155                       u8 cal_type, bool debug)
26156 {
26157         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26158
26159                 cal_type = 0;
26160         }
26161         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26162                 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
26163                                                   debug);
26164         } else {
26165                 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
26166         }
26167 }
26168
26169 static void wlc_phy_extpa_set_tx_digi_filts_nphy(phy_info_t *pi)
26170 {
26171         int j, type = 2;
26172         u16 addr_offset = 0x2c5;
26173
26174         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26175                 write_phy_reg(pi, addr_offset + j,
26176                               NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
26177         }
26178 }
26179
26180 static void wlc_phy_ipa_set_tx_digi_filts_nphy(phy_info_t *pi)
26181 {
26182         int j, type;
26183         u16 addr_offset[] = { 0x186, 0x195,
26184                 0x2c5
26185         };
26186
26187         for (type = 0; type < 3; type++) {
26188                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26189                         write_phy_reg(pi, addr_offset[type] + j,
26190                                       NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
26191                 }
26192         }
26193
26194         if (IS40MHZ(pi)) {
26195                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26196                         write_phy_reg(pi, 0x186 + j,
26197                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
26198                 }
26199         } else {
26200                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26201                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26202                                 write_phy_reg(pi, 0x186 + j,
26203                                               NPHY_IPA_REV4_txdigi_filtcoeffs[5]
26204                                               [j]);
26205                         }
26206                 }
26207
26208                 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
26209                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26210                                 write_phy_reg(pi, 0x2c5 + j,
26211                                               NPHY_IPA_REV4_txdigi_filtcoeffs[6]
26212                                               [j]);
26213                         }
26214                 }
26215         }
26216 }
26217
26218 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(phy_info_t *pi)
26219 {
26220         int j;
26221
26222         if (IS40MHZ(pi)) {
26223                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26224                         write_phy_reg(pi, 0x195 + j,
26225                                       NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
26226                 }
26227         } else {
26228                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26229                         write_phy_reg(pi, 0x186 + j,
26230                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
26231                 }
26232         }
26233 }
26234
26235 static u16 wlc_phy_ipa_get_bbmult_nphy(phy_info_t *pi)
26236 {
26237         u16 m0m1;
26238
26239         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
26240
26241         return m0m1;
26242 }
26243
26244 static void wlc_phy_ipa_set_bbmult_nphy(phy_info_t *pi, u8 m0, u8 m1)
26245 {
26246         u16 m0m1 = (u16) ((m0 << 8) | m1);
26247
26248         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
26249         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
26250 }
26251
26252 static u32 *wlc_phy_get_ipa_gaintbl_nphy(phy_info_t *pi)
26253 {
26254         u32 *tx_pwrctrl_tbl = NULL;
26255
26256         if (CHSPEC_IS2G(pi->radio_chanspec)) {
26257
26258                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26259
26260                         if ((pi->pubpi.radiorev == 4)
26261                             || (pi->pubpi.radiorev == 6)) {
26262
26263                                 tx_pwrctrl_tbl =
26264                                     nphy_tpc_txgain_ipa_2g_2057rev4n6;
26265                         } else if (pi->pubpi.radiorev == 3) {
26266
26267                                 tx_pwrctrl_tbl =
26268                                     nphy_tpc_txgain_ipa_2g_2057rev3;
26269                         } else if (pi->pubpi.radiorev == 5) {
26270
26271                                 tx_pwrctrl_tbl =
26272                                     nphy_tpc_txgain_ipa_2g_2057rev5;
26273                         } else if ((pi->pubpi.radiorev == 7)
26274                                    || (pi->pubpi.radiorev == 8)) {
26275
26276                                 tx_pwrctrl_tbl =
26277                                     nphy_tpc_txgain_ipa_2g_2057rev7;
26278                         } else {
26279                                 ASSERT(0);
26280                         }
26281
26282                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
26283
26284                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
26285                         if (pi->sh->chip == BCM47162_CHIP_ID) {
26286
26287                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
26288                         }
26289
26290                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
26291
26292                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
26293                 } else {
26294
26295                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
26296                 }
26297
26298         } else {
26299
26300                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26301                         if ((pi->pubpi.radiorev == 3) ||
26302                             (pi->pubpi.radiorev == 4) ||
26303                             (pi->pubpi.radiorev == 6)) {
26304
26305                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
26306                         } else if ((pi->pubpi.radiorev == 7)
26307                                    || (pi->pubpi.radiorev == 8)) {
26308
26309                                 tx_pwrctrl_tbl =
26310                                     nphy_tpc_txgain_ipa_5g_2057rev7;
26311                         } else {
26312                                 ASSERT(0);
26313                         }
26314
26315                 } else {
26316                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
26317                 }
26318         }
26319
26320         return tx_pwrctrl_tbl;
26321 }
26322
26323 static void
26324 wlc_phy_papd_cal_setup_nphy(phy_info_t *pi, nphy_papd_restore_state *state,
26325                             u8 core)
26326 {
26327         s32 tone_freq;
26328         u8 off_core;
26329         u16 mixgain = 0;
26330
26331         off_core = core ^ 0x1;
26332         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26333
26334                 if (NREV_IS(pi->pubpi.phy_rev, 7)
26335                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
26336                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26337                                                           wlc_phy_read_lpf_bw_ctl_nphy
26338                                                           (pi, 0), 0, 0,
26339                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
26340                 }
26341
26342                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26343                         if (pi->pubpi.radiorev == 5) {
26344                                 mixgain = (core == 0) ? 0x20 : 0x00;
26345
26346                         } else if ((pi->pubpi.radiorev == 7)
26347                                    || (pi->pubpi.radiorev == 8)) {
26348
26349                                 mixgain = 0x00;
26350
26351                         } else if ((pi->pubpi.radiorev <= 4)
26352                                    || (pi->pubpi.radiorev == 6)) {
26353
26354                                 mixgain = 0x00;
26355                         } else {
26356                                 ASSERT(0);
26357                         }
26358
26359                 } else {
26360                         if ((pi->pubpi.radiorev == 4) ||
26361                             (pi->pubpi.radiorev == 6)) {
26362
26363                                 mixgain = 0x50;
26364                         } else if ((pi->pubpi.radiorev == 3)
26365                                    || (pi->pubpi.radiorev == 7)
26366                                    || (pi->pubpi.radiorev == 8)) {
26367
26368                                 mixgain = 0x0;
26369                         } else {
26370                                 ASSERT(0);
26371                         }
26372                 }
26373
26374                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
26375                                                   mixgain, (1 << core), 0,
26376                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26377
26378                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26379                                                      NPHY_REV7_RfctrlOverride_cmd_tx_pu,
26380                                                      1, (1 << core), 0);
26381                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26382                                                      NPHY_REV7_RfctrlOverride_cmd_tx_pu,
26383                                                      0, (1 << off_core), 0);
26384
26385                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26386                                                   0, 0x3, 0,
26387                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26388                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
26389                                                   (1 << core), 0,
26390                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26391                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
26392                                                   (1 << core), 0,
26393                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26394                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
26395                                                   (1 << core), 0,
26396                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26397                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
26398                                                   (1 << core), 0,
26399                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26400                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
26401                                                   (1 << core), 0,
26402                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26403                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
26404                                                   (1 << core), 0,
26405                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26406                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
26407                                                   (1 << core), 0,
26408                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26409
26410                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
26411                                                   0, (1 << core), 0,
26412                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26413                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
26414                                                   (1 << core), 0,
26415                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26416
26417                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
26418                                                     0xa6 : 0xa7);
26419                 state->afeoverride[core] =
26420                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
26421                 state->afectrl[off_core] =
26422                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
26423                 state->afeoverride[off_core] =
26424                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
26425
26426                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
26427                             (0x1 << 2), 0);
26428                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
26429                                  0xa5), (0x1 << 2), (0x1 << 2));
26430
26431                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
26432                             (0x1 << 2), (0x1 << 2));
26433                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
26434                                  0x8f), (0x1 << 2), (0x1 << 2));
26435
26436                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26437                         state->pwrup[core] =
26438                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26439                                             TXRXCOUPLE_2G_PWRUP);
26440                         state->atten[core] =
26441                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26442                                             TXRXCOUPLE_2G_ATTEN);
26443                         state->pwrup[off_core] =
26444                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26445                                             TXRXCOUPLE_2G_PWRUP);
26446                         state->atten[off_core] =
26447                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26448                                             TXRXCOUPLE_2G_ATTEN);
26449
26450                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26451                                          TXRXCOUPLE_2G_PWRUP, 0xc);
26452
26453                         if ((pi->pubpi.radiorev == 3) ||
26454                             (pi->pubpi.radiorev == 4) ||
26455                             (pi->pubpi.radiorev == 6)) {
26456
26457                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26458                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
26459
26460                         } else if (pi->pubpi.radiorev == 5) {
26461
26462                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26463                                                  TXRXCOUPLE_2G_ATTEN,
26464                                                  (core == 0) ? 0xf7 : 0xf2);
26465
26466                         } else if ((pi->pubpi.radiorev == 7)
26467                                    || (pi->pubpi.radiorev == 8)) {
26468
26469                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26470                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
26471
26472                         } else {
26473                                 ASSERT(0);
26474                         }
26475
26476                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26477                                          TXRXCOUPLE_2G_PWRUP, 0x0);
26478                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26479                                          TXRXCOUPLE_2G_ATTEN, 0xff);
26480
26481                 } else {
26482                         state->pwrup[core] =
26483                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26484                                             TXRXCOUPLE_5G_PWRUP);
26485                         state->atten[core] =
26486                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26487                                             TXRXCOUPLE_5G_ATTEN);
26488                         state->pwrup[off_core] =
26489                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26490                                             TXRXCOUPLE_5G_PWRUP);
26491                         state->atten[off_core] =
26492                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26493                                             TXRXCOUPLE_5G_ATTEN);
26494
26495                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26496                                          TXRXCOUPLE_5G_PWRUP, 0xc);
26497
26498                         if ((pi->pubpi.radiorev == 7)
26499                             || (pi->pubpi.radiorev == 8)) {
26500
26501                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26502                                                  TXRXCOUPLE_5G_ATTEN, 0xf4);
26503
26504                         } else {
26505                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26506                                                  TXRXCOUPLE_5G_ATTEN, 0xf0);
26507                         }
26508
26509                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26510                                          TXRXCOUPLE_5G_PWRUP, 0x0);
26511                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26512                                          TXRXCOUPLE_5G_ATTEN, 0xff);
26513                 }
26514
26515                 tone_freq = 4000;
26516
26517                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
26518
26519                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26520                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
26521
26522                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26523                             0x2a4, (0x1 << 13), (1) << 13);
26524
26525                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
26526                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
26527
26528                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
26529                             0x2a4, (0x1 << 13), (0) << 13);
26530
26531         } else {
26532
26533                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
26534
26535                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
26536
26537                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
26538
26539                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
26540                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
26541
26542                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
26543                                                     0xa6 : 0xa7);
26544                 state->afeoverride[core] =
26545                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
26546
26547                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
26548                             (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
26549                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
26550                                  0xa5),
26551                             (0x1 << 0) |
26552                             (0x1 << 1) |
26553                             (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
26554
26555                 state->vga_master[core] =
26556                     READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
26557                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
26558                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26559                         state->fbmix[core] =
26560                             READ_RADIO_REG2(pi, RADIO_2056, RX, core,
26561                                             TXFBMIX_G);
26562                         state->intpa_master[core] =
26563                             READ_RADIO_REG2(pi, RADIO_2056, TX, core,
26564                                             INTPAG_MASTER);
26565
26566                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
26567                                          0x03);
26568                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26569                                          INTPAG_MASTER, 0x04);
26570                 } else {
26571                         state->fbmix[core] =
26572                             READ_RADIO_REG2(pi, RADIO_2056, RX, core,
26573                                             TXFBMIX_A);
26574                         state->intpa_master[core] =
26575                             READ_RADIO_REG2(pi, RADIO_2056, TX, core,
26576                                             INTPAA_MASTER);
26577
26578                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
26579                                          0x03);
26580                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26581                                          INTPAA_MASTER, 0x04);
26582
26583                 }
26584
26585                 tone_freq = 4000;
26586
26587                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
26588
26589                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26590                             0x29b, (0x1 << 0), (1) << 0);
26591
26592                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
26593                             0x29b, (0x1 << 0), (0) << 0);
26594
26595                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
26596         }
26597 }
26598
26599 static void
26600 wlc_phy_papd_cal_cleanup_nphy(phy_info_t *pi, nphy_papd_restore_state *state)
26601 {
26602         u8 core;
26603
26604         wlc_phy_stopplayback_nphy(pi);
26605
26606         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26607
26608                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26609
26610                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
26611                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26612                                                  TXRXCOUPLE_2G_PWRUP, 0);
26613                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26614                                                  TXRXCOUPLE_2G_ATTEN,
26615                                                  state->atten[core]);
26616                         } else {
26617                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26618                                                  TXRXCOUPLE_5G_PWRUP, 0);
26619                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26620                                                  TXRXCOUPLE_5G_ATTEN,
26621                                                  state->atten[core]);
26622                         }
26623                 }
26624
26625                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6)) {
26626                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
26627                                                           1, 0x3, 0,
26628                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
26629                 } else {
26630                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
26631                                                           0, 0x3, 1,
26632                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
26633                 }
26634                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
26635                                                   0, 0x3, 1,
26636                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26637                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
26638                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26639                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
26640                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26641                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
26642                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26643                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
26644                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26645                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
26646                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26647                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
26648                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26649                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
26650                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26651                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
26652                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26653                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
26654                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26655                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
26656                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26657                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
26658                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26659                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
26660                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26661                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
26662                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26663                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
26664                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26665                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
26666                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26667
26668                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26669
26670                         write_phy_reg(pi, (core == PHY_CORE_0) ?
26671                                       0xa6 : 0xa7, state->afectrl[core]);
26672                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
26673                                       0xa5, state->afeoverride[core]);
26674                 }
26675
26676                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
26677                                             (state->mm & 0xff));
26678
26679                 if (NREV_IS(pi->pubpi.phy_rev, 7)
26680                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
26681                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7), 0, 0,
26682                                                           1,
26683                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
26684                 }
26685         } else {
26686
26687                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
26688                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
26689                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
26690
26691                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
26692                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
26693
26694                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26695
26696                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
26697                                          state->vga_master[core]);
26698                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
26699                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
26700                                                  TXFBMIX_G, state->fbmix[core]);
26701                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26702                                                  INTPAG_MASTER,
26703                                                  state->intpa_master[core]);
26704                         } else {
26705                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
26706                                                  TXFBMIX_A, state->fbmix[core]);
26707                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26708                                                  INTPAA_MASTER,
26709                                                  state->intpa_master[core]);
26710                         }
26711
26712                         write_phy_reg(pi, (core == PHY_CORE_0) ?
26713                                       0xa6 : 0xa7, state->afectrl[core]);
26714                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
26715                                       0xa5, state->afeoverride[core]);
26716                 }
26717
26718                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
26719                                             (state->mm & 0xff));
26720
26721                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
26722         }
26723 }
26724
26725 static void
26726 wlc_phy_a1_nphy(phy_info_t *pi, u8 core, u32 winsz, u32 start,
26727                 u32 end)
26728 {
26729         u32 *buf, *src, *dst, sz;
26730
26731         sz = end - start + 1;
26732         ASSERT(end > start);
26733         ASSERT(end < NPHY_PAPD_EPS_TBL_SIZE);
26734
26735         buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
26736         if (NULL == buf) {
26737                 return;
26738         }
26739
26740         src = buf;
26741         dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
26742
26743         wlc_phy_table_read_nphy(pi,
26744                                 (core ==
26745                                  PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
26746                                  NPHY_TBL_ID_EPSILONTBL1),
26747                                 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
26748
26749         do {
26750                 u32 phy_a1, phy_a2;
26751                 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
26752
26753                 phy_a1 = end - min(end, (winsz >> 1));
26754                 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1, end + (winsz >> 1));
26755                 phy_a3 = phy_a2 - phy_a1 + 1;
26756                 phy_a6 = 0;
26757                 phy_a7 = 0;
26758
26759                 do {
26760                         wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
26761                                                     &phy_a5);
26762                         phy_a6 += phy_a4;
26763                         phy_a7 += phy_a5;
26764                 } while (phy_a2-- != phy_a1);
26765
26766                 phy_a6 /= phy_a3;
26767                 phy_a7 /= phy_a3;
26768                 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
26769         } while (end-- != start);
26770
26771         wlc_phy_table_write_nphy(pi,
26772                                  (core ==
26773                                   PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
26774                                  NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
26775
26776         kfree(buf);
26777 }
26778
26779 static void
26780 wlc_phy_a2_nphy(phy_info_t *pi, nphy_ipa_txcalgains_t *txgains,
26781                 phy_cal_mode_t cal_mode, u8 core)
26782 {
26783         u16 phy_a1, phy_a2, phy_a3;
26784         u16 phy_a4, phy_a5;
26785         bool phy_a6;
26786         u8 phy_a7, m[2];
26787         u32 phy_a8 = 0;
26788         nphy_txgains_t phy_a9;
26789
26790         if (NREV_LT(pi->pubpi.phy_rev, 3))
26791                 return;
26792
26793         phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
26794
26795         ASSERT((cal_mode == CAL_FULL) || (cal_mode == CAL_GCTRL)
26796                || (cal_mode == CAL_SOFT));
26797         phy_a6 = ((cal_mode == CAL_GCTRL)
26798                   || (cal_mode == CAL_SOFT)) ? true : false;
26799
26800         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26801
26802                 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
26803
26804                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26805                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
26806                                   (phy_a9.txgm[core] << 12) |
26807                                   (phy_a9.pga[core] << 8) |
26808                                   (txgains->gains.pad[core] << 3) |
26809                                   (phy_a9.ipa[core]));
26810                 } else {
26811                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
26812                                   (phy_a9.txgm[core] << 12) |
26813                                   (txgains->gains.pga[core] << 8) |
26814                                   (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
26815                 }
26816
26817                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26818                                                      NPHY_REV7_RfctrlOverride_cmd_txgain,
26819                                                      phy_a5, (1 << core), 0);
26820
26821                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26822                         if ((pi->pubpi.radiorev <= 4)
26823                             || (pi->pubpi.radiorev == 6)) {
26824
26825                                 m[core] = IS40MHZ(pi) ? 60 : 79;
26826                         } else {
26827
26828                                 m[core] = IS40MHZ(pi) ? 45 : 64;
26829                         }
26830
26831                 } else {
26832                         m[core] = IS40MHZ(pi) ? 75 : 107;
26833                 }
26834
26835                 m[phy_a7] = 0;
26836                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
26837
26838                 phy_a2 = 63;
26839
26840                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26841                         if (pi->sh->chip == BCM6362_CHIP_ID) {
26842                                 phy_a1 = 35;
26843                                 phy_a3 = 35;
26844                         } else if ((pi->pubpi.radiorev == 4)
26845                                    || (pi->pubpi.radiorev == 6)) {
26846                                 phy_a1 = 30;
26847                                 phy_a3 = 30;
26848                         } else {
26849                                 phy_a1 = 25;
26850                                 phy_a3 = 25;
26851                         }
26852                 } else {
26853                         if ((pi->pubpi.radiorev == 5)
26854                             || (pi->pubpi.radiorev == 7)
26855                             || (pi->pubpi.radiorev == 8)) {
26856                                 phy_a1 = 25;
26857                                 phy_a3 = 25;
26858                         } else {
26859                                 phy_a1 = 35;
26860                                 phy_a3 = 35;
26861                         }
26862                 }
26863
26864                 if (cal_mode == CAL_GCTRL) {
26865                         if ((pi->pubpi.radiorev == 5)
26866                             && (CHSPEC_IS2G(pi->radio_chanspec))) {
26867                                 phy_a1 = 55;
26868                         } else if (((pi->pubpi.radiorev == 7) &&
26869                                     (CHSPEC_IS2G(pi->radio_chanspec))) ||
26870                                    ((pi->pubpi.radiorev == 8) &&
26871                                     (CHSPEC_IS2G(pi->radio_chanspec)))) {
26872                                 phy_a1 = 60;
26873                         } else {
26874                                 phy_a1 = 63;
26875                         }
26876
26877                 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
26878
26879                         phy_a1 = 35;
26880                         phy_a3 = 35;
26881                 }
26882
26883                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26884                             0x29b, (0x1 << 0), (1) << 0);
26885
26886                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
26887                             0x29b, (0x1 << 0), (0) << 0);
26888
26889                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26890                             0x2a4, (0x1 << 13), (1) << 13);
26891
26892                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
26893                             0x2a4, (0x1 << 13), (0) << 13);
26894
26895                 write_phy_reg(pi, 0x2a1, 0x80);
26896                 write_phy_reg(pi, 0x2a2, 0x100);
26897
26898                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26899                             0x2a4, (0x7 << 4), (11) << 4);
26900
26901                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26902                             0x2a4, (0x7 << 8), (11) << 8);
26903
26904                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26905                             0x2a4, (0x7 << 0), (0x3) << 0);
26906
26907                 write_phy_reg(pi, 0x2e5, 0x20);
26908
26909                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
26910
26911                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
26912
26913                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
26914
26915                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26916                                                   1, ((core == 0) ? 1 : 2), 0,
26917                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26918                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26919                                                   0, ((core == 0) ? 2 : 1), 0,
26920                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26921
26922                 write_phy_reg(pi, 0x2be, 1);
26923                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
26924
26925                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26926                                                   0, 0x3, 0,
26927                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26928
26929                 wlc_phy_table_write_nphy(pi,
26930                                          (core ==
26931                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
26932                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
26933                                          32, &phy_a8);
26934
26935                 if (cal_mode != CAL_GCTRL) {
26936                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26937                                 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
26938                         }
26939                 }
26940
26941                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26942                                                      NPHY_REV7_RfctrlOverride_cmd_txgain,
26943                                                      phy_a5, (1 << core), 1);
26944
26945         } else {
26946
26947                 if (txgains) {
26948                         if (txgains->useindex) {
26949                                 phy_a4 = 15 - ((txgains->index) >> 3);
26950                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26951                                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
26952                                                 phy_a5 = 0x00f7 | (phy_a4 << 8);
26953
26954                                                 if (pi->sh->chip ==
26955                                                     BCM47162_CHIP_ID) {
26956                                                         phy_a5 =
26957                                                             0x10f7 | (phy_a4 <<
26958                                                                       8);
26959                                                 }
26960                                         } else
26961                                             if (NREV_IS(pi->pubpi.phy_rev, 5))
26962                                                 phy_a5 = 0x10f7 | (phy_a4 << 8);
26963                                         else
26964                                                 phy_a5 = 0x50f7 | (phy_a4 << 8);
26965                                 } else {
26966                                         phy_a5 = 0x70f7 | (phy_a4 << 8);
26967                                 }
26968                                 wlc_phy_rfctrl_override_nphy(pi,
26969                                                              (0x1 << 13),
26970                                                              phy_a5,
26971                                                              (1 << core), 0);
26972                         } else {
26973                                 wlc_phy_rfctrl_override_nphy(pi,
26974                                                              (0x1 << 13),
26975                                                              0x5bf7,
26976                                                              (1 << core), 0);
26977                         }
26978                 }
26979
26980                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26981                         m[core] = IS40MHZ(pi) ? 45 : 64;
26982                 } else {
26983                         m[core] = IS40MHZ(pi) ? 75 : 107;
26984                 }
26985
26986                 m[phy_a7] = 0;
26987                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
26988
26989                 phy_a2 = 63;
26990
26991                 if (cal_mode == CAL_FULL) {
26992                         phy_a1 = 25;
26993                         phy_a3 = 25;
26994                 } else if (cal_mode == CAL_SOFT) {
26995                         phy_a1 = 25;
26996                         phy_a3 = 25;
26997                 } else if (cal_mode == CAL_GCTRL) {
26998                         phy_a1 = 63;
26999                         phy_a3 = 25;
27000                 } else {
27001
27002                         phy_a1 = 25;
27003                         phy_a3 = 25;
27004                 }
27005
27006                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27007                             0x29b, (0x1 << 0), (1) << 0);
27008
27009                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
27010                             0x29b, (0x1 << 0), (0) << 0);
27011
27012                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
27013                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27014                                     0x2a4, (0x1 << 13), (1) << 13);
27015
27016                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
27017                                     0x2a4, (0x1 << 13), (0) << 13);
27018
27019                         write_phy_reg(pi, 0x2a1, 0x20);
27020                         write_phy_reg(pi, 0x2a2, 0x60);
27021
27022                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27023                                     0x2a4, (0xf << 4), (9) << 4);
27024
27025                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27026                                     0x2a4, (0xf << 8), (9) << 8);
27027
27028                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27029                                     0x2a4, (0xf << 0), (0x2) << 0);
27030
27031                         write_phy_reg(pi, 0x2e5, 0x20);
27032                 } else {
27033                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27034                                     0x2a4, (0x1 << 11), (1) << 11);
27035
27036                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
27037                                     0x2a4, (0x1 << 11), (0) << 11);
27038
27039                         write_phy_reg(pi, 0x2a1, 0x80);
27040                         write_phy_reg(pi, 0x2a2, 0x600);
27041
27042                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27043                                     0x2a4, (0x7 << 4), (0) << 4);
27044
27045                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27046                                     0x2a4, (0x7 << 8), (0) << 8);
27047
27048                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27049                                     0x2a4, (0x7 << 0), (0x3) << 0);
27050
27051                         mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
27052
27053                 }
27054
27055                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
27056
27057                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
27058
27059                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
27060
27061                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
27062
27063                 write_phy_reg(pi, 0x2be, 1);
27064                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
27065
27066                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
27067
27068                 wlc_phy_table_write_nphy(pi,
27069                                          (core ==
27070                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
27071                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
27072                                          32, &phy_a8);
27073
27074                 if (cal_mode != CAL_GCTRL) {
27075                         wlc_phy_a1_nphy(pi, core, 5, 0, 40);
27076                 }
27077         }
27078 }
27079
27080 static u8 wlc_phy_a3_nphy(phy_info_t *pi, u8 start_gain, u8 core)
27081 {
27082         int phy_a1;
27083         int phy_a2;
27084         bool phy_a3;
27085         nphy_ipa_txcalgains_t phy_a4;
27086         bool phy_a5 = false;
27087         bool phy_a6 = true;
27088         s32 phy_a7, phy_a8;
27089         u32 phy_a9;
27090         int phy_a10;
27091         bool phy_a11 = false;
27092         int phy_a12;
27093         u8 phy_a13 = 0;
27094         u8 phy_a14;
27095         u8 *phy_a15 = NULL;
27096
27097         phy_a4.useindex = true;
27098         phy_a12 = start_gain;
27099
27100         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27101
27102                 phy_a2 = 20;
27103                 phy_a1 = 1;
27104
27105                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
27106                         if (pi->pubpi.radiorev == 5) {
27107
27108                                 phy_a15 = pad_gain_codes_used_2057rev5;
27109                                 phy_a13 = sizeof(pad_gain_codes_used_2057rev5) /
27110                                     sizeof(pad_gain_codes_used_2057rev5[0]) - 1;
27111
27112                         } else if ((pi->pubpi.radiorev == 7)
27113                                    || (pi->pubpi.radiorev == 8)) {
27114
27115                                 phy_a15 = pad_gain_codes_used_2057rev7;
27116                                 phy_a13 = sizeof(pad_gain_codes_used_2057rev7) /
27117                                     sizeof(pad_gain_codes_used_2057rev7[0]) - 1;
27118
27119                         } else {
27120
27121                                 phy_a15 = pad_all_gain_codes_2057;
27122                                 phy_a13 = sizeof(pad_all_gain_codes_2057) /
27123                                     sizeof(pad_all_gain_codes_2057[0]) - 1;
27124                         }
27125
27126                 } else {
27127
27128                         phy_a15 = pga_all_gain_codes_2057;
27129                         phy_a13 = sizeof(pga_all_gain_codes_2057) /
27130                             sizeof(pga_all_gain_codes_2057[0]) - 1;
27131                 }
27132
27133                 phy_a14 = 0;
27134
27135                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
27136                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27137                                 phy_a4.gains.pad[core] =
27138                                     (u16) phy_a15[phy_a12];
27139                         } else {
27140                                 phy_a4.gains.pga[core] =
27141                                     (u16) phy_a15[phy_a12];
27142                         }
27143
27144                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
27145
27146                         wlc_phy_table_read_nphy(pi,
27147                                                 (core ==
27148                                                  PHY_CORE_0 ?
27149                                                  NPHY_TBL_ID_EPSILONTBL0 :
27150                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
27151                                                 63, 32, &phy_a9);
27152
27153                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
27154
27155                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
27156                                   (phy_a8 == 4095) || (phy_a8 == -4096));
27157
27158                         if (!phy_a6 && (phy_a3 != phy_a5)) {
27159                                 if (!phy_a3) {
27160                                         phy_a12 -= (u8) phy_a1;
27161                                 }
27162                                 phy_a11 = true;
27163                                 break;
27164                         }
27165
27166                         if (phy_a3)
27167                                 phy_a12 += (u8) phy_a1;
27168                         else
27169                                 phy_a12 -= (u8) phy_a1;
27170
27171                         if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
27172                                 if (phy_a12 < phy_a14) {
27173                                         phy_a12 = phy_a14;
27174                                 } else {
27175                                         phy_a12 = phy_a13;
27176                                 }
27177                                 phy_a11 = true;
27178                                 break;
27179                         }
27180
27181                         phy_a6 = false;
27182                         phy_a5 = phy_a3;
27183                 }
27184
27185         } else {
27186                 phy_a2 = 10;
27187                 phy_a1 = 8;
27188                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
27189                         phy_a4.index = (u8) phy_a12;
27190                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
27191
27192                         wlc_phy_table_read_nphy(pi,
27193                                                 (core ==
27194                                                  PHY_CORE_0 ?
27195                                                  NPHY_TBL_ID_EPSILONTBL0 :
27196                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
27197                                                 63, 32, &phy_a9);
27198
27199                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
27200
27201                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
27202                                   (phy_a8 == 4095) || (phy_a8 == -4096));
27203
27204                         if (!phy_a6 && (phy_a3 != phy_a5)) {
27205                                 if (!phy_a3) {
27206                                         phy_a12 -= (u8) phy_a1;
27207                                 }
27208                                 phy_a11 = true;
27209                                 break;
27210                         }
27211
27212                         if (phy_a3)
27213                                 phy_a12 += (u8) phy_a1;
27214                         else
27215                                 phy_a12 -= (u8) phy_a1;
27216
27217                         if ((phy_a12 < 0) || (phy_a12 > 127)) {
27218                                 if (phy_a12 < 0) {
27219                                         phy_a12 = 0;
27220                                 } else {
27221                                         phy_a12 = 127;
27222                                 }
27223                                 phy_a11 = true;
27224                                 break;
27225                         }
27226
27227                         phy_a6 = false;
27228                         phy_a5 = phy_a3;
27229                 }
27230
27231         }
27232
27233         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27234                 return (u8) phy_a15[phy_a12];
27235         } else {
27236                 return (u8) phy_a12;
27237         }
27238
27239 }
27240
27241 static void wlc_phy_a4(phy_info_t *pi, bool full_cal)
27242 {
27243         nphy_ipa_txcalgains_t phy_b1[2];
27244         nphy_papd_restore_state phy_b2;
27245         bool phy_b3;
27246         u8 phy_b4;
27247         u8 phy_b5;
27248         s16 phy_b6, phy_b7, phy_b8;
27249         u16 phy_b9;
27250         s16 phy_b10, phy_b11, phy_b12;
27251
27252         phy_b11 = 0;
27253         phy_b12 = 0;
27254         phy_b7 = 0;
27255         phy_b8 = 0;
27256         phy_b6 = 0;
27257
27258         if (pi->nphy_papd_skip == 1)
27259                 return;
27260
27261         phy_b3 =
27262             (0 == (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC));
27263         if (!phy_b3) {
27264                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
27265         }
27266
27267         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27268
27269         pi->nphy_force_papd_cal = false;
27270
27271         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
27272                 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
27273                     wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
27274
27275         pi->nphy_papd_last_cal = pi->sh->now;
27276         pi->nphy_papd_recal_counter++;
27277
27278         if (NORADIO_ENAB(pi->pubpi))
27279                 return;
27280
27281         phy_b4 = pi->nphy_txpwrctrl;
27282         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
27283
27284         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
27285                                  nphy_papd_scaltbl);
27286         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
27287                                  nphy_papd_scaltbl);
27288
27289         phy_b9 = read_phy_reg(pi, 0x01);
27290         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27291
27292         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
27293                 s32 i, val = 0;
27294                 for (i = 0; i < 64; i++) {
27295                         wlc_phy_table_write_nphy(pi,
27296                                                  ((phy_b5 ==
27297                                                    PHY_CORE_0) ?
27298                                                   NPHY_TBL_ID_EPSILONTBL0 :
27299                                                   NPHY_TBL_ID_EPSILONTBL1), 1,
27300                                                  i, 32, &val);
27301                 }
27302         }
27303
27304         wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
27305
27306         phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
27307         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
27308                 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
27309
27310                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27311                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27312
27313                                 if ((pi->pubpi.radiorev == 3)
27314                                     || (pi->pubpi.radiorev == 4)
27315                                     || (pi->pubpi.radiorev == 6)) {
27316
27317                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27318                                             23;
27319
27320                                 } else if (pi->pubpi.radiorev == 5) {
27321
27322                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27323                                             0;
27324                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27325                                             wlc_phy_a3_nphy(pi,
27326                                                             pi->
27327                                                             nphy_papd_cal_gain_index
27328                                                             [phy_b5], phy_b5);
27329
27330                                 } else if ((pi->pubpi.radiorev == 7)
27331                                            || (pi->pubpi.radiorev == 8)) {
27332
27333                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27334                                             0;
27335                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27336                                             wlc_phy_a3_nphy(pi,
27337                                                             pi->
27338                                                             nphy_papd_cal_gain_index
27339                                                             [phy_b5], phy_b5);
27340
27341                                 } else {
27342                                         ASSERT(0);
27343                                 }
27344
27345                                 phy_b1[phy_b5].gains.pad[phy_b5] =
27346                                     pi->nphy_papd_cal_gain_index[phy_b5];
27347
27348                         } else {
27349                                 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
27350                                 pi->nphy_papd_cal_gain_index[phy_b5] =
27351                                     wlc_phy_a3_nphy(pi,
27352                                                     pi->
27353                                                     nphy_papd_cal_gain_index
27354                                                     [phy_b5], phy_b5);
27355                                 phy_b1[phy_b5].gains.pga[phy_b5] =
27356                                     pi->nphy_papd_cal_gain_index[phy_b5];
27357                         }
27358                 } else {
27359                         phy_b1[phy_b5].useindex = true;
27360                         phy_b1[phy_b5].index = 16;
27361                         phy_b1[phy_b5].index =
27362                             wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index, phy_b5);
27363
27364                         pi->nphy_papd_cal_gain_index[phy_b5] =
27365                             15 - ((phy_b1[phy_b5].index) >> 3);
27366                 }
27367
27368                 switch (pi->nphy_papd_cal_type) {
27369                 case 0:
27370                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
27371                         break;
27372                 case 1:
27373                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
27374                         break;
27375                 }
27376
27377                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27378                         wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
27379                 }
27380         }
27381
27382         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27383                 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
27384         }
27385
27386         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
27387                 int eps_offset = 0;
27388
27389                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27390                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27391                                 if (pi->pubpi.radiorev == 3) {
27392                                         eps_offset = -2;
27393                                 } else if (pi->pubpi.radiorev == 5) {
27394                                         eps_offset = 3;
27395                                 } else {
27396                                         eps_offset = -1;
27397                                 }
27398                         } else {
27399                                 eps_offset = 2;
27400                         }
27401
27402                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27403                                 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
27404                                 phy_b10 = 0;
27405                                 if ((pi->pubpi.radiorev == 3) ||
27406                                     (pi->pubpi.radiorev == 4) ||
27407                                     (pi->pubpi.radiorev == 6)) {
27408                                         phy_b12 =
27409                                             -
27410                                             (nphy_papd_padgain_dlt_2g_2057rev3n4
27411                                              [phy_b8]
27412                                              + 1) / 2;
27413                                         phy_b10 = -1;
27414                                 } else if (pi->pubpi.radiorev == 5) {
27415                                         phy_b12 =
27416                                             -(nphy_papd_padgain_dlt_2g_2057rev5
27417                                               [phy_b8]
27418                                               + 1) / 2;
27419                                 } else if ((pi->pubpi.radiorev == 7) ||
27420                                            (pi->pubpi.radiorev == 8)) {
27421                                         phy_b12 =
27422                                             -(nphy_papd_padgain_dlt_2g_2057rev7
27423                                               [phy_b8]
27424                                               + 1) / 2;
27425                                 } else {
27426                                         ASSERT(0);
27427                                 }
27428                         } else {
27429                                 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
27430                                 if ((pi->pubpi.radiorev == 3) ||
27431                                     (pi->pubpi.radiorev == 4) ||
27432                                     (pi->pubpi.radiorev == 6)) {
27433                                         phy_b11 =
27434                                             -(nphy_papd_pgagain_dlt_5g_2057
27435                                               [phy_b7]
27436                                               + 1) / 2;
27437                                 } else if ((pi->pubpi.radiorev == 7)
27438                                            || (pi->pubpi.radiorev == 8)) {
27439                                         phy_b11 =
27440                                             -(nphy_papd_pgagain_dlt_5g_2057rev7
27441                                               [phy_b7]
27442                                               + 1) / 2;
27443                                 } else {
27444                                         ASSERT(0);
27445                                 }
27446
27447                                 phy_b10 = -9;
27448                         }
27449
27450                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27451                                 phy_b6 =
27452                                     -60 + 27 + eps_offset + phy_b12 + phy_b10;
27453                         } else {
27454                                 phy_b6 =
27455                                     -60 + 27 + eps_offset + phy_b11 + phy_b10;
27456                         }
27457
27458                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
27459                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
27460
27461                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
27462                 } else {
27463                         if (NREV_LT(pi->pubpi.phy_rev, 5)) {
27464                                 eps_offset = 4;
27465                         } else {
27466                                 eps_offset = 2;
27467                         }
27468
27469                         phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
27470
27471                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27472                                 phy_b11 =
27473                                     -(nphy_papd_pga_gain_delta_ipa_2g[phy_b7] +
27474                                       1) / 2;
27475                                 phy_b10 = 0;
27476                         } else {
27477                                 phy_b11 =
27478                                     -(nphy_papd_pga_gain_delta_ipa_5g[phy_b7] +
27479                                       1) / 2;
27480                                 phy_b10 = -9;
27481                         }
27482
27483                         phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
27484
27485                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
27486                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
27487
27488                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
27489                 }
27490         }
27491
27492         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
27493                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
27494
27495         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
27496                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
27497
27498         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
27499                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
27500                             0x2a4, (0x1 << 13), (0) << 13);
27501
27502                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
27503                             0x2a4, (0x1 << 13), (0) << 13);
27504
27505         } else {
27506                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
27507                             0x2a4, (0x1 << 11), (0) << 11);
27508
27509                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
27510                             0x2a4, (0x1 << 11), (0) << 11);
27511
27512         }
27513         pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
27514
27515         write_phy_reg(pi, 0x01, phy_b9);
27516
27517         wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
27518
27519         wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
27520         if (phy_b4 == PHY_TPC_HW_OFF) {
27521                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
27522                                          (s8) (pi->nphy_txpwrindex[0].
27523                                                  index_internal), false);
27524                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
27525                                          (s8) (pi->nphy_txpwrindex[1].
27526                                                  index_internal), false);
27527         }
27528
27529         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27530
27531         if (!phy_b3) {
27532                 wlapi_enable_mac(pi->sh->physhim);
27533         }
27534 }
27535
27536 void wlc_phy_txpwr_fixpower_nphy(phy_info_t *pi)
27537 {
27538         uint core;
27539         u32 txgain;
27540         u16 rad_gain, dac_gain, bbmult, m1m2;
27541         u8 txpi[2], chan_freq_range;
27542         s32 rfpwr_offset;
27543
27544         ASSERT(pi->nphy_txpwrctrl == PHY_TPC_HW_OFF);
27545
27546         if (pi->phyhang_avoid)
27547                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27548
27549         if (pi->sh->sromrev < 4) {
27550                 txpi[0] = txpi[1] = 72;
27551         } else {
27552
27553                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27554                 switch (chan_freq_range) {
27555                 case WL_CHAN_FREQ_RANGE_2G:
27556                         txpi[0] = pi->nphy_txpid2g[0];
27557                         txpi[1] = pi->nphy_txpid2g[1];
27558                         break;
27559                 case WL_CHAN_FREQ_RANGE_5GL:
27560                         txpi[0] = pi->nphy_txpid5gl[0];
27561                         txpi[1] = pi->nphy_txpid5gl[1];
27562                         break;
27563                 case WL_CHAN_FREQ_RANGE_5GM:
27564                         txpi[0] = pi->nphy_txpid5g[0];
27565                         txpi[1] = pi->nphy_txpid5g[1];
27566                         break;
27567                 case WL_CHAN_FREQ_RANGE_5GH:
27568                         txpi[0] = pi->nphy_txpid5gh[0];
27569                         txpi[1] = pi->nphy_txpid5gh[1];
27570                         break;
27571                 default:
27572                         txpi[0] = txpi[1] = 91;
27573                         break;
27574                 }
27575         }
27576
27577         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27578                 txpi[0] = txpi[1] = 30;
27579         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27580                 txpi[0] = txpi[1] = 40;
27581         }
27582
27583         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27584
27585                 if ((txpi[0] < 40) || (txpi[0] > 100) ||
27586                     (txpi[1] < 40) || (txpi[1] > 100))
27587                         txpi[0] = txpi[1] = 91;
27588         }
27589
27590         pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27591         pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27592         pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27593         pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27594
27595         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27596                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27597                         if (PHY_IPA(pi)) {
27598                                 u32 *tx_gaintbl =
27599                                     wlc_phy_get_ipa_gaintbl_nphy(pi);
27600                                 txgain = tx_gaintbl[txpi[core]];
27601                         } else {
27602                                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27603                                         if NREV_IS
27604                                                 (pi->pubpi.phy_rev, 3) {
27605                                                 txgain =
27606                                                     nphy_tpc_5GHz_txgain_rev3
27607                                                     [txpi[core]];
27608                                         } else if NREV_IS
27609                                                 (pi->pubpi.phy_rev, 4) {
27610                                                 txgain =
27611                                                     (pi->srom_fem5g.extpagain ==
27612                                                      3) ?
27613                                                     nphy_tpc_5GHz_txgain_HiPwrEPA
27614                                                     [txpi[core]] :
27615                                                     nphy_tpc_5GHz_txgain_rev4
27616                                                     [txpi[core]];
27617                                         } else {
27618                                                 txgain =
27619                                                     nphy_tpc_5GHz_txgain_rev5
27620                                                     [txpi[core]];
27621                                         }
27622                                 } else {
27623                                         if (NREV_GE(pi->pubpi.phy_rev, 5) &&
27624                                             (pi->srom_fem2g.extpagain == 3)) {
27625                                                 txgain =
27626                                                     nphy_tpc_txgain_HiPwrEPA
27627                                                     [txpi[core]];
27628                                         } else {
27629                                                 txgain =
27630                                                     nphy_tpc_txgain_rev3[txpi
27631                                                                          [core]];
27632                                         }
27633                                 }
27634                         }
27635                 } else {
27636                         txgain = nphy_tpc_txgain[txpi[core]];
27637                 }
27638
27639                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27640                         rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27641                 } else {
27642                         rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27643                 }
27644
27645                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27646                         dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27647                 } else {
27648                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27649                 }
27650                 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27651
27652                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27653                         mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27654                                          0xa5), (0x1 << 8), (0x1 << 8));
27655                 } else {
27656                         mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27657                 }
27658                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27659
27660                 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27661                                          &rad_gain);
27662
27663                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27664                 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27665                 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27666                 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27667
27668                 if (PHY_IPA(pi)) {
27669                         wlc_phy_table_read_nphy(pi,
27670                                                 (core ==
27671                                                  PHY_CORE_0 ?
27672                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
27673                                                  NPHY_TBL_ID_CORE2TXPWRCTL), 1,
27674                                                 576 + txpi[core], 32,
27675                                                 &rfpwr_offset);
27676
27677                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27678                                     0x29b, (0x1ff << 4),
27679                                     ((s16) rfpwr_offset) << 4);
27680
27681                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27682                                     0x29b, (0x1 << 2), (1) << 2);
27683
27684                 }
27685         }
27686
27687         and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
27688
27689         if (pi->phyhang_avoid)
27690                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27691 }
27692
27693 static void
27694 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
27695                                 u8 tmp_max_pwr, u8 rate_start,
27696                                 u8 rate_end)
27697 {
27698         u8 rate;
27699         u8 word_num, nibble_num;
27700         u8 tmp_nibble;
27701
27702         for (rate = rate_start; rate <= rate_end; rate++) {
27703                 word_num = (rate - rate_start) >> 2;
27704                 nibble_num = (rate - rate_start) & 0x3;
27705                 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
27706
27707                 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
27708         }
27709 }
27710
27711 static void
27712 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
27713                             u8 rate_start, u8 rate_end)
27714 {
27715         u8 rate;
27716
27717         for (rate = rate_start; rate <= rate_end; rate++) {
27718                 srom_max[rate] -= 2 * pwr_offset;
27719         }
27720 }
27721
27722 void
27723 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
27724                                 u8 rate_mcs_end, u8 rate_ofdm_start)
27725 {
27726         u8 rate1, rate2;
27727
27728         rate2 = rate_ofdm_start;
27729         for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
27730                 power[rate1] = power[rate2];
27731                 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
27732         }
27733         power[rate_mcs_end] = power[rate_mcs_end - 1];
27734 }
27735
27736 void
27737 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
27738                                 u8 rate_ofdm_end, u8 rate_mcs_start)
27739 {
27740         u8 rate1, rate2;
27741
27742         for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
27743              rate1 <= rate_ofdm_end; rate1++, rate2++) {
27744                 power[rate1] = power[rate2];
27745                 if (rate1 == rate_ofdm_start)
27746                         power[++rate1] = power[rate2];
27747         }
27748 }
27749
27750 void wlc_phy_txpwr_apply_nphy(phy_info_t *pi)
27751 {
27752         uint rate1, rate2, band_num;
27753         u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
27754         u8 tmp_max_pwr = 0;
27755         u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
27756         u8 *tx_srom_max_rate = NULL;
27757
27758         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP); band_num++) {
27759                 switch (band_num) {
27760                 case 0:
27761
27762                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
27763                                           pi->nphy_pwrctrl_info[1].max_pwr_2g);
27764
27765                         pwr_offsets1[0] = pi->cck2gpo;
27766                         wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
27767                                                         pwr_offsets1,
27768                                                         tmp_max_pwr,
27769                                                         TXP_FIRST_CCK,
27770                                                         TXP_LAST_CCK);
27771
27772                         pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
27773                         pwr_offsets1[1] =
27774                             (u16) (pi->ofdm2gpo >> 16) & 0xffff;
27775
27776                         pwr_offsets2 = pi->mcs2gpo;
27777
27778                         tmp_cddpo = pi->cdd2gpo;
27779                         tmp_stbcpo = pi->stbc2gpo;
27780                         tmp_bw40po = pi->bw402gpo;
27781
27782                         tx_srom_max_rate = pi->tx_srom_max_rate_2g;
27783                         break;
27784                 case 1:
27785
27786                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
27787                                           pi->nphy_pwrctrl_info[1].max_pwr_5gm);
27788
27789                         pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
27790                         pwr_offsets1[1] =
27791                             (u16) (pi->ofdm5gpo >> 16) & 0xffff;
27792
27793                         pwr_offsets2 = pi->mcs5gpo;
27794
27795                         tmp_cddpo = pi->cdd5gpo;
27796                         tmp_stbcpo = pi->stbc5gpo;
27797                         tmp_bw40po = pi->bw405gpo;
27798
27799                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
27800                         break;
27801                 case 2:
27802
27803                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
27804                                           pi->nphy_pwrctrl_info[1].max_pwr_5gl);
27805
27806                         pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
27807                         pwr_offsets1[1] =
27808                             (u16) (pi->ofdm5glpo >> 16) & 0xffff;
27809
27810                         pwr_offsets2 = pi->mcs5glpo;
27811
27812                         tmp_cddpo = pi->cdd5glpo;
27813                         tmp_stbcpo = pi->stbc5glpo;
27814                         tmp_bw40po = pi->bw405glpo;
27815
27816                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
27817                         break;
27818                 case 3:
27819
27820                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
27821                                           pi->nphy_pwrctrl_info[1].max_pwr_5gh);
27822
27823                         pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
27824                         pwr_offsets1[1] =
27825                             (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
27826
27827                         pwr_offsets2 = pi->mcs5ghpo;
27828
27829                         tmp_cddpo = pi->cdd5ghpo;
27830                         tmp_stbcpo = pi->stbc5ghpo;
27831                         tmp_bw40po = pi->bw405ghpo;
27832
27833                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
27834                         break;
27835                 }
27836
27837                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
27838                                                 tmp_max_pwr, TXP_FIRST_OFDM,
27839                                                 TXP_LAST_OFDM);
27840
27841                 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
27842                                                 TXP_FIRST_MCS_20_SISO,
27843                                                 TXP_LAST_MCS_20_SISO,
27844                                                 TXP_FIRST_OFDM);
27845
27846                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
27847                                                 tmp_max_pwr,
27848                                                 TXP_FIRST_MCS_20_CDD,
27849                                                 TXP_LAST_MCS_20_CDD);
27850
27851                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27852
27853                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
27854                                                     TXP_FIRST_MCS_20_CDD,
27855                                                     TXP_LAST_MCS_20_CDD);
27856                 }
27857
27858                 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
27859                                                 TXP_FIRST_OFDM_20_CDD,
27860                                                 TXP_LAST_OFDM_20_CDD,
27861                                                 TXP_FIRST_MCS_20_CDD);
27862
27863                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
27864                                                 tmp_max_pwr,
27865                                                 TXP_FIRST_MCS_20_STBC,
27866                                                 TXP_LAST_MCS_20_STBC);
27867
27868                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27869
27870                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
27871                                                     tmp_stbcpo,
27872                                                     TXP_FIRST_MCS_20_STBC,
27873                                                     TXP_LAST_MCS_20_STBC);
27874                 }
27875
27876                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27877                                                 &pwr_offsets2[2], tmp_max_pwr,
27878                                                 TXP_FIRST_MCS_20_SDM,
27879                                                 TXP_LAST_MCS_20_SDM);
27880
27881                 if (NPHY_IS_SROM_REINTERPRET) {
27882
27883                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27884                                                         &pwr_offsets2[4],
27885                                                         tmp_max_pwr,
27886                                                         TXP_FIRST_MCS_40_SISO,
27887                                                         TXP_LAST_MCS_40_SISO);
27888
27889                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
27890                                                         TXP_FIRST_OFDM_40_SISO,
27891                                                         TXP_LAST_OFDM_40_SISO,
27892                                                         TXP_FIRST_MCS_40_SISO);
27893
27894                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27895                                                         &pwr_offsets2[4],
27896                                                         tmp_max_pwr,
27897                                                         TXP_FIRST_MCS_40_CDD,
27898                                                         TXP_LAST_MCS_40_CDD);
27899
27900                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
27901                                                     TXP_FIRST_MCS_40_CDD,
27902                                                     TXP_LAST_MCS_40_CDD);
27903
27904                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
27905                                                         TXP_FIRST_OFDM_40_CDD,
27906                                                         TXP_LAST_OFDM_40_CDD,
27907                                                         TXP_FIRST_MCS_40_CDD);
27908
27909                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27910                                                         &pwr_offsets2[4],
27911                                                         tmp_max_pwr,
27912                                                         TXP_FIRST_MCS_40_STBC,
27913                                                         TXP_LAST_MCS_40_STBC);
27914
27915                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
27916                                                     tmp_stbcpo,
27917                                                     TXP_FIRST_MCS_40_STBC,
27918                                                     TXP_LAST_MCS_40_STBC);
27919
27920                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27921                                                         &pwr_offsets2[6],
27922                                                         tmp_max_pwr,
27923                                                         TXP_FIRST_MCS_40_SDM,
27924                                                         TXP_LAST_MCS_40_SDM);
27925                 } else {
27926
27927                         for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
27928                              TXP_FIRST_OFDM; rate1 <= TXP_LAST_MCS_40_SDM;
27929                              rate1++, rate2++)
27930                                 tx_srom_max_rate[rate1] =
27931                                     tx_srom_max_rate[rate2];
27932                 }
27933
27934                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27935                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
27936                                                     tmp_bw40po,
27937                                                     TXP_FIRST_OFDM_40_SISO,
27938                                                     TXP_LAST_MCS_40_SDM);
27939                 }
27940
27941                 tx_srom_max_rate[TXP_MCS_32] =
27942                     tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
27943         }
27944
27945         return;
27946 }
27947
27948 static void wlc_phy_txpwr_srom_read_ppr_nphy(phy_info_t *pi)
27949 {
27950         u16 bw40po, cddpo, stbcpo, bwduppo;
27951         uint band_num;
27952
27953         if (pi->sh->sromrev >= 9) {
27954
27955                 return;
27956         }
27957
27958         bw40po = (u16) PHY_GETINTVAR(pi, "bw40po");
27959         pi->bw402gpo = bw40po & 0xf;
27960         pi->bw405gpo = (bw40po & 0xf0) >> 4;
27961         pi->bw405glpo = (bw40po & 0xf00) >> 8;
27962         pi->bw405ghpo = (bw40po & 0xf000) >> 12;
27963
27964         cddpo = (u16) PHY_GETINTVAR(pi, "cddpo");
27965         pi->cdd2gpo = cddpo & 0xf;
27966         pi->cdd5gpo = (cddpo & 0xf0) >> 4;
27967         pi->cdd5glpo = (cddpo & 0xf00) >> 8;
27968         pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
27969
27970         stbcpo = (u16) PHY_GETINTVAR(pi, "stbcpo");
27971         pi->stbc2gpo = stbcpo & 0xf;
27972         pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
27973         pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
27974         pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
27975
27976         bwduppo = (u16) PHY_GETINTVAR(pi, "bwduppo");
27977         pi->bwdup2gpo = bwduppo & 0xf;
27978         pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
27979         pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
27980         pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
27981
27982         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP); band_num++) {
27983                 switch (band_num) {
27984                 case 0:
27985
27986                         pi->nphy_txpid2g[PHY_CORE_0] =
27987                             (u8) PHY_GETINTVAR(pi, "txpid2ga0");
27988                         pi->nphy_txpid2g[PHY_CORE_1] =
27989                             (u8) PHY_GETINTVAR(pi, "txpid2ga1");
27990                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
27991                             (s8) PHY_GETINTVAR(pi, "maxp2ga0");
27992                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
27993                             (s8) PHY_GETINTVAR(pi, "maxp2ga1");
27994                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
27995                             (s16) PHY_GETINTVAR(pi, "pa2gw0a0");
27996                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
27997                             (s16) PHY_GETINTVAR(pi, "pa2gw0a1");
27998                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
27999                             (s16) PHY_GETINTVAR(pi, "pa2gw1a0");
28000                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
28001                             (s16) PHY_GETINTVAR(pi, "pa2gw1a1");
28002                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
28003                             (s16) PHY_GETINTVAR(pi, "pa2gw2a0");
28004                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
28005                             (s16) PHY_GETINTVAR(pi, "pa2gw2a1");
28006                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
28007                             (s8) PHY_GETINTVAR(pi, "itt2ga0");
28008                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
28009                             (s8) PHY_GETINTVAR(pi, "itt2ga1");
28010
28011                         pi->cck2gpo = (u16) PHY_GETINTVAR(pi, "cck2gpo");
28012
28013                         pi->ofdm2gpo = (u32) PHY_GETINTVAR(pi, "ofdm2gpo");
28014
28015                         pi->mcs2gpo[0] = (u16) PHY_GETINTVAR(pi, "mcs2gpo0");
28016                         pi->mcs2gpo[1] = (u16) PHY_GETINTVAR(pi, "mcs2gpo1");
28017                         pi->mcs2gpo[2] = (u16) PHY_GETINTVAR(pi, "mcs2gpo2");
28018                         pi->mcs2gpo[3] = (u16) PHY_GETINTVAR(pi, "mcs2gpo3");
28019                         pi->mcs2gpo[4] = (u16) PHY_GETINTVAR(pi, "mcs2gpo4");
28020                         pi->mcs2gpo[5] = (u16) PHY_GETINTVAR(pi, "mcs2gpo5");
28021                         pi->mcs2gpo[6] = (u16) PHY_GETINTVAR(pi, "mcs2gpo6");
28022                         pi->mcs2gpo[7] = (u16) PHY_GETINTVAR(pi, "mcs2gpo7");
28023                         break;
28024                 case 1:
28025
28026                         pi->nphy_txpid5g[PHY_CORE_0] =
28027                             (u8) PHY_GETINTVAR(pi, "txpid5ga0");
28028                         pi->nphy_txpid5g[PHY_CORE_1] =
28029                             (u8) PHY_GETINTVAR(pi, "txpid5ga1");
28030                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
28031                             (s8) PHY_GETINTVAR(pi, "maxp5ga0");
28032                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
28033                             (s8) PHY_GETINTVAR(pi, "maxp5ga1");
28034                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
28035                             (s16) PHY_GETINTVAR(pi, "pa5gw0a0");
28036                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
28037                             (s16) PHY_GETINTVAR(pi, "pa5gw0a1");
28038                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
28039                             (s16) PHY_GETINTVAR(pi, "pa5gw1a0");
28040                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
28041                             (s16) PHY_GETINTVAR(pi, "pa5gw1a1");
28042                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
28043                             (s16) PHY_GETINTVAR(pi, "pa5gw2a0");
28044                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
28045                             (s16) PHY_GETINTVAR(pi, "pa5gw2a1");
28046                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
28047                             (s8) PHY_GETINTVAR(pi, "itt5ga0");
28048                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
28049                             (s8) PHY_GETINTVAR(pi, "itt5ga1");
28050
28051                         pi->ofdm5gpo = (u32) PHY_GETINTVAR(pi, "ofdm5gpo");
28052
28053                         pi->mcs5gpo[0] = (u16) PHY_GETINTVAR(pi, "mcs5gpo0");
28054                         pi->mcs5gpo[1] = (u16) PHY_GETINTVAR(pi, "mcs5gpo1");
28055                         pi->mcs5gpo[2] = (u16) PHY_GETINTVAR(pi, "mcs5gpo2");
28056                         pi->mcs5gpo[3] = (u16) PHY_GETINTVAR(pi, "mcs5gpo3");
28057                         pi->mcs5gpo[4] = (u16) PHY_GETINTVAR(pi, "mcs5gpo4");
28058                         pi->mcs5gpo[5] = (u16) PHY_GETINTVAR(pi, "mcs5gpo5");
28059                         pi->mcs5gpo[6] = (u16) PHY_GETINTVAR(pi, "mcs5gpo6");
28060                         pi->mcs5gpo[7] = (u16) PHY_GETINTVAR(pi, "mcs5gpo7");
28061                         break;
28062                 case 2:
28063
28064                         pi->nphy_txpid5gl[0] =
28065                             (u8) PHY_GETINTVAR(pi, "txpid5gla0");
28066                         pi->nphy_txpid5gl[1] =
28067                             (u8) PHY_GETINTVAR(pi, "txpid5gla1");
28068                         pi->nphy_pwrctrl_info[0].max_pwr_5gl =
28069                             (s8) PHY_GETINTVAR(pi, "maxp5gla0");
28070                         pi->nphy_pwrctrl_info[1].max_pwr_5gl =
28071                             (s8) PHY_GETINTVAR(pi, "maxp5gla1");
28072                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
28073                             (s16) PHY_GETINTVAR(pi, "pa5glw0a0");
28074                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
28075                             (s16) PHY_GETINTVAR(pi, "pa5glw0a1");
28076                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
28077                             (s16) PHY_GETINTVAR(pi, "pa5glw1a0");
28078                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
28079                             (s16) PHY_GETINTVAR(pi, "pa5glw1a1");
28080                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
28081                             (s16) PHY_GETINTVAR(pi, "pa5glw2a0");
28082                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
28083                             (s16) PHY_GETINTVAR(pi, "pa5glw2a1");
28084                         pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
28085                         pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
28086
28087                         pi->ofdm5glpo = (u32) PHY_GETINTVAR(pi, "ofdm5glpo");
28088
28089                         pi->mcs5glpo[0] =
28090                             (u16) PHY_GETINTVAR(pi, "mcs5glpo0");
28091                         pi->mcs5glpo[1] =
28092                             (u16) PHY_GETINTVAR(pi, "mcs5glpo1");
28093                         pi->mcs5glpo[2] =
28094                             (u16) PHY_GETINTVAR(pi, "mcs5glpo2");
28095                         pi->mcs5glpo[3] =
28096                             (u16) PHY_GETINTVAR(pi, "mcs5glpo3");
28097                         pi->mcs5glpo[4] =
28098                             (u16) PHY_GETINTVAR(pi, "mcs5glpo4");
28099                         pi->mcs5glpo[5] =
28100                             (u16) PHY_GETINTVAR(pi, "mcs5glpo5");
28101                         pi->mcs5glpo[6] =
28102                             (u16) PHY_GETINTVAR(pi, "mcs5glpo6");
28103                         pi->mcs5glpo[7] =
28104                             (u16) PHY_GETINTVAR(pi, "mcs5glpo7");
28105                         break;
28106                 case 3:
28107
28108                         pi->nphy_txpid5gh[0] =
28109                             (u8) PHY_GETINTVAR(pi, "txpid5gha0");
28110                         pi->nphy_txpid5gh[1] =
28111                             (u8) PHY_GETINTVAR(pi, "txpid5gha1");
28112                         pi->nphy_pwrctrl_info[0].max_pwr_5gh =
28113                             (s8) PHY_GETINTVAR(pi, "maxp5gha0");
28114                         pi->nphy_pwrctrl_info[1].max_pwr_5gh =
28115                             (s8) PHY_GETINTVAR(pi, "maxp5gha1");
28116                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
28117                             (s16) PHY_GETINTVAR(pi, "pa5ghw0a0");
28118                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
28119                             (s16) PHY_GETINTVAR(pi, "pa5ghw0a1");
28120                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
28121                             (s16) PHY_GETINTVAR(pi, "pa5ghw1a0");
28122                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
28123                             (s16) PHY_GETINTVAR(pi, "pa5ghw1a1");
28124                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
28125                             (s16) PHY_GETINTVAR(pi, "pa5ghw2a0");
28126                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
28127                             (s16) PHY_GETINTVAR(pi, "pa5ghw2a1");
28128                         pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
28129                         pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
28130
28131                         pi->ofdm5ghpo = (u32) PHY_GETINTVAR(pi, "ofdm5ghpo");
28132
28133                         pi->mcs5ghpo[0] =
28134                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo0");
28135                         pi->mcs5ghpo[1] =
28136                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo1");
28137                         pi->mcs5ghpo[2] =
28138                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo2");
28139                         pi->mcs5ghpo[3] =
28140                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo3");
28141                         pi->mcs5ghpo[4] =
28142                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo4");
28143                         pi->mcs5ghpo[5] =
28144                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo5");
28145                         pi->mcs5ghpo[6] =
28146                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo6");
28147                         pi->mcs5ghpo[7] =
28148                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo7");
28149                         break;
28150                 }
28151         }
28152
28153         wlc_phy_txpwr_apply_nphy(pi);
28154 }
28155
28156 static bool wlc_phy_txpwr_srom_read_nphy(phy_info_t *pi)
28157 {
28158
28159         pi->antswitch = (u8) PHY_GETINTVAR(pi, "antswitch");
28160         pi->aa2g = (u8) PHY_GETINTVAR(pi, "aa2g");
28161         pi->aa5g = (u8) PHY_GETINTVAR(pi, "aa5g");
28162
28163         pi->srom_fem2g.tssipos = (u8) PHY_GETINTVAR(pi, "tssipos2g");
28164         pi->srom_fem2g.extpagain = (u8) PHY_GETINTVAR(pi, "extpagain2g");
28165         pi->srom_fem2g.pdetrange = (u8) PHY_GETINTVAR(pi, "pdetrange2g");
28166         pi->srom_fem2g.triso = (u8) PHY_GETINTVAR(pi, "triso2g");
28167         pi->srom_fem2g.antswctrllut = (u8) PHY_GETINTVAR(pi, "antswctl2g");
28168
28169         pi->srom_fem5g.tssipos = (u8) PHY_GETINTVAR(pi, "tssipos5g");
28170         pi->srom_fem5g.extpagain = (u8) PHY_GETINTVAR(pi, "extpagain5g");
28171         pi->srom_fem5g.pdetrange = (u8) PHY_GETINTVAR(pi, "pdetrange5g");
28172         pi->srom_fem5g.triso = (u8) PHY_GETINTVAR(pi, "triso5g");
28173         if (PHY_GETVAR(pi, "antswctl5g")) {
28174
28175                 pi->srom_fem5g.antswctrllut =
28176                     (u8) PHY_GETINTVAR(pi, "antswctl5g");
28177         } else {
28178
28179                 pi->srom_fem5g.antswctrllut =
28180                     (u8) PHY_GETINTVAR(pi, "antswctl2g");
28181         }
28182
28183         wlc_phy_txpower_ipa_upd(pi);
28184
28185         pi->phy_txcore_disable_temp = (s16) PHY_GETINTVAR(pi, "tempthresh");
28186         if (pi->phy_txcore_disable_temp == 0) {
28187                 pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
28188         }
28189
28190         pi->phy_tempsense_offset = (s8) PHY_GETINTVAR(pi, "tempoffset");
28191         if (pi->phy_tempsense_offset != 0) {
28192                 if (pi->phy_tempsense_offset >
28193                     (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET)) {
28194                         pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
28195                 } else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
28196                                                     NPHY_SROM_MINTEMPOFFSET)) {
28197                         pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
28198                 } else {
28199                         pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
28200                 }
28201         }
28202
28203         pi->phy_txcore_enable_temp =
28204             pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
28205
28206         pi->phycal_tempdelta = (u8) PHY_GETINTVAR(pi, "phycal_tempdelta");
28207         if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA) {
28208                 pi->phycal_tempdelta = 0;
28209         }
28210
28211         wlc_phy_txpwr_srom_read_ppr_nphy(pi);
28212
28213         return true;
28214 }
28215
28216 void wlc_phy_txpower_recalc_target_nphy(phy_info_t *pi)
28217 {
28218         u8 tx_pwr_ctrl_state;
28219         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28220         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28221
28222         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28223
28224         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28225                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28226                 (void)R_REG(pi->sh->osh, &pi->regs->maccontrol);
28227                 udelay(1);
28228         }
28229
28230         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28231
28232         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28233                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28234 }
28235
28236 static void wlc_phy_txpwrctrl_coeff_setup_nphy(phy_info_t *pi)
28237 {
28238         u32 idx;
28239         u16 iqloCalbuf[7];
28240         u32 iqcomp, locomp, curr_locomp;
28241         s8 locomp_i, locomp_q;
28242         s8 curr_locomp_i, curr_locomp_q;
28243         u32 tbl_id, tbl_len, tbl_offset;
28244         u32 regval[128];
28245
28246         if (pi->phyhang_avoid)
28247                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28248
28249         wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
28250
28251         tbl_len = 128;
28252         tbl_offset = 320;
28253         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
28254              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
28255                 iqcomp =
28256                     (tbl_id ==
28257                      26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
28258                     (iqloCalbuf[1] & 0x3ff)
28259                     : (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
28260                     (iqloCalbuf[3] & 0x3ff);
28261
28262                 for (idx = 0; idx < tbl_len; idx++) {
28263                         regval[idx] = iqcomp;
28264                 }
28265                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
28266                                          regval);
28267         }
28268
28269         tbl_offset = 448;
28270         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
28271              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
28272
28273                 locomp =
28274                     (u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
28275                 locomp_i = (s8) ((locomp >> 8) & 0xff);
28276                 locomp_q = (s8) ((locomp) & 0xff);
28277                 for (idx = 0; idx < tbl_len; idx++) {
28278                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28279                                 curr_locomp_i = locomp_i;
28280                                 curr_locomp_q = locomp_q;
28281                         } else {
28282                                 curr_locomp_i = (s8) ((locomp_i *
28283                                                          nphy_tpc_loscale[idx] +
28284                                                          128) >> 8);
28285                                 curr_locomp_q =
28286                                     (s8) ((locomp_q * nphy_tpc_loscale[idx] +
28287                                              128) >> 8);
28288                         }
28289                         curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
28290                         curr_locomp |= (u32) (curr_locomp_q & 0xff);
28291                         regval[idx] = curr_locomp;
28292                 }
28293                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
28294                                          regval);
28295         }
28296
28297         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
28298
28299                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
28300                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
28301         }
28302
28303         if (pi->phyhang_avoid)
28304                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28305 }
28306
28307 static void wlc_phy_ipa_internal_tssi_setup_nphy(phy_info_t *pi)
28308 {
28309         u8 core;
28310
28311         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28312                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28313                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
28314                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28315                                                  TX_SSI_MASTER, 0x5);
28316                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28317                                                  TX_SSI_MUX, 0xe);
28318
28319                                 if (pi->pubpi.radiorev != 5)
28320                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
28321                                                          core, TSSIA, 0);
28322
28323                                 if (!NREV_IS(pi->pubpi.phy_rev, 7)) {
28324
28325                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
28326                                                          core, TSSIG, 0x1);
28327                                 } else {
28328
28329                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
28330                                                          core, TSSIG, 0x31);
28331                                 }
28332                         } else {
28333                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28334                                                  TX_SSI_MASTER, 0x9);
28335                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28336                                                  TX_SSI_MUX, 0xc);
28337                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28338                                                  TSSIG, 0);
28339
28340                                 if (pi->pubpi.radiorev != 5) {
28341                                         if (!NREV_IS(pi->pubpi.phy_rev, 7)) {
28342
28343                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28344                                                                  TX, core,
28345                                                                  TSSIA, 0x1);
28346                                         } else {
28347
28348                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28349                                                                  TX, core,
28350                                                                  TSSIA, 0x31);
28351                                         }
28352                                 }
28353                         }
28354                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
28355                                          0);
28356                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
28357                                          0);
28358                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
28359                                          0x3);
28360                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
28361                                          0x0);
28362                 }
28363         } else {
28364                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
28365                                 (CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
28366                                 0x80);
28367                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
28368                 WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
28369
28370                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28371                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
28372                                          0x0);
28373                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
28374                                          0x0);
28375                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
28376                                          0x3);
28377                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
28378                                          0x0);
28379                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
28380                                          0x8);
28381                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
28382                                          0x0);
28383                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
28384                                          0x0);
28385
28386                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
28387                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28388                                                  TX_SSI_MASTER, 0x5);
28389
28390                                 if (pi->pubpi.radiorev != 5)
28391                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
28392                                                          core, TSSIA, 0x0);
28393                                 if (NREV_GE(pi->pubpi.phy_rev, 5)) {
28394
28395                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
28396                                                          core, TSSIG, 0x31);
28397                                 } else {
28398                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
28399                                                          core, TSSIG, 0x11);
28400                                 }
28401                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28402                                                  TX_SSI_MUX, 0xe);
28403                         } else {
28404                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28405                                                  TX_SSI_MASTER, 0x9);
28406                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28407                                                  TSSIA, 0x31);
28408                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28409                                                  TSSIG, 0x0);
28410                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28411                                                  TX_SSI_MUX, 0xc);
28412                         }
28413                 }
28414         }
28415 }
28416
28417 static void wlc_phy_txpwrctrl_idle_tssi_nphy(phy_info_t *pi)
28418 {
28419         s32 rssi_buf[4];
28420         s32 int_val;
28421
28422         if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
28423
28424                 return;
28425
28426         if (PHY_IPA(pi)) {
28427                 wlc_phy_ipa_internal_tssi_setup_nphy(pi);
28428         }
28429
28430         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28431                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
28432                                                   0, 0x3, 0,
28433                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
28434         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28435                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
28436         }
28437
28438         wlc_phy_stopplayback_nphy(pi);
28439
28440         wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
28441
28442         udelay(20);
28443         int_val =
28444             wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
28445                                    1);
28446         wlc_phy_stopplayback_nphy(pi);
28447         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
28448
28449         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28450                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
28451                                                   0, 0x3, 1,
28452                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
28453         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28454                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
28455         }
28456
28457         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28458
28459                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
28460                     (u8) ((int_val >> 24) & 0xff);
28461                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
28462                     (u8) ((int_val >> 24) & 0xff);
28463
28464                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
28465                     (u8) ((int_val >> 8) & 0xff);
28466                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
28467                     (u8) ((int_val >> 8) & 0xff);
28468         } else {
28469                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
28470                     (u8) ((int_val >> 24) & 0xff);
28471
28472                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
28473                     (u8) ((int_val >> 8) & 0xff);
28474
28475                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
28476                     (u8) ((int_val >> 16) & 0xff);
28477                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
28478                     (u8) ((int_val) & 0xff);
28479         }
28480
28481 }
28482
28483 static void wlc_phy_txpwrctrl_pwr_setup_nphy(phy_info_t *pi)
28484 {
28485         u32 idx;
28486         s16 a1[2], b0[2], b1[2];
28487         s8 target_pwr_qtrdbm[2];
28488         s32 num, den, pwr_est;
28489         u8 chan_freq_range;
28490         u8 idle_tssi[2];
28491         u32 tbl_id, tbl_len, tbl_offset;
28492         u32 regval[64];
28493         u8 core;
28494
28495         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28496                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28497                 (void)R_REG(pi->sh->osh, &pi->regs->maccontrol);
28498                 udelay(1);
28499         }
28500
28501         if (pi->phyhang_avoid)
28502                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28503
28504         or_phy_reg(pi, 0x122, (0x1 << 0));
28505
28506         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28507                 and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
28508         } else {
28509
28510                 or_phy_reg(pi, 0x1e7, (0x1 << 15));
28511         }
28512
28513         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28514                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28515
28516         if (pi->sh->sromrev < 4) {
28517                 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
28518                 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
28519                 target_pwr_qtrdbm[0] = 13 * 4;
28520                 target_pwr_qtrdbm[1] = 13 * 4;
28521                 a1[0] = -424;
28522                 a1[1] = -424;
28523                 b0[0] = 5612;
28524                 b0[1] = 5612;
28525                 b1[1] = -1393;
28526                 b1[0] = -1393;
28527         } else {
28528
28529                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
28530                 switch (chan_freq_range) {
28531                 case WL_CHAN_FREQ_RANGE_2G:
28532                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
28533                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
28534                         target_pwr_qtrdbm[0] =
28535                             pi->nphy_pwrctrl_info[0].max_pwr_2g;
28536                         target_pwr_qtrdbm[1] =
28537                             pi->nphy_pwrctrl_info[1].max_pwr_2g;
28538                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
28539                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
28540                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
28541                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
28542                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
28543                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
28544                         break;
28545                 case WL_CHAN_FREQ_RANGE_5GL:
28546                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
28547                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
28548                         target_pwr_qtrdbm[0] =
28549                             pi->nphy_pwrctrl_info[0].max_pwr_5gl;
28550                         target_pwr_qtrdbm[1] =
28551                             pi->nphy_pwrctrl_info[1].max_pwr_5gl;
28552                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
28553                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
28554                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
28555                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
28556                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
28557                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
28558                         break;
28559                 case WL_CHAN_FREQ_RANGE_5GM:
28560                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
28561                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
28562                         target_pwr_qtrdbm[0] =
28563                             pi->nphy_pwrctrl_info[0].max_pwr_5gm;
28564                         target_pwr_qtrdbm[1] =
28565                             pi->nphy_pwrctrl_info[1].max_pwr_5gm;
28566                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
28567                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
28568                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
28569                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
28570                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
28571                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
28572                         break;
28573                 case WL_CHAN_FREQ_RANGE_5GH:
28574                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
28575                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
28576                         target_pwr_qtrdbm[0] =
28577                             pi->nphy_pwrctrl_info[0].max_pwr_5gh;
28578                         target_pwr_qtrdbm[1] =
28579                             pi->nphy_pwrctrl_info[1].max_pwr_5gh;
28580                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
28581                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
28582                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
28583                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
28584                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
28585                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
28586                         break;
28587                 default:
28588                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
28589                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
28590                         target_pwr_qtrdbm[0] = 13 * 4;
28591                         target_pwr_qtrdbm[1] = 13 * 4;
28592                         a1[0] = -424;
28593                         a1[1] = -424;
28594                         b0[0] = 5612;
28595                         b0[1] = 5612;
28596                         b1[1] = -1393;
28597                         b1[0] = -1393;
28598                         break;
28599                 }
28600         }
28601
28602         target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
28603         target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
28604
28605         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28606                 if (pi->srom_fem2g.tssipos) {
28607                         or_phy_reg(pi, 0x1e9, (0x1 << 14));
28608                 }
28609
28610                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28611                         for (core = 0; core <= 1; core++) {
28612                                 if (PHY_IPA(pi)) {
28613
28614                                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
28615                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28616                                                                  TX, core,
28617                                                                  TX_SSI_MUX,
28618                                                                  0xe);
28619                                         } else {
28620                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28621                                                                  TX, core,
28622                                                                  TX_SSI_MUX,
28623                                                                  0xc);
28624                                         }
28625                                 } else {
28626                                 }
28627                         }
28628                 } else {
28629                         if (PHY_IPA(pi)) {
28630
28631                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
28632                                                 RADIO_2056_TX0,
28633                                                 (CHSPEC_IS5G
28634                                                  (pi->
28635                                                   radio_chanspec)) ? 0xc : 0xe);
28636                                 write_radio_reg(pi,
28637                                                 RADIO_2056_TX_TX_SSI_MUX |
28638                                                 RADIO_2056_TX1,
28639                                                 (CHSPEC_IS5G
28640                                                  (pi->
28641                                                   radio_chanspec)) ? 0xc : 0xe);
28642                         } else {
28643
28644                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
28645                                                 RADIO_2056_TX0, 0x11);
28646                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
28647                                                 RADIO_2056_TX1, 0x11);
28648                         }
28649                 }
28650         }
28651
28652         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28653                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28654                 (void)R_REG(pi->sh->osh, &pi->regs->maccontrol);
28655                 udelay(1);
28656         }
28657
28658         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28659                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
28660                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
28661         } else {
28662                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
28663                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
28664         }
28665
28666         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28667                 mod_phy_reg(pi, 0x222, (0xff << 0),
28668                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
28669         } else if (NREV_GT(pi->pubpi.phy_rev, 1)) {
28670                 mod_phy_reg(pi, 0x222, (0xff << 0),
28671                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
28672         }
28673
28674         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28675                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28676
28677         write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
28678
28679         write_phy_reg(pi, 0x1e9,
28680                       (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
28681
28682         write_phy_reg(pi, 0x1ea,
28683                       (target_pwr_qtrdbm[0] << 0) |
28684                       (target_pwr_qtrdbm[1] << 8));
28685
28686         tbl_len = 64;
28687         tbl_offset = 0;
28688         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
28689              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
28690
28691                 for (idx = 0; idx < tbl_len; idx++) {
28692                         num =
28693                             8 * (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
28694                         den = 32768 + a1[tbl_id - 26] * idx;
28695                         pwr_est = max(((4 * num + den / 2) / den), -8);
28696                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
28697                                 if (idx <=
28698                                     (uint) (31 - idle_tssi[tbl_id - 26] + 1))
28699                                         pwr_est =
28700                                             max(pwr_est,
28701                                                 target_pwr_qtrdbm[tbl_id - 26] +
28702                                                 1);
28703                         }
28704                         regval[idx] = (u32) pwr_est;
28705                 }
28706                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
28707                                          regval);
28708         }
28709
28710         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28711         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
28712                                  pi->adj_pwr_tbl_nphy);
28713         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
28714                                  pi->adj_pwr_tbl_nphy);
28715
28716         if (pi->phyhang_avoid)
28717                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28718 }
28719
28720 static bool wlc_phy_txpwr_ison_nphy(phy_info_t *pi)
28721 {
28722         return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28723                                              (0x1 << 14) | (0x1 << 13));
28724 }
28725
28726 static u8 wlc_phy_txpwr_idx_cur_get_nphy(phy_info_t *pi, u8 core)
28727 {
28728         u16 tmp;
28729         tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
28730
28731         tmp = (tmp & (0x7f << 8)) >> 8;
28732         return (u8) tmp;
28733 }
28734
28735 static void
28736 wlc_phy_txpwr_idx_cur_set_nphy(phy_info_t *pi, u8 idx0, u8 idx1)
28737 {
28738         mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
28739
28740         if (NREV_GT(pi->pubpi.phy_rev, 1))
28741                 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
28742 }
28743
28744 u16 wlc_phy_txpwr_idx_get_nphy(phy_info_t *pi)
28745 {
28746         u16 tmp;
28747         u16 pwr_idx[2];
28748
28749         if (wlc_phy_txpwr_ison_nphy(pi)) {
28750                 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28751                 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28752
28753                 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28754         } else {
28755                 tmp =
28756                     ((pi->nphy_txpwrindex[PHY_CORE_0].
28757                       index_internal & 0xff) << 8) | (pi->
28758                                                       nphy_txpwrindex
28759                                                       [PHY_CORE_1].
28760                                                       index_internal & 0xff);
28761         }
28762
28763         return tmp;
28764 }
28765
28766 void wlc_phy_txpwr_papd_cal_nphy(phy_info_t *pi)
28767 {
28768         if (PHY_IPA(pi)
28769             && (pi->nphy_force_papd_cal
28770                 || (wlc_phy_txpwr_ison_nphy(pi)
28771                     &&
28772                     (((u32)
28773                       ABS(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28774                           pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28775                      || ((u32)
28776                          ABS(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28777                              pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4))))) {
28778                 wlc_phy_a4(pi, true);
28779         }
28780 }
28781
28782 void wlc_phy_txpwrctrl_enable_nphy(phy_info_t *pi, u8 ctrl_type)
28783 {
28784         u16 mask = 0, val = 0, ishw = 0;
28785         u8 ctr;
28786         uint core;
28787         u32 tbl_offset;
28788         u32 tbl_len;
28789         u16 regval[84];
28790
28791         if (pi->phyhang_avoid)
28792                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28793
28794         switch (ctrl_type) {
28795         case PHY_TPC_HW_OFF:
28796         case PHY_TPC_HW_ON:
28797                 pi->nphy_txpwrctrl = ctrl_type;
28798                 break;
28799         default:
28800                 break;
28801         }
28802
28803         if (ctrl_type == PHY_TPC_HW_OFF) {
28804                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28805
28806                         if (wlc_phy_txpwr_ison_nphy(pi)) {
28807                                 for (core = 0; core < pi->pubpi.phy_corenum;
28808                                      core++)
28809                                         pi->nphy_txpwr_idx[core] =
28810                                             wlc_phy_txpwr_idx_cur_get_nphy(pi,
28811                                                                            (u8)
28812                                                                            core);
28813                         }
28814
28815                 }
28816
28817                 tbl_len = 84;
28818                 tbl_offset = 64;
28819                 for (ctr = 0; ctr < tbl_len; ctr++) {
28820                         regval[ctr] = 0;
28821                 }
28822                 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28823                                          regval);
28824                 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28825                                          regval);
28826
28827                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28828
28829                         and_phy_reg(pi, 0x1e7,
28830                                     (u16) (~((0x1 << 15) |
28831                                                 (0x1 << 14) | (0x1 << 13))));
28832                 } else {
28833                         and_phy_reg(pi, 0x1e7,
28834                                     (u16) (~((0x1 << 14) | (0x1 << 13))));
28835                 }
28836
28837                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28838                         or_phy_reg(pi, 0x8f, (0x1 << 8));
28839                         or_phy_reg(pi, 0xa5, (0x1 << 8));
28840                 } else {
28841                         or_phy_reg(pi, 0xa5, (0x1 << 14));
28842                 }
28843
28844                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28845                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28846                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28847                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28848
28849                 if (NREV_LT(pi->pubpi.phy_rev, 2) && IS40MHZ(pi))
28850                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28851                                        MHF1_IQSWAP_WAR, WLC_BAND_ALL);
28852
28853         } else {
28854
28855                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28856                                          8, pi->adj_pwr_tbl_nphy);
28857                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28858                                          8, pi->adj_pwr_tbl_nphy);
28859
28860                 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28861                 mask = (0x1 << 14) | (0x1 << 13);
28862                 val = (ishw << 14) | (ishw << 13);
28863
28864                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28865                         mask |= (0x1 << 15);
28866                         val |= (ishw << 15);
28867                 }
28868
28869                 mod_phy_reg(pi, 0x1e7, mask, val);
28870
28871                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28872                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28873                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28874                                 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28875                         } else {
28876                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28877                                 if (NREV_GT(pi->pubpi.phy_rev, 1))
28878                                         mod_phy_reg(pi, 0x222,
28879                                                     (0xff << 0), 0x64);
28880                         }
28881                 }
28882
28883                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28884                         if ((pi->nphy_txpwr_idx[0] != 128)
28885                             && (pi->nphy_txpwr_idx[1] != 128)) {
28886                                 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28887                                                                pi->
28888                                                                nphy_txpwr_idx
28889                                                                [0],
28890                                                                pi->
28891                                                                nphy_txpwr_idx
28892                                                                [1]);
28893                         }
28894                 }
28895
28896                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28897                         and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28898                         and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28899                 } else {
28900                         and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28901                 }
28902
28903                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28904                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28905                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28906                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28907
28908                 if (NREV_LT(pi->pubpi.phy_rev, 2) && IS40MHZ(pi))
28909                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28910                                        0x0, WLC_BAND_ALL);
28911
28912                 if (PHY_IPA(pi)) {
28913                         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28914                                     0x29b, (0x1 << 2), (0) << 2);
28915
28916                         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28917                                     0x29b, (0x1 << 2), (0) << 2);
28918
28919                 }
28920
28921         }
28922
28923         if (pi->phyhang_avoid)
28924                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28925 }
28926
28927 void
28928 wlc_phy_txpwr_index_nphy(phy_info_t *pi, u8 core_mask, s8 txpwrindex,
28929                          bool restore_cals)
28930 {
28931         u8 core, txpwrctl_tbl;
28932         u16 tx_ind0, iq_ind0, lo_ind0;
28933         u16 m1m2;
28934         u32 txgain;
28935         u16 rad_gain, dac_gain;
28936         u8 bbmult;
28937         u32 iqcomp;
28938         u16 iqcomp_a, iqcomp_b;
28939         u32 locomp;
28940         u16 tmpval;
28941         u8 tx_pwr_ctrl_state;
28942         s32 rfpwr_offset;
28943         u16 regval[2];
28944
28945         if (pi->phyhang_avoid)
28946                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28947
28948         tx_ind0 = 192;
28949         iq_ind0 = 320;
28950         lo_ind0 = 448;
28951
28952         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28953
28954                 if ((core_mask & (1 << core)) == 0) {
28955                         continue;
28956                 }
28957
28958                 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28959
28960                 if (txpwrindex < 0) {
28961                         if (pi->nphy_txpwrindex[core].index < 0) {
28962
28963                                 continue;
28964                         }
28965
28966                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28967                                 mod_phy_reg(pi, 0x8f,
28968                                             (0x1 << 8),
28969                                             pi->nphy_txpwrindex[core].
28970                                             AfectrlOverride);
28971                                 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28972                                             pi->nphy_txpwrindex[core].
28973                                             AfectrlOverride);
28974                         } else {
28975                                 mod_phy_reg(pi, 0xa5,
28976                                             (0x1 << 14),
28977                                             pi->nphy_txpwrindex[core].
28978                                             AfectrlOverride);
28979                         }
28980
28981                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28982                                       0xaa : 0xab,
28983                                       pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28984
28985                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28986                                                  &pi->nphy_txpwrindex[core].
28987                                                  rad_gain);
28988
28989                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28990                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28991                         m1m2 |= ((core == PHY_CORE_0) ?
28992                                  (pi->nphy_txpwrindex[core].bbmult << 8) :
28993                                  (pi->nphy_txpwrindex[core].bbmult << 0));
28994                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28995
28996                         if (restore_cals) {
28997
28998                                 wlc_phy_table_write_nphy(pi, 15, 2,
28999                                                          (80 + 2 * core), 16,
29000                                                          (void *)&pi->
29001                                                          nphy_txpwrindex[core].
29002                                                          iqcomp_a);
29003
29004                                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
29005                                                          16,
29006                                                          &pi->
29007                                                          nphy_txpwrindex[core].
29008                                                          locomp);
29009                                 wlc_phy_table_write_nphy(pi, 15, 1, (93 + core),
29010                                                          16,
29011                                                          (void *)&pi->
29012                                                          nphy_txpwrindex[core].
29013                                                          locomp);
29014                         }
29015
29016                         wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
29017
29018                         pi->nphy_txpwrindex[core].index_internal =
29019                             pi->nphy_txpwrindex[core].index_internal_save;
29020                 } else {
29021
29022                         if (pi->nphy_txpwrindex[core].index < 0) {
29023
29024                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
29025                                         mod_phy_reg(pi, 0x8f,
29026                                                     (0x1 << 8),
29027                                                     pi->nphy_txpwrindex[core].
29028                                                     AfectrlOverride);
29029                                         mod_phy_reg(pi, 0xa5, (0x1 << 8),
29030                                                     pi->nphy_txpwrindex[core].
29031                                                     AfectrlOverride);
29032                                 } else {
29033                                         pi->nphy_txpwrindex[core].
29034                                             AfectrlOverride =
29035                                             read_phy_reg(pi, 0xa5);
29036                                 }
29037
29038                                 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
29039                                     read_phy_reg(pi,
29040                                                  (core ==
29041                                                   PHY_CORE_0) ? 0xaa : 0xab);
29042
29043                                 wlc_phy_table_read_nphy(pi, 7, 1,
29044                                                         (0x110 + core), 16,
29045                                                         &pi->
29046                                                         nphy_txpwrindex[core].
29047                                                         rad_gain);
29048
29049                                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
29050                                                         &tmpval);
29051                                 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
29052                                 tmpval &= 0xff;
29053                                 pi->nphy_txpwrindex[core].bbmult =
29054                                     (u8) tmpval;
29055
29056                                 wlc_phy_table_read_nphy(pi, 15, 2,
29057                                                         (80 + 2 * core), 16,
29058                                                         (void *)&pi->
29059                                                         nphy_txpwrindex[core].
29060                                                         iqcomp_a);
29061
29062                                 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
29063                                                         16,
29064                                                         (void *)&pi->
29065                                                         nphy_txpwrindex[core].
29066                                                         locomp);
29067
29068                                 pi->nphy_txpwrindex[core].index_internal_save =
29069                                     pi->nphy_txpwrindex[core].index_internal;
29070                         }
29071
29072                         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
29073                         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
29074
29075                         if (NREV_IS(pi->pubpi.phy_rev, 1))
29076                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
29077
29078                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
29079                                                 (tx_ind0 + txpwrindex), 32,
29080                                                 &txgain);
29081
29082                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
29083                                 rad_gain =
29084                                     (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
29085                         } else {
29086                                 rad_gain =
29087                                     (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
29088                         }
29089                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
29090                         bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
29091
29092                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
29093                                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
29094                                                  0xa5), (0x1 << 8), (0x1 << 8));
29095                         } else {
29096                                 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
29097                         }
29098                         write_phy_reg(pi, (core == PHY_CORE_0) ?
29099                                       0xaa : 0xab, dac_gain);
29100
29101                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
29102                                                  &rad_gain);
29103
29104                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
29105                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
29106                         m1m2 |=
29107                             ((core ==
29108                               PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
29109
29110                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
29111
29112                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
29113                                                 (iq_ind0 + txpwrindex), 32,
29114                                                 &iqcomp);
29115                         iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
29116                         iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
29117
29118                         if (restore_cals) {
29119                                 regval[0] = (u16) iqcomp_a;
29120                                 regval[1] = (u16) iqcomp_b;
29121                                 wlc_phy_table_write_nphy(pi, 15, 2,
29122                                                          (80 + 2 * core), 16,
29123                                                          regval);
29124                         }
29125
29126                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
29127                                                 (lo_ind0 + txpwrindex), 32,
29128                                                 &locomp);
29129                         if (restore_cals) {
29130                                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
29131                                                          16, &locomp);
29132                         }
29133
29134                         if (NREV_IS(pi->pubpi.phy_rev, 1))
29135                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
29136
29137                         if (PHY_IPA(pi)) {
29138                                 wlc_phy_table_read_nphy(pi,
29139                                                         (core ==
29140                                                          PHY_CORE_0 ?
29141                                                          NPHY_TBL_ID_CORE1TXPWRCTL
29142                                                          :
29143                                                          NPHY_TBL_ID_CORE2TXPWRCTL),
29144                                                         1, 576 + txpwrindex, 32,
29145                                                         &rfpwr_offset);
29146
29147                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
29148                                             0x29b, (0x1ff << 4),
29149                                             ((s16) rfpwr_offset) << 4);
29150
29151                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
29152                                             0x29b, (0x1 << 2), (1) << 2);
29153
29154                         }
29155
29156                         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
29157                 }
29158
29159                 pi->nphy_txpwrindex[core].index = txpwrindex;
29160         }
29161
29162         if (pi->phyhang_avoid)
29163                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
29164 }
29165
29166 void
29167 wlc_phy_txpower_sromlimit_get_nphy(phy_info_t *pi, uint chan, u8 *max_pwr,
29168                                    u8 txp_rate_idx)
29169 {
29170         u8 chan_freq_range;
29171
29172         chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
29173         switch (chan_freq_range) {
29174         case WL_CHAN_FREQ_RANGE_2G:
29175                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
29176                 break;
29177         case WL_CHAN_FREQ_RANGE_5GM:
29178                 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
29179                 break;
29180         case WL_CHAN_FREQ_RANGE_5GL:
29181                 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
29182                 break;
29183         case WL_CHAN_FREQ_RANGE_5GH:
29184                 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
29185                 break;
29186         default:
29187                 ASSERT(0);
29188                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
29189                 break;
29190         }
29191
29192         return;
29193 }
29194
29195 void wlc_phy_stay_in_carriersearch_nphy(phy_info_t *pi, bool enable)
29196 {
29197         u16 clip_off[] = { 0xffff, 0xffff };
29198
29199         ASSERT(0 == (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC));
29200
29201         if (enable) {
29202                 if (pi->nphy_deaf_count == 0) {
29203                         pi->classifier_state =
29204                             wlc_phy_classifier_nphy(pi, 0, 0);
29205                         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
29206                         wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
29207                         wlc_phy_clip_det_nphy(pi, 1, clip_off);
29208                 }
29209
29210                 pi->nphy_deaf_count++;
29211
29212                 wlc_phy_resetcca_nphy(pi);
29213
29214         } else {
29215                 ASSERT(pi->nphy_deaf_count > 0);
29216
29217                 pi->nphy_deaf_count--;
29218
29219                 if (pi->nphy_deaf_count == 0) {
29220                         wlc_phy_classifier_nphy(pi, (0x7 << 0),
29221                                                 pi->classifier_state);
29222                         wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
29223                 }
29224         }
29225 }
29226
29227 void wlc_nphy_deaf_mode(phy_info_t *pi, bool mode)
29228 {
29229         wlapi_suspend_mac_and_wait(pi->sh->physhim);
29230
29231         if (mode) {
29232                 if (pi->nphy_deaf_count == 0)
29233                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
29234         } else {
29235                 if (pi->nphy_deaf_count > 0)
29236                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
29237         }
29238         wlapi_enable_mac(pi->sh->physhim);
29239 }