]> git.karo-electronics.de Git - mv-sheeva.git/blob - drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
staging: brcm80211: deleted brcmsmac/cfg.h and brcmsmac/bsscfg.h
[mv-sheeva.git] / drivers / staging / brcm80211 / brcmsmac / phy / 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 <defs.h>
20 #include <linux/delay.h>
21 #include <linux/pci.h>
22 #include <aiutils.h>
23 #include <chipcommon.h>
24 #include <pmu.h>
25
26 #include <brcm_hw_ids.h>
27 #include <dma.h>
28
29 #include <types.h>
30 #include <phy_radio.h>
31 #include <phy_int.h>
32 #include <phyreg_n.h>
33 #include <phytbl_n.h>
34
35 #define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name) \
36         read_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
37         ((core == PHY_CORE_0) ? radio_type##_##jspace##0 : radio_type##_##jspace##1))
38 #define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value) \
39         write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
40         ((core == PHY_CORE_0) ? radio_type##_##jspace##0 : radio_type##_##jspace##1), value);
41 #define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
42         write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value);
43
44 #define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name) \
45         read_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##jspace##0##_##reg_name : \
46         radio_type##_##jspace##1##_##reg_name));
47 #define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value) \
48         write_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##jspace##0##_##reg_name : \
49         radio_type##_##jspace##1##_##reg_name), value);
50 #define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name) \
51         read_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##reg_name##_##jspace##0 : \
52         radio_type##_##reg_name##_##jspace##1));
53 #define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value) \
54         write_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##reg_name##_##jspace##0 : \
55         radio_type##_##reg_name##_##jspace##1), value);
56
57 #define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
58 #define NPHY_ACI_CHANNEL_DELTA 5
59 #define NPHY_ACI_CHANNEL_SKIP 4
60 #define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
61 #define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
62 #define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
63 #define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
64 #define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
65 #define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
66
67 #define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
68
69 #define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
70
71 #define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
72
73 #define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
74
75 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
76
77 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
78
79 #define NPHY_NOISE_NOASSOC_ENTER_TH  400
80
81 #define NPHY_NOISE_ASSOC_ENTER_TH  400
82
83 #define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH  400
84
85 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
86 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
87
88 #define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
89
90 #define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
91
92 #define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
93
94 #define NPHY_RSSICAL_MAXREAD 31
95
96 #define NPHY_RSSICAL_NPOLL 8
97 #define NPHY_RSSICAL_MAXD  (1<<20)
98 #define NPHY_MIN_RXIQ_PWR 2
99
100 #define NPHY_RSSICAL_W1_TARGET 25
101 #define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
102 #define NPHY_RSSICAL_NB_TARGET 0
103
104 #define NPHY_RSSICAL_W1_TARGET_REV3 29
105 #define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
106
107 #define NPHY_CALSANITY_RSSI_NB_MAX_POS  9
108 #define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
109 #define NPHY_CALSANITY_RSSI_W1_MAX_POS  12
110 #define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - NPHY_RSSICAL_MAXREAD)
111 #define NPHY_CALSANITY_RSSI_W2_MAX_POS  NPHY_CALSANITY_RSSI_W1_MAX_POS
112 #define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - NPHY_RSSICAL_MAXREAD)
113 #define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
114 #define NPHY_RSSI_NB_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
115                                ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
116 #define NPHY_RSSI_W1_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
117                                ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
118 #define NPHY_RSSI_W2_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
119                                ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
120
121 #define NPHY_IQCAL_NUMGAINS 9
122 #define NPHY_N_GCTL 0x66
123
124 #define NPHY_PAPD_EPS_TBL_SIZE 64
125 #define NPHY_PAPD_SCL_TBL_SIZE 64
126 #define NPHY_NUM_DIG_FILT_COEFFS 15
127
128 #define NPHY_PAPD_COMP_OFF 0
129 #define NPHY_PAPD_COMP_ON  1
130
131 #define NPHY_SROM_TEMPSHIFT             32
132 #define NPHY_SROM_MAXTEMPOFFSET         16
133 #define NPHY_SROM_MINTEMPOFFSET         -16
134
135 #define NPHY_CAL_MAXTEMPDELTA           64
136
137 #define NPHY_NOISEVAR_TBLLEN40 256
138 #define NPHY_NOISEVAR_TBLLEN20 128
139
140 #define NPHY_ANARXLPFBW_REDUCTIONFACT 7
141
142 #define NPHY_ADJUSTED_MINCRSPOWER 0x1e
143
144 /* 5357 Chip specific ChipControl register bits */
145 #define CCTRL5357_EXTPA                 (1<<14) /* extPA in ChipControl 1, bit 14 */
146 #define CCTRL5357_ANT_MUX_2o3           (1<<15) /* 2o3 in ChipControl 1, bit 15 */
147
148 typedef struct _nphy_iqcal_params {
149         u16 txlpf;
150         u16 txgm;
151         u16 pga;
152         u16 pad;
153         u16 ipa;
154         u16 cal_gain;
155         u16 ncorr[5];
156 } nphy_iqcal_params_t;
157
158 typedef struct _nphy_txiqcal_ladder {
159         u8 percent;
160         u8 g_env;
161 } nphy_txiqcal_ladder_t;
162
163 typedef struct {
164         nphy_txgains_t gains;
165         bool useindex;
166         u8 index;
167 } nphy_ipa_txcalgains_t;
168
169 typedef struct nphy_papd_restore_state_t {
170         u16 fbmix[2];
171         u16 vga_master[2];
172         u16 intpa_master[2];
173         u16 afectrl[2];
174         u16 afeoverride[2];
175         u16 pwrup[2];
176         u16 atten[2];
177         u16 mm;
178 } nphy_papd_restore_state;
179
180 typedef struct _nphy_ipa_txrxgain {
181         u16 hpvga;
182         u16 lpf_biq1;
183         u16 lpf_biq0;
184         u16 lna2;
185         u16 lna1;
186         s8 txpwrindex;
187 } nphy_ipa_txrxgain_t;
188
189 #define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
190
191 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_5GHz[] = { {0, 0, 0, 0, 0, 100},
192 {0, 0, 0, 0, 0, 50},
193 {0, 0, 0, 0, 0, -1},
194 {0, 0, 0, 3, 0, -1},
195 {0, 0, 3, 3, 0, -1},
196 {0, 2, 3, 3, 0, -1}
197 };
198
199 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_2GHz[] = { {0, 0, 0, 0, 0, 128},
200 {0, 0, 0, 0, 0, 70},
201 {0, 0, 0, 0, 0, 20},
202 {0, 0, 0, 3, 0, 20},
203 {0, 0, 3, 3, 0, 20},
204 {0, 2, 3, 3, 0, 20}
205 };
206
207 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = { {0, 0, 0, 0, 0, 100},
208 {0, 0, 0, 0, 0, 50},
209 {0, 0, 0, 0, 0, -1},
210 {0, 0, 0, 3, 0, -1},
211 {0, 0, 3, 3, 0, -1},
212 {0, 0, 5, 3, 0, -1}
213 };
214
215 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = { {0, 0, 0, 0, 0, 10},
216 {0, 0, 0, 1, 0, 10},
217 {0, 0, 1, 2, 0, 10},
218 {0, 0, 1, 3, 0, 10},
219 {0, 0, 4, 3, 0, 10},
220 {0, 0, 6, 3, 0, 10}
221 };
222
223 #define NPHY_RXCAL_TONEAMP 181
224 #define NPHY_RXCAL_TONEFREQ_40MHz 4000
225 #define NPHY_RXCAL_TONEFREQ_20MHz 2000
226
227 enum {
228         NPHY_RXCAL_GAIN_INIT = 0,
229         NPHY_RXCAL_GAIN_UP,
230         NPHY_RXCAL_GAIN_DOWN
231 };
232
233 #define wlc_phy_get_papd_nphy(pi) \
234         (read_phy_reg((pi), 0x1e7) & \
235                         ((0x1 << 15) | \
236                         (0x1 << 14) | \
237                         (0x1 << 13)))
238
239 #define TXFILT_SHAPING_OFDM20   0
240 #define TXFILT_SHAPING_OFDM40   1
241 #define TXFILT_SHAPING_CCK      2
242 #define TXFILT_DEFAULT_OFDM20   3
243 #define TXFILT_DEFAULT_OFDM40   4
244
245 u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
246         {-377, 137, -407, 208, -1527, 956, 93, 186, 93,
247          230, -44, 230, 201, -191, 201},
248         {-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
249          26, 34, -32, 34},
250         {-360, 164, -376, 164, -1533, 576, 308, -314, 308,
251          121, -73, 121, 91, 124, 91},
252         {-295, 200, -363, 142, -1391, 826, 151, 301, 151,
253          151, 301, 151, 602, -752, 602},
254         {-92, 58, -96, 49, -104, 44, 17, 35, 17,
255          12, 25, 12, 13, 27, 13},
256         {-375, 136, -399, 209, -1479, 949, 130, 260, 130,
257          230, -44, 230, 201, -191, 201},
258         {0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
259          0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
260 };
261
262 typedef struct _chan_info_nphy_2055 {
263         u16 chan;
264         u16 freq;
265         uint unknown;
266         u8 RF_pll_ref;
267         u8 RF_rf_pll_mod1;
268         u8 RF_rf_pll_mod0;
269         u8 RF_vco_cap_tail;
270         u8 RF_vco_cal1;
271         u8 RF_vco_cal2;
272         u8 RF_pll_lf_c1;
273         u8 RF_pll_lf_r1;
274         u8 RF_pll_lf_c2;
275         u8 RF_lgbuf_cen_buf;
276         u8 RF_lgen_tune1;
277         u8 RF_lgen_tune2;
278         u8 RF_core1_lgbuf_a_tune;
279         u8 RF_core1_lgbuf_g_tune;
280         u8 RF_core1_rxrf_reg1;
281         u8 RF_core1_tx_pga_pad_tn;
282         u8 RF_core1_tx_mx_bgtrim;
283         u8 RF_core2_lgbuf_a_tune;
284         u8 RF_core2_lgbuf_g_tune;
285         u8 RF_core2_rxrf_reg1;
286         u8 RF_core2_tx_pga_pad_tn;
287         u8 RF_core2_tx_mx_bgtrim;
288         u16 PHY_BW1a;
289         u16 PHY_BW2;
290         u16 PHY_BW3;
291         u16 PHY_BW4;
292         u16 PHY_BW5;
293         u16 PHY_BW6;
294 } chan_info_nphy_2055_t;
295
296 typedef struct _chan_info_nphy_radio205x {
297         u16 chan;
298         u16 freq;
299         u8 RF_SYN_pll_vcocal1;
300         u8 RF_SYN_pll_vcocal2;
301         u8 RF_SYN_pll_refdiv;
302         u8 RF_SYN_pll_mmd2;
303         u8 RF_SYN_pll_mmd1;
304         u8 RF_SYN_pll_loopfilter1;
305         u8 RF_SYN_pll_loopfilter2;
306         u8 RF_SYN_pll_loopfilter3;
307         u8 RF_SYN_pll_loopfilter4;
308         u8 RF_SYN_pll_loopfilter5;
309         u8 RF_SYN_reserved_addr27;
310         u8 RF_SYN_reserved_addr28;
311         u8 RF_SYN_reserved_addr29;
312         u8 RF_SYN_logen_VCOBUF1;
313         u8 RF_SYN_logen_MIXER2;
314         u8 RF_SYN_logen_BUF3;
315         u8 RF_SYN_logen_BUF4;
316         u8 RF_RX0_lnaa_tune;
317         u8 RF_RX0_lnag_tune;
318         u8 RF_TX0_intpaa_boost_tune;
319         u8 RF_TX0_intpag_boost_tune;
320         u8 RF_TX0_pada_boost_tune;
321         u8 RF_TX0_padg_boost_tune;
322         u8 RF_TX0_pgaa_boost_tune;
323         u8 RF_TX0_pgag_boost_tune;
324         u8 RF_TX0_mixa_boost_tune;
325         u8 RF_TX0_mixg_boost_tune;
326         u8 RF_RX1_lnaa_tune;
327         u8 RF_RX1_lnag_tune;
328         u8 RF_TX1_intpaa_boost_tune;
329         u8 RF_TX1_intpag_boost_tune;
330         u8 RF_TX1_pada_boost_tune;
331         u8 RF_TX1_padg_boost_tune;
332         u8 RF_TX1_pgaa_boost_tune;
333         u8 RF_TX1_pgag_boost_tune;
334         u8 RF_TX1_mixa_boost_tune;
335         u8 RF_TX1_mixg_boost_tune;
336         u16 PHY_BW1a;
337         u16 PHY_BW2;
338         u16 PHY_BW3;
339         u16 PHY_BW4;
340         u16 PHY_BW5;
341         u16 PHY_BW6;
342 } chan_info_nphy_radio205x_t;
343
344 typedef struct _chan_info_nphy_radio2057 {
345         u16 chan;
346         u16 freq;
347         u8 RF_vcocal_countval0;
348         u8 RF_vcocal_countval1;
349         u8 RF_rfpll_refmaster_sparextalsize;
350         u8 RF_rfpll_loopfilter_r1;
351         u8 RF_rfpll_loopfilter_c2;
352         u8 RF_rfpll_loopfilter_c1;
353         u8 RF_cp_kpd_idac;
354         u8 RF_rfpll_mmd0;
355         u8 RF_rfpll_mmd1;
356         u8 RF_vcobuf_tune;
357         u8 RF_logen_mx2g_tune;
358         u8 RF_logen_mx5g_tune;
359         u8 RF_logen_indbuf2g_tune;
360         u8 RF_logen_indbuf5g_tune;
361         u8 RF_txmix2g_tune_boost_pu_core0;
362         u8 RF_pad2g_tune_pus_core0;
363         u8 RF_pga_boost_tune_core0;
364         u8 RF_txmix5g_boost_tune_core0;
365         u8 RF_pad5g_tune_misc_pus_core0;
366         u8 RF_lna2g_tune_core0;
367         u8 RF_lna5g_tune_core0;
368         u8 RF_txmix2g_tune_boost_pu_core1;
369         u8 RF_pad2g_tune_pus_core1;
370         u8 RF_pga_boost_tune_core1;
371         u8 RF_txmix5g_boost_tune_core1;
372         u8 RF_pad5g_tune_misc_pus_core1;
373         u8 RF_lna2g_tune_core1;
374         u8 RF_lna5g_tune_core1;
375         u16 PHY_BW1a;
376         u16 PHY_BW2;
377         u16 PHY_BW3;
378         u16 PHY_BW4;
379         u16 PHY_BW5;
380         u16 PHY_BW6;
381 } chan_info_nphy_radio2057_t;
382
383 typedef struct _chan_info_nphy_radio2057_rev5 {
384         u16 chan;
385         u16 freq;
386         u8 RF_vcocal_countval0;
387         u8 RF_vcocal_countval1;
388         u8 RF_rfpll_refmaster_sparextalsize;
389         u8 RF_rfpll_loopfilter_r1;
390         u8 RF_rfpll_loopfilter_c2;
391         u8 RF_rfpll_loopfilter_c1;
392         u8 RF_cp_kpd_idac;
393         u8 RF_rfpll_mmd0;
394         u8 RF_rfpll_mmd1;
395         u8 RF_vcobuf_tune;
396         u8 RF_logen_mx2g_tune;
397         u8 RF_logen_indbuf2g_tune;
398         u8 RF_txmix2g_tune_boost_pu_core0;
399         u8 RF_pad2g_tune_pus_core0;
400         u8 RF_lna2g_tune_core0;
401         u8 RF_txmix2g_tune_boost_pu_core1;
402         u8 RF_pad2g_tune_pus_core1;
403         u8 RF_lna2g_tune_core1;
404         u16 PHY_BW1a;
405         u16 PHY_BW2;
406         u16 PHY_BW3;
407         u16 PHY_BW4;
408         u16 PHY_BW5;
409         u16 PHY_BW6;
410 } chan_info_nphy_radio2057_rev5_t;
411
412 typedef struct nphy_sfo_cfg {
413         u16 PHY_BW1a;
414         u16 PHY_BW2;
415         u16 PHY_BW3;
416         u16 PHY_BW4;
417         u16 PHY_BW5;
418         u16 PHY_BW6;
419 } nphy_sfo_cfg_t;
420
421 static chan_info_nphy_2055_t chan_info_nphy_2055[] = {
422         {
423          184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
424          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
425          0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
426         {
427          186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
428          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
429          0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
430         {
431          188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
432          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
433          0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
434         {
435          190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
436          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
437          0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
438         {
439          192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
440          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
441          0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
442         {
443          194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
444          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
445          0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
446         {
447          196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
448          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
449          0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
450         {
451          198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
452          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
453          0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
454         {
455          200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
456          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
457          0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
458         {
459          202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
460          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
461          0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
462         {
463          204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
464          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
465          0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
466         {
467          206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
468          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
469          0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
470         {
471          208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
472          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
473          0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
474         {
475          210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
476          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
477          0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
478         {
479          212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
480          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
481          0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
482         {
483          214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
484          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
485          0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
486         {
487          216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
488          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
489          0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
490         {
491          218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
492          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
493          0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
494         {
495          220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
496          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
497          0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
498         {
499          222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
500          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
501          0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
502         {
503          224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
504          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
505          0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
506         {
507          226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
508          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
509          0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
510         {
511          228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
512          0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
513          0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
514         {
515          32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
516          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
517          0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
518         {
519          34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
520          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
521          0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
522         {
523          36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
524          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
525          0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
526         {
527          38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
528          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
529          0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
530         {
531          40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
532          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
533          0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
534         {
535          42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
536          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
537          0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
538         {
539          44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
540          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
541          0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
542         {
543          46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
544          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
545          0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
546         {
547          48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
548          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
549          0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
550         {
551          50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
552          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
553          0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
554         {
555          52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
556          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
557          0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
558         {
559          54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
560          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
561          0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
562         {
563          56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
564          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
565          0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
566         {
567          58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
568          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
569          0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
570         {
571          60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
572          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
573          0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
574         {
575          62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
576          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
577          0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
578         {
579          64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
580          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
581          0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
582         {
583          66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
584          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
585          0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
586         {
587          68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
588          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
589          0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
590         {
591          70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
592          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
593          0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
594         {
595          72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
596          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
597          0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
598         {
599          74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
600          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
601          0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
602         {
603          76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
604          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
605          0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
606         {
607          78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
608          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
609          0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
610         {
611          80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
612          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
613          0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
614         {
615          82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
616          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
617          0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
618         {
619          84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
620          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
621          0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
622         {
623          86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
624          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
625          0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
626         {
627          88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
628          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
629          0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
630         {
631          90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
632          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
633          0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
634         {
635          92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
636          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
637          0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
638         {
639          94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
640          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
641          0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
642         {
643          96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
644          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
645          0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
646         {
647          98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
648          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
649          0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
650         {
651          100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
652          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
653          0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
654         {
655          102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
656          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
657          0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
658         {
659          104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
660          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
661          0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
662         {
663          106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
664          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
665          0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
666         {
667          108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
668          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
669          0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
670         {
671          110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
672          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
673          0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
674         {
675          112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
676          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
677          0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
678         {
679          114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
680          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
681          0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
682         {
683          116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
684          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
685          0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
686         {
687          118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
688          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
689          0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
690         {
691          120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
692          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
693          0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
694         {
695          122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
696          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
697          0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
698         {
699          124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
700          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
701          0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
702         {
703          126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
704          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
705          0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
706         {
707          128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
708          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
709          0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
710         {
711          130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
712          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
713          0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
714         {
715          132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
716          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
717          0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
718         {
719          134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
720          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
721          0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
722         {
723          136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
724          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
725          0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
726         {
727          138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
728          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
729          0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
730         {
731          140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
732          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
733          0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
734         {
735          142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
736          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
737          0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
738         {
739          144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
740          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
741          0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
742         {
743          145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
744          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
745          0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
746         {
747          146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
748          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
749          0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
750         {
751          147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
752          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
753          0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
754         {
755          148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
756          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
757          0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
758         {
759          149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
760          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
761          0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
762         {
763          150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
764          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
765          0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
766         {
767          151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
768          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
769          0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
770         {
771          152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
772          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
773          0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
774         {
775          153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
776          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
777          0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
778         {
779          154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
780          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
781          0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
782         {
783          155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
784          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
785          0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
786         {
787          156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
788          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
789          0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
790         {
791          157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
792          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
793          0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
794         {
795          158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
796          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
797          0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
798         {
799          159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
800          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
801          0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
802         {
803          160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
804          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
805          0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
806         {
807          161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
808          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
809          0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
810         {
811          162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
812          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
813          0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
814         {
815          163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
816          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
817          0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
818         {
819          164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
820          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
821          0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
822         {
823          165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
824          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
825          0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
826         {
827          166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
828          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
829          0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
830         {
831          168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
832          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
833          0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
834         {
835          170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
836          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
837          0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
838         {
839          172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
840          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
841          0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
842         {
843          174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
844          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
845          0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
846         {
847          176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
848          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
849          0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
850         {
851          178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
852          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
853          0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
854         {
855          180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
856          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
857          0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
858         {
859          182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
860          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
861          0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
862         {
863          1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
864          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
865          0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
866         {
867          2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
868          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
869          0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
870         {
871          3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
872          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
873          0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
874         {
875          4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
876          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
877          0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
878         {
879          5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
880          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
881          0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
882         {
883          6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
884          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
885          0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
886         {
887          7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
888          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
889          0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
890         {
891          8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
892          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
893          0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
894         {
895          9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
896          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
897          0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
898         {
899          10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
900          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
901          0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
902         {
903          11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
904          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
905          0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
906         {
907          12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
908          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
909          0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
910         {
911          13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
912          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
913          0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
914         {
915          14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
916          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
917          0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
918 };
919
920 static chan_info_nphy_radio205x_t chan_info_nphyrev3_2056[] = {
921         {
922          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
923          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
924          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
925          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
926         {
927          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
928          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
929          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
930          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
931         {
932          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
933          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
934          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
935          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
936         {
937          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
938          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
939          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
940          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
941         {
942          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
943          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
944          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
945          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
946         {
947          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
948          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
949          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
950          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
951         {
952          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
953          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
954          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
955          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
956         {
957          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
958          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
959          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
960          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
961         {
962          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
963          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
964          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
965          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
966         {
967          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
968          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
969          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
970          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
971         {
972          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
973          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
974          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
975          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
976         {
977          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
978          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
979          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
980          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
981         {
982          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
983          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
984          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
985          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
986         {
987          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
988          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
989          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
990          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
991         {
992          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
993          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
994          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
995          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
996         {
997          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
998          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
999          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1000          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1001         {
1002          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1003          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1004          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1005          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1006         {
1007          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1008          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1009          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1010          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1011         {
1012          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1013          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1014          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1015          0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1016         {
1017          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1018          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1019          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1020          0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1021         {
1022          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1023          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1024          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1025          0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1026         {
1027          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1028          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1029          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1030          0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1031         {
1032          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1033          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1034          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1035          0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1036         {
1037          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1038          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1039          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1040          0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1041         {
1042          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1043          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1044          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1045          0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1046         {
1047          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1048          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1049          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1050          0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1051         {
1052          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1053          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1054          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1055          0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1056         {
1057          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1058          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1059          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1060          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1061         {
1062          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1063          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1064          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1065          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1066         {
1067          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1068          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1069          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1070          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1071         {
1072          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1073          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1074          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1075          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1076         {
1077          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1078          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1079          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1080          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1081         {
1082          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1083          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1084          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1085          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1086         {
1087          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1088          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1089          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1090          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1091         {
1092          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1093          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1094          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1095          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1096         {
1097          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1098          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1099          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1100          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1101         {
1102          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1103          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1104          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1105          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1106         {
1107          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1108          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1109          0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1110          0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1111         {
1112          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1113          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1114          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1115          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1116         {
1117          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1118          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1119          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1120          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1121         {
1122          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1123          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1124          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1125          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1126         {
1127          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1128          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1129          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1130          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1131         {
1132          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1133          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1134          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1135          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1136         {
1137          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1138          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1139          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1140          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1141         {
1142          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1143          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1144          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1145          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1146         {
1147          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1148          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1149          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1150          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1151         {
1152          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1153          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1154          0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1155          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1156         {
1157          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1158          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1159          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1160          0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1161         {
1162          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1163          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1164          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1165          0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1166         {
1167          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1168          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1169          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1170          0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1171         {
1172          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1173          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1174          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1175          0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1176         {
1177          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1178          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1179          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1180          0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1181         {
1182          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1183          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1184          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1185          0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1186         {
1187          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1188          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1189          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1190          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1191         {
1192          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1193          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1194          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1195          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1196         {
1197          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1198          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1199          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1200          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1201         {
1202          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1203          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1204          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1205          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1206         {
1207          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1208          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1209          0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1210          0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1211         {
1212          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1213          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1214          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1215          0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1216         {
1217          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1218          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1219          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1220          0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1221         {
1222          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1223          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1224          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1225          0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1226         {
1227          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1228          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1229          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1230          0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1231         {
1232          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1233          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1234          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1235          0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1236         {
1237          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1238          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1239          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1240          0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1241         {
1242          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1243          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1244          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1245          0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1246         {
1247          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1248          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1249          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1250          0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1251         {
1252          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1253          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1254          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1255          0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1256         {
1257          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1258          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1259          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1260          0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1261         {
1262          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1263          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1264          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1265          0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1266         {
1267          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1268          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1269          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1270          0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1271         {
1272          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1273          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1274          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1275          0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1276         {
1277          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1278          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1279          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1280          0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1281         {
1282          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1283          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1284          0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1285          0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1286         {
1287          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1288          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1289          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1290          0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1291         {
1292          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1293          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1294          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1295          0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1296         {
1297          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1298          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1299          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1300          0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1301         {
1302          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1303          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1304          0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1305          0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1306         {
1307          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1308          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1309          0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1310          0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1311         {
1312          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1313          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1314          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1315          0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1316         {
1317          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1318          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1319          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1320          0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1321         {
1322          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1323          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1324          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1325          0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1326         {
1327          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1328          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1329          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1330          0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1331         {
1332          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1333          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1334          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1335          0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1336         {
1337          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1338          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1339          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1340          0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1341         {
1342          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1343          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1344          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1345          0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1346         {
1347          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1348          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1349          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1350          0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1351         {
1352          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1353          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1354          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1355          0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1356         {
1357          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1358          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1359          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1360          0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1361         {
1362          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1363          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1364          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1365          0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1366         {
1367          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1368          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1369          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1370          0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1371         {
1372          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1373          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1374          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1375          0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1376         {
1377          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1378          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1379          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1380          0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1381         {
1382          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1383          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1384          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1385          0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1386         {
1387          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1388          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1389          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1390          0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1391         {
1392          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1393          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1394          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1395          0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1396         {
1397          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1398          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1399          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1400          0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1401         {
1402          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1403          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1404          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1405          0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1406         {
1407          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1408          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1409          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1410          0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1411         {
1412          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1413          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1414          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1415          0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1416         {
1417          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1418          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1419          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1420          0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1421         {
1422          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1423          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1424          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1425          0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1426         {
1427          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1428          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1429          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1430          0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1431         {
1432          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1433          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1434          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1435          0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1436         {
1437          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1438          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1439          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1440          0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1441         {
1442          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1443          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1444          0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1445          0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1446         {
1447          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1448          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1449          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1450          0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1451         {
1452          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1453          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1454          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1455          0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1456         {
1457          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1458          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1459          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1460          0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1461         {
1462          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1463          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1464          0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1465          0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1466         {
1467          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1468          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1469          0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1470          0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1471         {
1472          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1473          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1474          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1475          0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1476         {
1477          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1478          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1479          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1480          0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1481         {
1482          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1483          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1484          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1485          0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1486         {
1487          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1488          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1489          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1490          0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1491         {
1492          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1493          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1494          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1495          0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1496         {
1497          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1498          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1499          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1500          0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1501         {
1502          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1503          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1504          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1505          0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1506         {
1507          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1508          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1509          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1510          0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1511         {
1512          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1513          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1514          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1515          0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1516         {
1517          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1518          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1519          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1520          0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1521         {
1522          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1523          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1524          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1525          0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1526         {
1527          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1528          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1529          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1530          0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1531         {
1532          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1533          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1534          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1535          0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1536         {
1537          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1538          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1539          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1540          0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1541 };
1542
1543 static chan_info_nphy_radio205x_t chan_info_nphyrev4_2056_A1[] = {
1544         {
1545          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1546          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1547          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1548          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1549         {
1550          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1551          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1552          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1553          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1554         {
1555          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1556          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1557          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1558          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1559         {
1560          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1561          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1562          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1563          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1564         {
1565          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1566          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1567          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1568          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1569         {
1570          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1571          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1572          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1573          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1574         {
1575          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1576          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1577          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1578          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1579         {
1580          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1581          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1582          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1583          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1584         {
1585          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1586          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1587          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1588          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1589         {
1590          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1591          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1592          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1593          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1594         {
1595          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1596          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1597          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1598          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1599         {
1600          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1601          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1602          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1603          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1604         {
1605          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1606          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1607          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1608          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1609         {
1610          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1611          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1612          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1613          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1614         {
1615          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1616          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1617          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1618          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1619         {
1620          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1621          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1622          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1623          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1624         {
1625          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1626          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1627          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1628          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1629         {
1630          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1631          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1632          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1633          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1634         {
1635          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1636          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1637          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1638          0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1639         {
1640          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1641          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1642          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1643          0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1644         {
1645          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1646          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1647          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1648          0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1649         {
1650          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1651          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1652          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1653          0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1654         {
1655          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1656          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1657          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1658          0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1659         {
1660          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1661          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1662          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1663          0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1664         {
1665          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1666          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1667          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1668          0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1669         {
1670          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1671          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1672          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1673          0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1674         {
1675          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1676          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1677          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1678          0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1679         {
1680          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1681          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1682          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1683          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1684         {
1685          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1686          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1687          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1688          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1689         {
1690          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1691          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1692          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1693          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1694         {
1695          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1696          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1697          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1698          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1699         {
1700          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1701          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1702          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1703          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1704         {
1705          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1706          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1707          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1708          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1709         {
1710          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1711          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1712          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1713          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1714         {
1715          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1716          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1717          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1718          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1719         {
1720          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1721          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1722          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1723          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1724         {
1725          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1726          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1727          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1728          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1729         {
1730          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1731          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1732          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1733          0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1734         {
1735          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1736          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1737          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1738          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1739         {
1740          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1741          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1742          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1743          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1744         {
1745          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1746          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1747          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1748          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1749         {
1750          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1751          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1752          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1753          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1754         {
1755          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1756          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1757          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1758          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1759         {
1760          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1761          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1762          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1763          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1764         {
1765          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1766          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1767          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1768          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1769         {
1770          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1771          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1772          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1773          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1774         {
1775          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1776          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1777          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1778          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1779         {
1780          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1781          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1782          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1783          0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1784         {
1785          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1786          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1787          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1788          0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1789         {
1790          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1791          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1792          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1793          0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1794         {
1795          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1796          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1797          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1798          0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1799         {
1800          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1801          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1802          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1803          0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1804         {
1805          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1806          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1807          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1808          0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1809         {
1810          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1811          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1812          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1813          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1814         {
1815          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1816          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1817          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1818          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1819         {
1820          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1821          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1822          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1823          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1824         {
1825          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1826          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1827          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1828          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1829         {
1830          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1831          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1832          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1833          0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1834         {
1835          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1836          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1837          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1838          0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1839         {
1840          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1841          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1842          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1843          0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1844         {
1845          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1846          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1847          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1848          0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1849         {
1850          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1851          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1852          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1853          0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1854         {
1855          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1856          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1857          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1858          0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1859         {
1860          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1861          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1862          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1863          0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1864         {
1865          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1866          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1867          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1868          0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1869         {
1870          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1871          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1872          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1873          0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1874         {
1875          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1876          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1877          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1878          0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1879         {
1880          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1881          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1882          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1883          0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1884         {
1885          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1886          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1887          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1888          0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1889         {
1890          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1891          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1892          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1893          0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1894         {
1895          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1896          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1897          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1898          0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1899         {
1900          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1901          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1902          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1903          0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1904         {
1905          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1906          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1907          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1908          0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1909         {
1910          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1911          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1912          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1913          0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1914         {
1915          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1916          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1917          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1918          0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1919         {
1920          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1921          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1922          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1923          0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1924         {
1925          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1926          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1927          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1928          0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1929         {
1930          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1931          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1932          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1933          0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1934         {
1935          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1936          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1937          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1938          0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1939         {
1940          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1941          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1942          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1943          0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1944         {
1945          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1946          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1947          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1948          0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1949         {
1950          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1951          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1952          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1953          0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1954         {
1955          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1956          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1957          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1958          0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1959         {
1960          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1961          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1962          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1963          0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1964         {
1965          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1966          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1967          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1968          0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1969         {
1970          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1971          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1972          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1973          0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1974         {
1975          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1976          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1977          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1978          0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1979         {
1980          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1981          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1982          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1983          0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1984         {
1985          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1986          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1987          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1988          0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1989         {
1990          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1991          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1992          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1993          0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1994         {
1995          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1996          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1997          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1998          0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1999         {
2000          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2001          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2002          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2003          0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2004         {
2005          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2006          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2007          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2008          0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2009         {
2010          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2011          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2012          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2013          0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2014         {
2015          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2016          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2017          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2018          0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2019         {
2020          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2021          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2022          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2023          0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2024         {
2025          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2026          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2027          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2028          0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2029         {
2030          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2031          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2032          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2033          0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2034         {
2035          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2036          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2037          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2038          0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2039         {
2040          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2041          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2042          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2043          0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2044         {
2045          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2046          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2047          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2048          0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2049         {
2050          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2051          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2052          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2053          0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2054         {
2055          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2056          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2057          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2058          0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2059         {
2060          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2061          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2062          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2063          0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2064         {
2065          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2066          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2067          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2068          0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2069         {
2070          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2071          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2072          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2073          0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2074         {
2075          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2076          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2077          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2078          0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2079         {
2080          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2081          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2082          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2083          0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2084         {
2085          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2086          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2087          0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2088          0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2089         {
2090          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2091          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2092          0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2093          0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2094         {
2095          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2096          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2097          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2098          0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2099         {
2100          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2101          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2102          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2103          0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2104         {
2105          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2106          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2107          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2108          0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2109         {
2110          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2111          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2112          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2113          0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2114         {
2115          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2116          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2117          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2118          0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2119         {
2120          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2121          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2122          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2123          0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2124         {
2125          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2126          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2127          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2128          0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2129         {
2130          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2131          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2132          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2133          0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2134         {
2135          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2136          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2137          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2138          0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2139         {
2140          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2141          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2142          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2143          0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2144         {
2145          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2146          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2147          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2148          0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2149         {
2150          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2151          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2152          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2153          0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2154         {
2155          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2156          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2157          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2158          0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2159         {
2160          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2161          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2162          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2163          0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2164 };
2165
2166 static chan_info_nphy_radio205x_t chan_info_nphyrev5_2056v5[] = {
2167         {
2168          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2169          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2170          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2171          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2172         {
2173          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2174          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2175          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2176          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2177         {
2178          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2179          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2180          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2181          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2182         {
2183          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2184          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2185          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2186          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2187         {
2188          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2189          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2190          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2191          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2192         {
2193          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2194          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2195          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2196          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2197         {
2198          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2199          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2200          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2201          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2202         {
2203          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2204          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2205          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2206          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2207         {
2208          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2209          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2210          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2211          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2212         {
2213          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2214          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2215          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2216          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2217         {
2218          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2219          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2220          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2221          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2222         {
2223          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2224          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2225          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2226          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2227         {
2228          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2229          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2230          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2231          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2232         {
2233          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2234          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2235          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2236          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2237         {
2238          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2239          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2240          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2241          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2242         {
2243          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2244          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2245          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2246          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2247         {
2248          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2249          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2250          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2251          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2252         {
2253          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2254          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2255          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2256          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2257         {
2258          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2259          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2260          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2261          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2262         {
2263          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2264          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2265          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2266          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2267         {
2268          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2269          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2270          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2271          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2272         {
2273          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2274          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2275          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2276          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2277         {
2278          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2279          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2280          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2281          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2282         {
2283          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2284          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2285          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2286          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2287         {
2288          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2289          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2290          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2291          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2292         {
2293          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2294          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2295          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2296          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2297         {
2298          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2299          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2300          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2301          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2302         {
2303          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2304          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2305          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2306          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2307         {
2308          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2309          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2310          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2311          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2312         {
2313          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2314          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2315          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2316          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2317         {
2318          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2319          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2320          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2321          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2322         {
2323          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2324          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2325          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2326          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2327         {
2328          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2329          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2330          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2331          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2332         {
2333          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2334          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2335          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2336          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2337         {
2338          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2339          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2340          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2341          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2342         {
2343          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2344          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2345          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2346          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2347         {
2348          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2349          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2350          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2351          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2352         {
2353          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2354          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2355          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2356          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2357         {
2358          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2359          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2360          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2361          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2362         {
2363          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2364          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2365          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2366          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2367         {
2368          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2369          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2370          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2371          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2372         {
2373          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2374          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2375          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2376          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2377         {
2378          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2379          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2380          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2381          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2382         {
2383          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2384          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2385          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2386          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2387         {
2388          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2389          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2390          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2391          0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2392         {
2393          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2394          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2395          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2396          0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2397         {
2398          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2399          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2400          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2401          0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2402         {
2403          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2404          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2405          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2406          0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2407         {
2408          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2409          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2410          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2411          0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2412         {
2413          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2414          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2415          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2416          0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2417         {
2418          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2419          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2420          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2421          0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2422         {
2423          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2424          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2425          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2426          0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2427         {
2428          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2429          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2430          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2431          0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2432         {
2433          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2434          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2435          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2436          0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2437         {
2438          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2439          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2440          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2441          0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2442         {
2443          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2444          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2445          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2446          0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2447         {
2448          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2449          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2450          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2451          0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2452         {
2453          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2454          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2455          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2456          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2457         {
2458          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2459          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2460          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2461          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2462         {
2463          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2464          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2465          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2466          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2467         {
2468          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2469          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2470          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2471          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2472         {
2473          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2474          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2475          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2476          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2477         {
2478          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2479          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2480          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2481          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2482         {
2483          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2484          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2485          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2486          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2487         {
2488          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2489          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2490          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2491          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2492         {
2493          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2494          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2495          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2496          0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2497         {
2498          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2499          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2500          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2501          0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2502         {
2503          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2504          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2505          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2506          0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2507         {
2508          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2509          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2510          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2511          0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2512         {
2513          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2514          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2515          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2516          0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2517         {
2518          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2519          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2520          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2521          0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2522         {
2523          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2524          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2525          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2526          0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2527         {
2528          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2529          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2530          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2531          0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2532         {
2533          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2534          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2535          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2536          0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2537         {
2538          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2539          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2540          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2541          0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2542         {
2543          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2544          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2545          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2546          0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2547         {
2548          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2549          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2550          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2551          0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2552         {
2553          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2554          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2555          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2556          0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2557         {
2558          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2559          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2560          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2561          0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2562         {
2563          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2564          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2565          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2566          0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2567         {
2568          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2569          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2570          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2571          0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2572         {
2573          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2574          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2575          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2576          0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2577         {
2578          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2579          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2580          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2581          0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2582         {
2583          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2584          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2585          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2586          0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2587         {
2588          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2589          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2590          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2591          0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2592         {
2593          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2594          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2595          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2596          0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2597         {
2598          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2599          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2600          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2601          0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2602         {
2603          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2604          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2605          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2606          0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2607         {
2608          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2609          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2610          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2611          0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2612         {
2613          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2614          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2615          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2616          0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2617         {
2618          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2619          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2620          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2621          0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2622         {
2623          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2624          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2625          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2626          0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2627         {
2628          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2629          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2630          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2631          0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2632         {
2633          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2634          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2635          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2636          0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2637         {
2638          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2639          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2640          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2641          0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2642         {
2643          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2644          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2645          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2646          0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2647         {
2648          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2649          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2650          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2651          0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2652         {
2653          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2654          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2655          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2656          0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2657         {
2658          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2659          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2660          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2661          0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2662         {
2663          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2664          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2665          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2666          0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2667         {
2668          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2669          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2670          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2671          0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2672         {
2673          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2674          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2675          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2676          0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2677         {
2678          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2679          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2680          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2681          0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2682         {
2683          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2684          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2685          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2686          0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2687         {
2688          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2689          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2690          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2691          0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2692         {
2693          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2694          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2695          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2696          0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2697         {
2698          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2699          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2700          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2701          0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2702         {
2703          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2704          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2705          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2706          0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2707         {
2708          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2709          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2710          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2711          0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2712         {
2713          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2714          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2715          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2716          0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2717         {
2718          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2719          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2720          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2721          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2722         {
2723          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2724          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2725          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2726          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2727         {
2728          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2729          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2730          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2731          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2732         {
2733          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2734          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2735          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2736          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2737         {
2738          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2739          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2740          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2741          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2742         {
2743          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2744          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2745          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2746          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2747         {
2748          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2749          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2750          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2751          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2752         {
2753          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2754          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2755          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2756          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2757         {
2758          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2759          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2760          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2761          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2762         {
2763          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2764          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2765          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2766          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2767         {
2768          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2769          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2770          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2771          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2772         {
2773          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2774          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2775          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2776          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2777         {
2778          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2779          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2780          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2781          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2782         {
2783          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2784          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2785          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2786          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2787 };
2788
2789 static chan_info_nphy_radio205x_t chan_info_nphyrev6_2056v6[] = {
2790         {
2791          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2792          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2793          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2794          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2795         {
2796          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2797          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2798          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2799          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2800         {
2801          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2802          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2803          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2804          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2805         {
2806          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2807          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2808          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2809          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2810         {
2811          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2812          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2813          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2814          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2815         {
2816          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2817          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2818          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2819          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2820         {
2821          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2822          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2823          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2824          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2825         {
2826          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2827          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2828          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2829          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2830         {
2831          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2832          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2833          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2834          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2835         {
2836          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2837          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2838          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2839          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2840         {
2841          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2842          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2843          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2844          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2845         {
2846          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2847          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2848          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2849          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2850         {
2851          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2852          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2853          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2854          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2855         {
2856          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2857          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2858          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2859          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2860         {
2861          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2862          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2863          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2864          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2865         {
2866          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2867          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2868          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2869          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2870         {
2871          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2872          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2873          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2874          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2875         {
2876          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2877          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2878          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2879          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2880         {
2881          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2882          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2883          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2884          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2885         {
2886          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2887          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2888          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2889          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2890         {
2891          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2892          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2893          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2894          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2895         {
2896          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2897          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2898          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2899          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2900         {
2901          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2902          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2903          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2904          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2905         {
2906          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2907          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2908          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2909          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2910         {
2911          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2912          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2913          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2914          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2915         {
2916          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2917          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2918          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2919          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2920         {
2921          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2922          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2923          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2924          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2925         {
2926          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2927          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2928          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2929          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2930         {
2931          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2932          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2933          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2934          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2935         {
2936          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2937          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2938          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2939          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2940         {
2941          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2942          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2943          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2944          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2945         {
2946          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2947          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2948          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2949          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2950         {
2951          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2952          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2953          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2954          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2955         {
2956          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2957          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2958          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2959          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2960         {
2961          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2962          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2963          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2964          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2965         {
2966          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2967          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2968          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2969          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2970         {
2971          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2972          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2973          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2974          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2975         {
2976          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2977          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2978          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2979          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2980         {
2981          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2982          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2983          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2984          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2985         {
2986          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2987          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
2988          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2989          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2990         {
2991          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2992          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
2993          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
2994          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2995         {
2996          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2997          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
2998          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
2999          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3000         {
3001          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3002          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3003          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3004          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3005         {
3006          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3007          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3008          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3009          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3010         {
3011          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3012          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3013          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3014          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3015         {
3016          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3017          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3018          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3019          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3020         {
3021          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3022          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3023          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3024          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3025         {
3026          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3027          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3028          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3029          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3030         {
3031          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3032          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3033          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3034          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3035         {
3036          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3037          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3038          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3039          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3040         {
3041          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3042          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3043          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3044          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3045         {
3046          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3047          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3048          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3049          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3050         {
3051          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3052          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3053          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3054          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3055         {
3056          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3057          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3058          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3059          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3060         {
3061          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3062          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3063          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3064          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3065         {
3066          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3067          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3068          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3069          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3070         {
3071          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3072          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3073          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3074          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3075         {
3076          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3077          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3078          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3079          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3080         {
3081          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3082          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3083          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3084          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3085         {
3086          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3087          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3088          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3089          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3090         {
3091          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3092          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3093          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3094          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3095         {
3096          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3097          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3098          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3099          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3100         {
3101          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3102          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3103          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3104          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3105         {
3106          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3107          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3108          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3109          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3110         {
3111          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3112          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3113          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3114          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3115         {
3116          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3117          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3118          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3119          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3120         {
3121          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3122          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3123          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3124          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3125         {
3126          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3127          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3128          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3129          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3130         {
3131          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3132          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3133          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3134          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3135         {
3136          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3137          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3138          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3139          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3140         {
3141          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3142          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3143          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3144          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3145         {
3146          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3147          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3148          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3149          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3150         {
3151          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3152          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3153          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3154          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3155         {
3156          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3157          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3158          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3159          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3160         {
3161          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3162          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3163          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3164          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3165         {
3166          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3167          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3168          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3169          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3170         {
3171          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3172          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3173          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3174          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3175         {
3176          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3177          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3178          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3179          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3180         {
3181          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3182          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3183          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3184          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3185         {
3186          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3187          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3188          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3189          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3190         {
3191          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3192          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3193          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3194          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3195         {
3196          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3197          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3198          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3199          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3200         {
3201          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3202          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3203          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3204          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3205         {
3206          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3207          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3208          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3209          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3210         {
3211          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3212          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3213          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3214          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3215         {
3216          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3217          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3218          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3219          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3220         {
3221          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3222          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3223          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3224          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3225         {
3226          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3227          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3228          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3229          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3230         {
3231          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3232          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3233          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3234          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3235         {
3236          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3237          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3238          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3239          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3240         {
3241          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3242          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3243          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3244          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3245         {
3246          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3247          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3248          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3249          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3250         {
3251          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3252          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3253          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3254          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3255         {
3256          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3257          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3258          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3259          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3260         {
3261          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3262          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3263          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3264          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3265         {
3266          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3267          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3268          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3269          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3270         {
3271          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3272          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3273          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3274          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3275         {
3276          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3277          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3278          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3279          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3280         {
3281          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3282          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3283          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3284          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3285         {
3286          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3287          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3288          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3289          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3290         {
3291          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3292          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3293          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3294          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3295         {
3296          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3297          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3298          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3299          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3300         {
3301          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3302          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3303          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3304          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3305         {
3306          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3307          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3308          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3309          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3310         {
3311          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3312          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3313          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3314          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3315         {
3316          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3317          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3318          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3319          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3320         {
3321          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3322          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3323          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3324          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3325         {
3326          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3327          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3328          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3329          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3330         {
3331          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3332          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3333          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3334          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3335         {
3336          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3337          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3338          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3339          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3340         {
3341          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3342          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3343          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3344          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3345         {
3346          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3347          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3348          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3349          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3350         {
3351          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3352          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3353          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3354          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3355         {
3356          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3357          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3358          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3359          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3360         {
3361          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3362          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3363          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3364          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3365         {
3366          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3367          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3368          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3369          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3370         {
3371          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3372          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3373          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3374          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3375         {
3376          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3377          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3378          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3379          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3380         {
3381          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3382          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3383          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3384          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3385         {
3386          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3387          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3388          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3389          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3390         {
3391          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3392          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3393          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3394          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3395         {
3396          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3397          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3398          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3399          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3400         {
3401          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3402          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3403          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3404          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3405         {
3406          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3407          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3408          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3409          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3410 };
3411
3412 static chan_info_nphy_radio205x_t chan_info_nphyrev5n6_2056v7[] = {
3413         {
3414          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3415          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3416          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3417          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3418         {
3419          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3420          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3421          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3422          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3423         {
3424          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3425          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3426          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3427          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3428         {
3429          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3430          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3431          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3432          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3433         {
3434          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3435          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3436          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3437          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3438         {
3439          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3440          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3441          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3442          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3443         {
3444          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3445          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3446          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3447          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3448         {
3449          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3450          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3451          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3452          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3453         {
3454          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3455          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3456          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3457          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3458         {
3459          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3460          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3461          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3462          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3463         {
3464          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3465          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3466          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3467          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3468         {
3469          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3470          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3471          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3472          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3473         {
3474          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3475          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3476          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3477          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3478         {
3479          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3480          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3481          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3482          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3483         {
3484          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3485          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3486          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3487          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3488         {
3489          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3490          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3491          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3492          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3493         {
3494          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3495          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3496          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3497          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3498         {
3499          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3500          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3501          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3502          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3503         {
3504          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3505          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3506          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3507          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3508         {
3509          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3510          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3511          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3512          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3513         {
3514          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3515          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3516          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3517          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3518         {
3519          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3520          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3521          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3522          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3523         {
3524          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3525          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3526          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3527          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3528         {
3529          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3530          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3531          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3532          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3533         {
3534          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3535          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3536          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3537          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3538         {
3539          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3540          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3541          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3542          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3543         {
3544          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3545          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3546          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3547          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3548         {
3549          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3550          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3551          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3552          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3553         {
3554          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3555          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3556          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3557          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3558         {
3559          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3560          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3561          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3562          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3563         {
3564          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3565          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3566          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3567          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3568         {
3569          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3570          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3571          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3572          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3573         {
3574          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3575          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3576          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3577          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3578         {
3579          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3580          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3581          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3582          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3583         {
3584          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3585          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3586          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3587          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3588         {
3589          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3590          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3591          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3592          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3593         {
3594          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3595          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3596          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3597          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3598         {
3599          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3600          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3601          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3602          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3603         {
3604          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3605          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3606          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3607          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3608         {
3609          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3610          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3611          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3612          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3613         {
3614          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3615          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3616          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3617          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3618         {
3619          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3620          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3621          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3622          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3623         {
3624          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3625          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3626          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3627          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3628         {
3629          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3630          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3631          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3632          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3633         {
3634          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3635          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3636          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3637          0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3638         {
3639          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3640          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3641          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3642          0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3643         {
3644          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3645          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3646          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3647          0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3648         {
3649          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3650          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3651          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3652          0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3653         {
3654          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3655          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3656          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3657          0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3658         {
3659          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3660          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3661          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3662          0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3663         {
3664          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3665          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3666          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3667          0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3668         {
3669          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3670          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3671          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3672          0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3673         {
3674          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3675          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3676          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3677          0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3678         {
3679          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3680          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3681          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3682          0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3683         {
3684          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3685          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3686          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3687          0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3688         {
3689          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3690          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3691          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3692          0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3693         {
3694          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3695          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3696          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3697          0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3698         {
3699          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3700          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3701          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3702          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3703         {
3704          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3705          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3706          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3707          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3708         {
3709          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3710          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3711          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3712          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3713         {
3714          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3715          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3716          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3717          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3718         {
3719          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3720          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3721          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3722          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3723         {
3724          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3725          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3726          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3727          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3728         {
3729          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3730          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3731          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3732          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3733         {
3734          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3735          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3736          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3737          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3738         {
3739          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3740          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3741          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3742          0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3743         {
3744          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3745          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3746          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3747          0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3748         {
3749          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3750          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3751          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3752          0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3753         {
3754          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3755          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3756          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3757          0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3758         {
3759          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3760          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3761          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3762          0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3763         {
3764          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3765          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3766          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3767          0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3768         {
3769          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3770          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3771          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3772          0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3773         {
3774          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3775          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3776          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3777          0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3778         {
3779          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3780          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3781          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3782          0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3783         {
3784          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3785          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3786          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3787          0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3788         {
3789          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3790          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3791          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3792          0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3793         {
3794          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3795          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3796          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3797          0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3798         {
3799          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3800          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3801          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3802          0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3803         {
3804          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3805          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3806          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3807          0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3808         {
3809          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3810          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3811          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3812          0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3813         {
3814          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3815          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3816          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3817          0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3818         {
3819          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3820          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3821          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3822          0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3823         {
3824          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3825          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3826          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3827          0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3828         {
3829          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3830          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3831          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3832          0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3833         {
3834          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3835          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3836          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3837          0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3838         {
3839          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3840          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3841          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3842          0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3843         {
3844          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3845          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3846          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3847          0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3848         {
3849          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3850          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3851          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3852          0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3853         {
3854          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3855          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3856          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3857          0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3858         {
3859          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3860          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3861          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3862          0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3863         {
3864          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3865          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3866          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3867          0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3868         {
3869          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3870          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3871          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3872          0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3873         {
3874          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3875          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3876          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3877          0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3878         {
3879          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3880          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3881          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3882          0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3883         {
3884          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3885          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3886          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3887          0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3888         {
3889          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3890          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3891          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3892          0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3893         {
3894          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3895          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3896          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3897          0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3898         {
3899          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3900          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3901          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3902          0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3903         {
3904          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3905          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3906          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3907          0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3908         {
3909          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3910          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3911          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3912          0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3913         {
3914          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3915          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3916          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3917          0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3918         {
3919          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3920          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3921          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3922          0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3923         {
3924          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3925          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3926          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3927          0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3928         {
3929          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3930          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3931          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3932          0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3933         {
3934          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3935          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3936          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3937          0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3938         {
3939          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3940          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3941          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3942          0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3943         {
3944          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3945          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3946          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3947          0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3948         {
3949          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3950          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3951          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3952          0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3953         {
3954          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3955          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3956          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3957          0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3958         {
3959          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3960          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3961          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3962          0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3963         {
3964          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3965          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3966          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3967          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3968         {
3969          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3970          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3971          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3972          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3973         {
3974          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3975          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3976          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3977          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3978         {
3979          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3980          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3981          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3982          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3983         {
3984          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3985          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
3986          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
3987          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3988         {
3989          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3990          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
3991          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
3992          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3993         {
3994          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3995          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
3996          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
3997          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3998         {
3999          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4000          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
4001          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4002          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4003         {
4004          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4005          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4006          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4007          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4008         {
4009          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4010          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4011          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4012          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4013         {
4014          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4015          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4016          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4017          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4018         {
4019          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4020          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4021          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4022          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4023         {
4024          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4025          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4026          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4027          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4028         {
4029          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4030          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4031          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4032          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4033 };
4034
4035 static chan_info_nphy_radio205x_t chan_info_nphyrev6_2056v8[] = {
4036         {
4037          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4038          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4039          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4040          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4041         {
4042          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4043          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4044          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4045          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4046         {
4047          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4048          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4049          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4050          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4051         {
4052          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4053          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4054          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4055          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4056         {
4057          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4058          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4059          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4060          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4061         {
4062          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4063          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4064          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4065          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4066         {
4067          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4068          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4069          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4070          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4071         {
4072          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4073          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4074          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4075          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4076         {
4077          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4078          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4079          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4080          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4081         {
4082          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4083          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4084          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4085          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4086         {
4087          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4088          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4089          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4090          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4091         {
4092          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4093          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4094          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4095          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4096         {
4097          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4098          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4099          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4100          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4101         {
4102          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4103          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4104          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4105          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4106         {
4107          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4108          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4109          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4110          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4111         {
4112          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4113          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4114          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4115          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4116         {
4117          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4118          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4119          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4120          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4121         {
4122          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4123          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4124          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4125          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4126         {
4127          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4128          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4129          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4130          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4131         {
4132          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4133          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4134          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4135          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4136         {
4137          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4138          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4139          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4140          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4141         {
4142          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4143          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4144          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4145          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4146         {
4147          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4148          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4149          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4150          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4151         {
4152          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4153          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4154          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4155          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4156         {
4157          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4158          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4159          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4160          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4161         {
4162          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4163          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4164          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4165          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4166         {
4167          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4168          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4169          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4170          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4171         {
4172          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4173          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4174          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4175          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4176         {
4177          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4178          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4179          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4180          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4181         {
4182          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4183          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4184          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4185          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4186         {
4187          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4188          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4189          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4190          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4191         {
4192          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4193          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4194          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4195          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4196         {
4197          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4198          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4199          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4200          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4201         {
4202          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4203          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4204          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4205          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4206         {
4207          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4208          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4209          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4210          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4211         {
4212          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4213          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4214          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4215          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4216         {
4217          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4218          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4219          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4220          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4221         {
4222          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4223          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4224          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4225          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4226         {
4227          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4228          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4229          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4230          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4231         {
4232          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4233          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4234          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4235          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4236         {
4237          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4238          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4239          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4240          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4241         {
4242          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4243          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4244          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4245          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4246         {
4247          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4248          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4249          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4250          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4251         {
4252          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4253          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4254          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4255          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4256         {
4257          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4258          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4259          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4260          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4261         {
4262          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4263          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4264          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4265          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4266         {
4267          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4268          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4269          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4270          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4271         {
4272          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4273          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4274          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4275          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4276         {
4277          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4278          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4279          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4280          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4281         {
4282          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4283          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4284          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4285          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4286         {
4287          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4288          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4289          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4290          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4291         {
4292          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4293          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4294          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4295          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4296         {
4297          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4298          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4299          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4300          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4301         {
4302          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4303          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4304          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4305          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4306         {
4307          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4308          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4309          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4310          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4311         {
4312          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4313          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4314          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4315          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4316         {
4317          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4318          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4319          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4320          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4321         {
4322          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4323          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4324          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4325          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4326         {
4327          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4328          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4329          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4330          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4331         {
4332          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4333          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4334          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4335          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4336         {
4337          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4338          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4339          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4340          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4341         {
4342          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4343          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4344          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4345          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4346         {
4347          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4348          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4349          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4350          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4351         {
4352          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4353          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4354          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4355          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4356         {
4357          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4358          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4359          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4360          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4361         {
4362          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4363          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4364          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4365          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4366         {
4367          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4368          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4369          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4370          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4371         {
4372          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4373          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4374          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4375          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4376         {
4377          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4378          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4379          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4380          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4381         {
4382          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4383          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4384          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4385          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4386         {
4387          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4388          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4389          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4390          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4391         {
4392          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4393          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4394          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4395          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4396         {
4397          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4398          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4399          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4400          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4401         {
4402          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4403          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4404          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4405          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4406         {
4407          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4408          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4409          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4410          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4411         {
4412          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4413          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4414          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4415          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4416         {
4417          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4418          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4419          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4420          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4421         {
4422          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4423          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4424          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4425          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4426         {
4427          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4428          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4429          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4430          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4431         {
4432          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4433          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4434          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4435          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4436         {
4437          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4438          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4439          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4440          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4441         {
4442          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4443          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4444          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4445          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4446         {
4447          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4448          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4449          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4450          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4451         {
4452          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4453          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4454          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4455          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4456         {
4457          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4458          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4459          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4460          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4461         {
4462          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4463          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4464          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4465          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4466         {
4467          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4468          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4469          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4470          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4471         {
4472          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4473          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4474          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4475          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4476         {
4477          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4478          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4479          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4480          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4481         {
4482          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4483          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4484          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4485          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4486         {
4487          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4488          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4489          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4490          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4491         {
4492          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4493          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4494          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4495          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4496         {
4497          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4498          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4499          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4500          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4501         {
4502          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4503          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4504          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4505          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4506         {
4507          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4508          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4509          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4510          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4511         {
4512          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4513          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4514          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4515          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4516         {
4517          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4518          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4519          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4520          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4521         {
4522          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4523          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4524          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4525          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4526         {
4527          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4528          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4529          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4530          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4531         {
4532          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4533          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4534          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4535          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4536         {
4537          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4538          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4539          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4540          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4541         {
4542          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4543          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4544          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4545          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4546         {
4547          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4548          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4549          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4550          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4551         {
4552          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4553          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4554          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4555          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4556         {
4557          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4558          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4559          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4560          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4561         {
4562          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4563          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4564          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4565          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4566         {
4567          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4568          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4569          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4570          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4571         {
4572          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4573          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4574          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4575          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4576         {
4577          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4578          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4579          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4580          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4581         {
4582          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4583          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4584          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4585          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4586         {
4587          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4588          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4589          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4590          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4591         {
4592          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4593          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4594          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4595          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4596         {
4597          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4598          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4599          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4600          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4601         {
4602          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4603          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4604          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4605          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4606         {
4607          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4608          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4609          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4610          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4611         {
4612          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4613          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4614          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4615          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4616         {
4617          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4618          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4619          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4620          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4621         {
4622          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4623          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4624          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4625          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4626         {
4627          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4628          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4629          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4630          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4631         {
4632          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4633          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4634          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4635          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4636         {
4637          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4638          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4639          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4640          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4641         {
4642          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4643          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4644          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4645          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4646         {
4647          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4648          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4649          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4650          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4651         {
4652          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4653          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4654          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4655          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4656 };
4657
4658 static chan_info_nphy_radio205x_t chan_info_nphyrev6_2056v11[] = {
4659         {
4660          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4661          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4662          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4663          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4664         {
4665          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4666          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4667          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4668          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4669         {
4670          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4671          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4672          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4673          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4674         {
4675          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4676          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4677          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4678          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4679         {
4680          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4681          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4682          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4683          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4684         {
4685          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4686          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4687          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4688          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4689         {
4690          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4691          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4692          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4693          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4694         {
4695          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4696          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4697          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4698          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4699         {
4700          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4701          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4702          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4703          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4704         {
4705          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4706          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4707          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4708          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4709         {
4710          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4711          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4712          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4713          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4714         {
4715          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4716          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4717          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4718          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4719         {
4720          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4721          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4722          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4723          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4724         {
4725          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4726          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4727          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4728          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4729         {
4730          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4731          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4732          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4733          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4734         {
4735          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4736          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4737          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4738          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4739         {
4740          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4741          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4742          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4743          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4744         {
4745          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4746          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4747          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4748          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4749         {
4750          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4751          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4752          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4753          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4754         {
4755          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4756          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4757          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4758          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4759         {
4760          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4761          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4762          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4763          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4764         {
4765          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4766          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4767          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4768          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4769         {
4770          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4771          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4772          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4773          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4774         {
4775          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4776          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4777          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4778          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4779         {
4780          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4781          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4782          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4783          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4784         {
4785          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4786          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4787          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4788          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4789         {
4790          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4791          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4792          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4793          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4794         {
4795          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4796          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4797          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4798          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4799         {
4800          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4801          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4802          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4803          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4804         {
4805          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4806          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4807          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4808          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4809         {
4810          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4811          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4812          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4813          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4814         {
4815          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4816          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4817          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4818          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4819         {
4820          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4821          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4822          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4823          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4824         {
4825          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4826          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4827          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4828          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4829         {
4830          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4831          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4832          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4833          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4834         {
4835          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4836          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4837          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4838          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4839         {
4840          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4841          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4842          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4843          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4844         {
4845          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4846          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4847          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4848          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4849         {
4850          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4851          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4852          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4853          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4854         {
4855          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4856          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4857          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4858          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4859         {
4860          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4861          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4862          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4863          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4864         {
4865          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4866          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4867          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4868          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4869         {
4870          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4871          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4872          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4873          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4874         {
4875          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4876          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4877          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4878          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4879         {
4880          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4881          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4882          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4883          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4884         {
4885          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4886          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4887          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4888          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4889         {
4890          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4891          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4892          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4893          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4894         {
4895          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4896          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4897          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4898          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4899         {
4900          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4901          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4902          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4903          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4904         {
4905          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4906          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4907          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4908          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4909         {
4910          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4911          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4912          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4913          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4914         {
4915          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4916          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4917          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4918          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4919         {
4920          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4921          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4922          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4923          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4924         {
4925          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4926          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4927          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4928          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4929         {
4930          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4931          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4932          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4933          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4934         {
4935          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4936          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4937          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4938          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4939         {
4940          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4941          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4942          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4943          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4944         {
4945          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4946          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4947          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4948          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4949         {
4950          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4951          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4952          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4953          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4954         {
4955          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4956          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4957          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4958          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4959         {
4960          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4961          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4962          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4963          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4964         {
4965          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4966          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4967          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4968          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4969         {
4970          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4971          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4972          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4973          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4974         {
4975          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4976          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4977          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4978          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4979         {
4980          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4981          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4982          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4983          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4984         {
4985          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4986          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4987          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4988          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4989         {
4990          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4991          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4992          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4993          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4994         {
4995          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
4996          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4997          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4998          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4999         {
5000          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
5001          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5002          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5003          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
5004         {
5005          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5006          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5007          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5008          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5009         {
5010          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5011          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5012          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5013          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5014         {
5015          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5016          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5017          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5018          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5019         {
5020          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5021          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5022          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5023          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5024         {
5025          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5026          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5027          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5028          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5029         {
5030          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5031          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5032          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5033          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5034         {
5035          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5036          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5037          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5038          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5039         {
5040          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5041          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5042          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5043          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5044         {
5045          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5046          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5047          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5048          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5049         {
5050          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5051          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5052          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5053          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5054         {
5055          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5056          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5057          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5058          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5059         {
5060          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5061          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5062          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5063          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5064         {
5065          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5066          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5067          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5068          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5069         {
5070          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5071          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5072          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5073          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5074         {
5075          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5076          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5077          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5078          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5079         {
5080          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5081          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5082          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5083          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5084         {
5085          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5086          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5087          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5088          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5089         {
5090          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5091          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5092          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5093          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5094         {
5095          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5096          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5097          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5098          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5099         {
5100          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5101          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5102          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5103          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5104         {
5105          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5106          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5107          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5108          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5109         {
5110          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5111          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5112          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5113          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5114         {
5115          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5116          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5117          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5118          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5119         {
5120          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5121          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5122          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5123          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5124         {
5125          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5126          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5127          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5128          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5129         {
5130          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5131          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5132          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5133          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5134         {
5135          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5136          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5137          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5138          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5139         {
5140          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5141          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5142          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5143          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5144         {
5145          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5146          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5147          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5148          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5149         {
5150          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5151          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5152          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5153          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5154         {
5155          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5156          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5157          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5158          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5159         {
5160          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5161          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5162          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5163          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5164         {
5165          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5166          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5167          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5168          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5169         {
5170          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5171          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5172          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5173          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5174         {
5175          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5176          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5177          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5178          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5179         {
5180          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5181          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5182          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5183          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5184         {
5185          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5186          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5187          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5188          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5189         {
5190          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5191          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5192          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5193          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5194         {
5195          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5196          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5197          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5198          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5199         {
5200          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5201          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5202          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5203          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5204         {
5205          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5206          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5207          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5208          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5209         {
5210          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5211          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5212          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5213          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5214         {
5215          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5216          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5217          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5218          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5219         {
5220          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5221          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5222          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5223          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5224         {
5225          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5226          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5227          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5228          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5229         {
5230          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5231          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5232          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5233          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5234         {
5235          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5236          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5237          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5238          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5239         {
5240          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5241          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5242          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5243          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5244         {
5245          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5246          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5247          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5248          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5249         {
5250          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5251          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5252          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5253          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5254         {
5255          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5256          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5257          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5258          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5259         {
5260          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5261          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5262          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5263          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5264         {
5265          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5266          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5267          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5268          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5269         {
5270          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5271          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5272          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5273          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5274         {
5275          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5276          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5277          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5278          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5279 };
5280
5281 static chan_info_nphy_radio2057_t chan_info_nphyrev7_2057_rev4[] = {
5282         {
5283          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5284          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5285          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5286          0x0215,
5287          0x0216,
5288          },
5289         {
5290          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5291          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5292          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5293          0x0214,
5294          0x0215,
5295          },
5296         {
5297          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5298          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5299          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5300          0x0213,
5301          0x0214,
5302          },
5303         {
5304          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5305          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5306          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5307          0x0212,
5308          0x0213,
5309          },
5310         {
5311          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5312          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5313          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5314          0x0211,
5315          0x0212,
5316          },
5317         {
5318          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5319          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5320          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5321          0x020f,
5322          0x0211,
5323          },
5324         {
5325          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5326          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5327          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5328          0x020e,
5329          0x020f,
5330          },
5331         {
5332          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5333          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5334          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5335          0x020d,
5336          0x020e,
5337          },
5338         {
5339          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5340          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5341          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5342          0x020c,
5343          0x020d,
5344          },
5345         {
5346          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5347          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5348          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5349          0x020b,
5350          0x020c,
5351          },
5352         {
5353          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5354          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5355          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5356          0x020a,
5357          0x020b,
5358          },
5359         {
5360          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5361          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5362          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5363          0x0209,
5364          0x020a,
5365          },
5366         {
5367          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5368          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5369          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5370          0x0208,
5371          0x0209,
5372          },
5373         {
5374          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5375          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5376          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5377          0x0207,
5378          0x0208,
5379          },
5380         {
5381          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5382          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5383          0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5384          0x0206,
5385          0x0207,
5386          },
5387         {
5388          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5389          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5390          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5391          0x0205,
5392          0x0206,
5393          },
5394         {
5395          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5396          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5397          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5398          0x0204,
5399          0x0205,
5400          },
5401         {
5402          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5403          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5404          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5405          0x0203,
5406          0x0204,
5407          },
5408         {
5409          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5410          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5411          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5412          0x0202,
5413          0x0203,
5414          },
5415         {
5416          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5417          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5418          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5419          0x0201,
5420          0x0202,
5421          },
5422         {
5423          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5424          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5425          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5426          0x0200,
5427          0x0201,
5428          },
5429         {
5430          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5431          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5432          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5433          0x01ff,
5434          0x0200,
5435          },
5436         {
5437          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5438          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5439          0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5440          0x01fe,
5441          0x01ff,
5442          },
5443         {
5444          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5445          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5446          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5447          0x01fc,
5448          0x01fd,
5449          },
5450         {
5451          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5452          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5453          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5454          0x01fb,
5455          0x01fc,
5456          },
5457         {
5458          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5459          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5460          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5461          0x01fa,
5462          0x01fb,
5463          },
5464         {
5465          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5466          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5467          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5468          0x01f9,
5469          0x01fa,
5470          },
5471         {
5472          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5473          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5474          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5475          0x01f8,
5476          0x01f9,
5477          },
5478         {
5479          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5480          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5481          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5482          0x01f7,
5483          0x01f8,
5484          },
5485         {
5486          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5487          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5488          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5489          0x01f6,
5490          0x01f7,
5491          },
5492         {
5493          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5494          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5495          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5496          0x01f5,
5497          0x01f6,
5498          },
5499         {
5500          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5501          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5502          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5503          0x01f4,
5504          0x01f5,
5505          },
5506         {
5507          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5508          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5509          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5510          0x01f3,
5511          0x01f4,
5512          },
5513         {
5514          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5515          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5516          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5517          0x01f2,
5518          0x01f3,
5519          },
5520         {
5521          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5522          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5523          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5524          0x01f1,
5525          0x01f2,
5526          },
5527         {
5528          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5529          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5530          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5531          0x01f0,
5532          0x01f1,
5533          },
5534         {
5535          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5536          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5537          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5538          0x01f0,
5539          0x01f0,
5540          },
5541         {
5542          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5543          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5544          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5545          0x01ef,
5546          0x01f0,
5547          },
5548         {
5549          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5550          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5551          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5552          0x01ee,
5553          0x01ef,
5554          },
5555         {
5556          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5557          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5558          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5559          0x01ed,
5560          0x01ee,
5561          },
5562         {
5563          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5564          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5565          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5566          0x01ec,
5567          0x01ed,
5568          },
5569         {
5570          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5571          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5572          0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5573          0x01eb,
5574          0x01ec,
5575          },
5576         {
5577          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5578          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5579          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5580          0x01ea,
5581          0x01eb,
5582          },
5583         {
5584          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5585          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5586          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5587          0x01e9,
5588          0x01ea,
5589          },
5590         {
5591          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5592          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5593          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5594          0x01e8,
5595          0x01e9,
5596          },
5597         {
5598          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5599          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5600          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5601          0x01e7,
5602          0x01e8,
5603          },
5604         {
5605          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5606          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5607          0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5608          0x01e6,
5609          0x01e7,
5610          },
5611         {
5612          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5613          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5614          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5615          0x01e5,
5616          0x01e6,
5617          },
5618         {
5619          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5620          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5621          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5622          0x01e5,
5623          0x01e5,
5624          },
5625         {
5626          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5627          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5628          0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5629          0x01e4,
5630          0x01e5,
5631          },
5632         {
5633          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5634          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5635          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5636          0x01e3,
5637          0x01e4,
5638          },
5639         {
5640          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5641          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5642          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5643          0x01e2,
5644          0x01e3,
5645          },
5646         {
5647          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5648          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5649          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5650          0x01e1,
5651          0x01e2,
5652          },
5653         {
5654          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5655          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5656          0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5657          0x01e0,
5658          0x01e1,
5659          },
5660         {
5661          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5662          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5663          0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5664          0x01df,
5665          0x01e0,
5666          },
5667         {
5668          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5669          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5670          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5671          0x01de,
5672          0x01df,
5673          },
5674         {
5675          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5676          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5677          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5678          0x01dd,
5679          0x01de,
5680          },
5681         {
5682          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5683          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5684          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5685          0x01dd,
5686          0x01dd,
5687          },
5688         {
5689          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5690          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5691          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5692          0x01dc,
5693          0x01dd,
5694          },
5695         {
5696          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5697          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5698          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5699          0x01db,
5700          0x01dc,
5701          },
5702         {
5703          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5704          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5705          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5706          0x01da,
5707          0x01db,
5708          },
5709         {
5710          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5711          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5712          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5713          0x01d9,
5714          0x01da,
5715          },
5716         {
5717          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5718          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5719          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5720          0x01d8,
5721          0x01d9,
5722          },
5723         {
5724          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5725          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5726          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5727          0x01d7,
5728          0x01d8,
5729          },
5730         {
5731          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5732          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5733          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5734          0x01d7,
5735          0x01d7,
5736          },
5737         {
5738          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5739          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5740          0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5741          0x01d6,
5742          0x01d7,
5743          },
5744         {
5745          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5746          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5747          0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5748          0x01d5,
5749          0x01d6,
5750          },
5751         {
5752          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5753          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5754          0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5755          0x01d4,
5756          0x01d5,
5757          },
5758         {
5759          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5760          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5761          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5762          0x01d3,
5763          0x01d4,
5764          },
5765         {
5766          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5767          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5768          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5769          0x01d2,
5770          0x01d3,
5771          },
5772         {
5773          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5774          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5775          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5776          0x01d2,
5777          0x01d2,
5778          },
5779         {
5780          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5781          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5782          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5783          0x01d1,
5784          0x01d2,
5785          },
5786         {
5787          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5788          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5789          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5790          0x01d0,
5791          0x01d1,
5792          },
5793         {
5794          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5795          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5796          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5797          0x01cf,
5798          0x01d0,
5799          },
5800         {
5801          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5802          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5803          0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5804          0x01ce,
5805          0x01cf,
5806          },
5807         {
5808          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5809          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5810          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5811          0x01ce,
5812          0x01ce,
5813          },
5814         {
5815          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5816          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5817          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5818          0x01cd,
5819          0x01ce,
5820          },
5821         {
5822          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5823          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5824          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5825          0x01cc,
5826          0x01cd,
5827          },
5828         {
5829          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5830          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5831          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5832          0x01cb,
5833          0x01cc,
5834          },
5835         {
5836          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5837          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5838          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5839          0x01ca,
5840          0x01cb,
5841          },
5842         {
5843          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5844          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5845          0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5846          0x01ca,
5847          0x01cb,
5848          },
5849         {
5850          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5851          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5852          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5853          0x01c9,
5854          0x01ca,
5855          },
5856         {
5857          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5858          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5859          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5860          0x01c9,
5861          0x01ca,
5862          },
5863         {
5864          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5865          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5866          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5867          0x01c9,
5868          0x01c9,
5869          },
5870         {
5871          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5872          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5873          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5874          0x01c8,
5875          0x01c9,
5876          },
5877         {
5878          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5879          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5880          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5881          0x01c8,
5882          0x01c9,
5883          },
5884         {
5885          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5886          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5887          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5888          0x01c8,
5889          0x01c8,
5890          },
5891         {
5892          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5893          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5894          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5895          0x01c7,
5896          0x01c8,
5897          },
5898         {
5899          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5900          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5901          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5902          0x01c7,
5903          0x01c8,
5904          },
5905         {
5906          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5907          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5908          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5909          0x01c6,
5910          0x01c7,
5911          },
5912         {
5913          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5914          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5915          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5916          0x01c6,
5917          0x01c7,
5918          },
5919         {
5920          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5921          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5922          0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5923          0x01c6,
5924          0x01c6,
5925          },
5926         {
5927          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5928          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5929          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5930          0x01c5,
5931          0x01c6,
5932          },
5933         {
5934          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5935          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5936          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5937          0x01c5,
5938          0x01c6,
5939          },
5940         {
5941          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5942          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5943          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5944          0x01c4,
5945          0x01c5,
5946          },
5947         {
5948          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5949          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5950          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5951          0x01c4,
5952          0x01c5,
5953          },
5954         {
5955          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5956          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5957          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5958          0x01c4,
5959          0x01c4,
5960          },
5961         {
5962          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5963          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5964          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5965          0x01c3,
5966          0x01c4,
5967          },
5968         {
5969          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5970          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5971          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
5972          0x01c3,
5973          0x01c4,
5974          },
5975         {
5976          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
5977          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5978          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
5979          0x01c2,
5980          0x01c3,
5981          },
5982         {
5983          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
5984          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5985          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
5986          0x01c2,
5987          0x01c3,
5988          },
5989         {
5990          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
5991          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5992          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
5993          0x01c2,
5994          0x01c2,
5995          },
5996         {
5997          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
5998          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5999          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6000          0x01c1,
6001          0x01c2,
6002          },
6003         {
6004          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6005          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6006          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6007          0x01c0,
6008          0x01c1,
6009          },
6010         {
6011          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6012          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6013          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6014          0x01bf,
6015          0x01c0,
6016          },
6017         {
6018          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6019          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6020          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6021          0x01bf,
6022          0x01bf,
6023          },
6024         {
6025          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6026          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6027          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6028          0x01be,
6029          0x01bf,
6030          },
6031         {
6032          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6033          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6034          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6035          0x01bd,
6036          0x01be,
6037          },
6038         {
6039          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6040          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6041          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6042          0x01bc,
6043          0x01bd,
6044          },
6045         {
6046          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6047          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6048          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6049          0x043f,
6050          0x0443,
6051          },
6052         {
6053          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6054          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6055          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6056          0x043d,
6057          0x0441,
6058          },
6059         {
6060          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6061          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6062          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6063          0x043a,
6064          0x043f,
6065          },
6066         {
6067          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6068          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6069          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6070          0x0438,
6071          0x043d,
6072          },
6073         {
6074          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6075          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6076          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6077          0x0436,
6078          0x043a,
6079          },
6080         {
6081          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6082          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6083          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6084          0x0434,
6085          0x0438,
6086          },
6087         {
6088          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6089          0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6090          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6091          0x0431,
6092          0x0436,
6093          },
6094         {
6095          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6096          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6097          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6098          0x042f,
6099          0x0434,
6100          },
6101         {
6102          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6103          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6104          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6105          0x042d,
6106          0x0431,
6107          },
6108         {
6109          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6110          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6111          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6112          0x042b,
6113          0x042f,
6114          },
6115         {
6116          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6117          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6118          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6119          0x0429,
6120          0x042d,
6121          },
6122         {
6123          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6124          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6125          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6126          0x0427,
6127          0x042b,
6128          },
6129         {
6130          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6131          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6132          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6133          0x0424,
6134          0x0429,
6135          },
6136         {
6137          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6138          0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6139          0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6140          0x041f,
6141          0x0424}
6142 };
6143
6144 static chan_info_nphy_radio2057_rev5_t chan_info_nphyrev8_2057_rev5[] = {
6145         {
6146          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6147          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6148          0x043a, 0x043f, 0x0443},
6149         {
6150          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6151          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6152          0x0438, 0x043d, 0x0441},
6153         {
6154          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6155          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6156          0x0436, 0x043a, 0x043f},
6157         {
6158          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6159          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6160          0x0434, 0x0438, 0x043d},
6161         {
6162          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6163          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6164          0x0431, 0x0436, 0x043a},
6165         {
6166          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6167          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6168          0x042f, 0x0434, 0x0438},
6169         {
6170          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6171          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6172          0x042d, 0x0431, 0x0436},
6173         {
6174          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6175          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6176          0x042b, 0x042f, 0x0434},
6177         {
6178          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6179          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6180          0x0429, 0x042d, 0x0431},
6181         {
6182          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6183          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6184          0x0427, 0x042b, 0x042f},
6185         {
6186          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6187          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6188          0x0424, 0x0429, 0x042d},
6189         {
6190          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6191          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6192          0x0422, 0x0427, 0x042b},
6193         {
6194          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6195          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6196          0x0420, 0x0424, 0x0429},
6197         {
6198          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6199          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6200          0x041b, 0x041f, 0x0424}
6201 };
6202
6203 static chan_info_nphy_radio2057_rev5_t chan_info_nphyrev9_2057_rev5v1[] = {
6204         {
6205          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6206          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6207          0x043a, 0x043f, 0x0443},
6208         {
6209          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6210          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6211          0x0438, 0x043d, 0x0441},
6212         {
6213          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6214          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6215          0x0436, 0x043a, 0x043f},
6216         {
6217          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6218          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6219          0x0434, 0x0438, 0x043d},
6220         {
6221          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6222          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6223          0x0431, 0x0436, 0x043a},
6224         {
6225          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6226          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6227          0x042f, 0x0434, 0x0438},
6228         {
6229          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6230          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6231          0x042d, 0x0431, 0x0436},
6232         {
6233          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6234          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6235          0x042b, 0x042f, 0x0434},
6236         {
6237          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6238          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6239          0x0429, 0x042d, 0x0431},
6240         {
6241          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6242          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6243          0x0427, 0x042b, 0x042f},
6244         {
6245          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6246          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6247          0x0424, 0x0429, 0x042d},
6248         {
6249          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6250          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6251          0x0422, 0x0427, 0x042b},
6252         {
6253          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6254          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6255          0x0420, 0x0424, 0x0429},
6256         {
6257          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6258          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6259          0x041b, 0x041f, 0x0424}
6260 };
6261
6262 static chan_info_nphy_radio2057_t chan_info_nphyrev8_2057_rev7[] = {
6263         {
6264          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6265          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6266          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6267          0x0215,
6268          0x0216},
6269         {
6270          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6271          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6272          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6273          0x0214,
6274          0x0215},
6275         {
6276          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6277          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6278          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6279          0x0213,
6280          0x0214},
6281         {
6282          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6283          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6284          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6285          0x0212,
6286          0x0213},
6287         {
6288          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6289          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6290          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6291          0x0211,
6292          0x0212},
6293         {
6294          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6295          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6296          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6297          0x020f,
6298          0x0211},
6299         {
6300          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6301          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6302          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6303          0x020e,
6304          0x020f},
6305         {
6306          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6307          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6308          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6309          0x020d,
6310          0x020e},
6311         {
6312          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6313          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6314          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6315          0x020c,
6316          0x020d},
6317         {
6318          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6319          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6320          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6321          0x020b,
6322          0x020c},
6323         {
6324          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6325          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6326          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6327          0x020a,
6328          0x020b},
6329         {
6330          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6331          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6332          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6333          0x0209,
6334          0x020a},
6335         {
6336          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6337          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6338          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6339          0x0208,
6340          0x0209},
6341         {
6342          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6343          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6344          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6345          0x0207,
6346          0x0208},
6347         {
6348          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6349          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6350          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6351          0x0206,
6352          0x0207},
6353         {
6354          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6355          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6356          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6357          0x0205,
6358          0x0206},
6359         {
6360          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6361          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6362          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6363          0x0204,
6364          0x0205},
6365         {
6366          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6367          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6368          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6369          0x0203,
6370          0x0204},
6371         {
6372          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6373          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6374          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6375          0x0202,
6376          0x0203},
6377         {
6378          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6379          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6380          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6381          0x0201,
6382          0x0202},
6383         {
6384          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6385          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6386          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6387          0x0200,
6388          0x0201},
6389         {
6390          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6391          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6392          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6393          0x01ff,
6394          0x0200},
6395         {
6396          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6397          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6398          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6399          0x01fe,
6400          0x01ff},
6401         {
6402          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6403          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6404          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6405          0x01fc,
6406          0x01fd},
6407         {
6408          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6409          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6410          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6411          0x01fb,
6412          0x01fc},
6413         {
6414          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6415          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6416          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6417          0x01fa,
6418          0x01fb},
6419         {
6420          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6421          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6422          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6423          0x01f9,
6424          0x01fa},
6425         {
6426          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6427          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6428          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6429          0x01f8,
6430          0x01f9},
6431         {
6432          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6433          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6434          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6435          0x01f7,
6436          0x01f8},
6437         {
6438          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6439          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6440          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6441          0x01f6,
6442          0x01f7},
6443         {
6444          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6445          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6446          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6447          0x01f5,
6448          0x01f6},
6449         {
6450          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6451          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6452          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6453          0x01f4,
6454          0x01f5},
6455         {
6456          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6457          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6458          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6459          0x01f3,
6460          0x01f4},
6461         {
6462          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6463          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6464          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6465          0x01f2,
6466          0x01f3},
6467         {
6468          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6469          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6470          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6471          0x01f1,
6472          0x01f2},
6473         {
6474          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6475          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6476          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6477          0x01f0,
6478          0x01f1},
6479         {
6480          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6481          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6482          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6483          0x01f0,
6484          0x01f0},
6485         {
6486          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6487          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6488          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6489          0x01ef,
6490          0x01f0},
6491         {
6492          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6493          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6494          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6495          0x01ee,
6496          0x01ef},
6497         {
6498          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6499          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6500          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6501          0x01ed,
6502          0x01ee},
6503         {
6504          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6505          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6506          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6507          0x01ec,
6508          0x01ed},
6509         {
6510          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6511          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6512          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6513          0x01eb,
6514          0x01ec},
6515         {
6516          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6517          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6518          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6519          0x01ea,
6520          0x01eb},
6521         {
6522          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6523          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6524          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6525          0x01e9,
6526          0x01ea},
6527         {
6528          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6529          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6530          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6531          0x01e8,
6532          0x01e9},
6533         {
6534          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6535          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6536          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6537          0x01e7,
6538          0x01e8},
6539         {
6540          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6541          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6542          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6543          0x01e6,
6544          0x01e7},
6545         {
6546          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6547          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6548          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6549          0x01e5,
6550          0x01e6},
6551         {
6552          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6553          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6554          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6555          0x01e5,
6556          0x01e5},
6557         {
6558          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6559          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6560          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6561          0x01e4,
6562          0x01e5},
6563         {
6564          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6565          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6566          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6567          0x01e3,
6568          0x01e4},
6569         {
6570          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6571          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6572          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6573          0x01e2,
6574          0x01e3},
6575         {
6576          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6577          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6578          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6579          0x01e1,
6580          0x01e2},
6581         {
6582          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6583          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6584          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6585          0x01e0,
6586          0x01e1},
6587         {
6588          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6589          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6590          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6591          0x01df,
6592          0x01e0},
6593         {
6594          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6595          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6596          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6597          0x01de,
6598          0x01df},
6599         {
6600          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6601          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6602          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6603          0x01dd,
6604          0x01de},
6605         {
6606          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6607          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6608          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6609          0x01dd,
6610          0x01dd},
6611         {
6612          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6613          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6614          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6615          0x01dc,
6616          0x01dd},
6617         {
6618          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6619          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6620          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6621          0x01db,
6622          0x01dc},
6623         {
6624          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6625          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6626          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6627          0x01da,
6628          0x01db},
6629         {
6630          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6631          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6632          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6633          0x01d9,
6634          0x01da},
6635         {
6636          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6637          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6638          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6639          0x01d8,
6640          0x01d9},
6641         {
6642          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6643          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6644          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6645          0x01d7,
6646          0x01d8},
6647         {
6648          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6649          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6650          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6651          0x01d7,
6652          0x01d7},
6653         {
6654          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6655          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6656          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6657          0x01d6,
6658          0x01d7},
6659         {
6660          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6661          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6662          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6663          0x01d5,
6664          0x01d6},
6665         {
6666          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6667          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6668          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6669          0x01d4,
6670          0x01d5},
6671         {
6672          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6673          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6674          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6675          0x01d3,
6676          0x01d4},
6677         {
6678          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6679          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6680          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6681          0x01d2,
6682          0x01d3},
6683         {
6684          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6685          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6686          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6687          0x01d2,
6688          0x01d2},
6689         {
6690          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6691          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6692          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6693          0x01d1,
6694          0x01d2},
6695         {
6696          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6697          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6698          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6699          0x01d0,
6700          0x01d1},
6701         {
6702          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6703          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6704          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6705          0x01cf,
6706          0x01d0},
6707         {
6708          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6709          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6710          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6711          0x01ce,
6712          0x01cf},
6713         {
6714          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6715          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6716          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6717          0x01ce,
6718          0x01ce},
6719         {
6720          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6721          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6722          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6723          0x01cd,
6724          0x01ce},
6725         {
6726          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6727          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6728          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6729          0x01cc,
6730          0x01cd},
6731         {
6732          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6733          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6734          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6735          0x01cb,
6736          0x01cc},
6737         {
6738          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6739          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6740          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6741          0x01ca,
6742          0x01cb},
6743         {
6744          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6745          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6746          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6747          0x01ca,
6748          0x01cb},
6749         {
6750          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6751          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6752          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6753          0x01c9,
6754          0x01ca},
6755         {
6756          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6757          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6758          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6759          0x01c9,
6760          0x01ca},
6761         {
6762          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6763          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6764          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6765          0x01c9,
6766          0x01c9},
6767         {
6768          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6769          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6770          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6771          0x01c8,
6772          0x01c9},
6773         {
6774          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6775          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6776          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6777          0x01c8,
6778          0x01c9},
6779         {
6780          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6781          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6782          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6783          0x01c8,
6784          0x01c8},
6785         {
6786          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6787          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6788          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6789          0x01c7,
6790          0x01c8},
6791         {
6792          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6793          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6794          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6795          0x01c7,
6796          0x01c8},
6797         {
6798          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6799          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6800          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6801          0x01c6,
6802          0x01c7},
6803         {
6804          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6805          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6806          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6807          0x01c6,
6808          0x01c7},
6809         {
6810          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6811          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6812          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6813          0x01c6,
6814          0x01c6},
6815         {
6816          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6817          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6818          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6819          0x01c5,
6820          0x01c6},
6821         {
6822          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6823          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6824          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6825          0x01c5,
6826          0x01c6},
6827         {
6828          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6829          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6830          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6831          0x01c4,
6832          0x01c5},
6833         {
6834          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6835          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6836          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6837          0x01c4,
6838          0x01c5},
6839         {
6840          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6841          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6842          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6843          0x01c4,
6844          0x01c4},
6845         {
6846          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6847          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6848          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6849          0x01c3,
6850          0x01c4},
6851         {
6852          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6853          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6854          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6855          0x01c3,
6856          0x01c4},
6857         {
6858          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6859          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6860          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6861          0x01c2,
6862          0x01c3},
6863         {
6864          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6865          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6866          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6867          0x01c2,
6868          0x01c3},
6869         {
6870          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6871          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6872          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6873          0x01c2,
6874          0x01c2},
6875         {
6876          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6877          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6878          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6879          0x01c1,
6880          0x01c2},
6881         {
6882          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6883          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6884          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6885          0x01c0,
6886          0x01c1},
6887         {
6888          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6889          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6890          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6891          0x01bf,
6892          0x01c0},
6893         {
6894          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6895          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6896          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6897          0x01bf,
6898          0x01bf},
6899         {
6900          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6901          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6902          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6903          0x01be,
6904          0x01bf},
6905         {
6906          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6907          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6908          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6909          0x01bd,
6910          0x01be},
6911         {
6912          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6913          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6914          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6915          0x01bc,
6916          0x01bd},
6917         {
6918          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6919          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6920          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6921          0x043f,
6922          0x0443},
6923         {
6924          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6925          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6926          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6927          0x043d,
6928          0x0441},
6929         {
6930          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6931          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6932          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6933          0x043a,
6934          0x043f},
6935         {
6936          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6937          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6938          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6939          0x0438,
6940          0x043d},
6941         {
6942          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6943          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6944          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6945          0x0436,
6946          0x043a},
6947         {
6948          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6949          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6950          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6951          0x0434,
6952          0x0438},
6953         {
6954          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6955          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6956          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6957          0x0431,
6958          0x0436},
6959         {
6960          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6961          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6962          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6963          0x042f,
6964          0x0434},
6965         {
6966          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6967          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6968          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6969          0x042d,
6970          0x0431},
6971         {
6972          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6973          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6974          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6975          0x042b,
6976          0x042f},
6977         {
6978          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6979          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6980          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6981          0x0429,
6982          0x042d},
6983         {
6984          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6985          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6986          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6987          0x0427,
6988          0x042b},
6989         {
6990          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6991          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6992          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6993          0x0424,
6994          0x0429},
6995         {
6996          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6997          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
6998          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6999          0x041f,
7000          0x0424}
7001 };
7002
7003 static chan_info_nphy_radio2057_t chan_info_nphyrev8_2057_rev8[] = {
7004         {
7005          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7006          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7007          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7008          0x0214,
7009          0x0215},
7010         {
7011          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7012          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7013          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7014          0x0213,
7015          0x0214},
7016         {
7017          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7018          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7019          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7020          0x0212,
7021          0x0213},
7022         {
7023          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7024          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7025          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7026          0x0211,
7027          0x0212},
7028         {
7029          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7030          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7031          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7032          0x020f,
7033          0x0211},
7034         {
7035          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7036          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7037          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7038          0x020e,
7039          0x020f},
7040         {
7041          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7042          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7043          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7044          0x020d,
7045          0x020e},
7046         {
7047          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7048          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7049          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7050          0x020c,
7051          0x020d},
7052         {
7053          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7054          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7055          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7056          0x020b,
7057          0x020c},
7058         {
7059          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7060          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7061          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7062          0x020a,
7063          0x020b},
7064         {
7065          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7066          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7067          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7068          0x0209,
7069          0x020a},
7070         {
7071          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7072          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7073          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7074          0x0208,
7075          0x0209},
7076         {
7077          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7078          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7079          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7080          0x0207,
7081          0x0208},
7082         {
7083          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7084          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7085          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7086          0x0206,
7087          0x0207},
7088         {
7089          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7090          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7091          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7092          0x0205,
7093          0x0206},
7094         {
7095          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7096          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7097          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7098          0x0204,
7099          0x0205},
7100         {
7101          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7102          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7103          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7104          0x0203,
7105          0x0204},
7106         {
7107          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7108          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7109          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7110          0x0202,
7111          0x0203},
7112         {
7113          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7114          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7115          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7116          0x0201,
7117          0x0202},
7118         {
7119          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7120          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7121          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7122          0x0200,
7123          0x0201},
7124         {
7125          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7126          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7127          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7128          0x01ff,
7129          0x0200},
7130         {
7131          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7132          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7133          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7134          0x01fe,
7135          0x01ff},
7136         {
7137          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7138          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7139          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7140          0x01fc,
7141          0x01fd},
7142         {
7143          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7144          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7145          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7146          0x01fb,
7147          0x01fc},
7148         {
7149          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7150          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7151          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7152          0x01fa,
7153          0x01fb},
7154         {
7155          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7156          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7157          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7158          0x01f9,
7159          0x01fa},
7160         {
7161          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7162          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7163          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7164          0x01f8,
7165          0x01f9},
7166         {
7167          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7168          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7169          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7170          0x01f7,
7171          0x01f8},
7172         {
7173          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7174          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7175          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7176          0x01f6,
7177          0x01f7},
7178         {
7179          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7180          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7181          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7182          0x01f5,
7183          0x01f6},
7184         {
7185          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7186          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7187          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7188          0x01f4,
7189          0x01f5},
7190         {
7191          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7192          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7193          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7194          0x01f3,
7195          0x01f4},
7196         {
7197          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7198          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7199          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7200          0x01f2,
7201          0x01f3},
7202         {
7203          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7204          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7205          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7206          0x01f1,
7207          0x01f2},
7208         {
7209          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7210          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7211          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7212          0x01f0,
7213          0x01f1},
7214         {
7215          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7216          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7217          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7218          0x01f0,
7219          0x01f0},
7220         {
7221          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7222          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7223          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7224          0x01ef,
7225          0x01f0},
7226         {
7227          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7228          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7229          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7230          0x01ee,
7231          0x01ef},
7232         {
7233          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7234          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7235          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7236          0x01ed,
7237          0x01ee},
7238         {
7239          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7240          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7241          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7242          0x01ec,
7243          0x01ed},
7244         {
7245          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7246          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7247          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7248          0x01eb,
7249          0x01ec},
7250         {
7251          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7252          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7253          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7254          0x01ea,
7255          0x01eb},
7256         {
7257          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7258          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7259          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7260          0x01e9,
7261          0x01ea},
7262         {
7263          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7264          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7265          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7266          0x01e8,
7267          0x01e9},
7268         {
7269          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7270          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7271          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7272          0x01e7,
7273          0x01e8},
7274         {
7275          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7276          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7277          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7278          0x01e6,
7279          0x01e7},
7280         {
7281          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7282          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7283          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7284          0x01e5,
7285          0x01e6},
7286         {
7287          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7288          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7289          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7290          0x01e5,
7291          0x01e5},
7292         {
7293          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7294          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7295          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7296          0x01e4,
7297          0x01e5},
7298         {
7299          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7300          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7301          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7302          0x01e3,
7303          0x01e4},
7304         {
7305          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7306          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7307          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7308          0x01e2,
7309          0x01e3},
7310         {
7311          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7312          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7313          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7314          0x01e1,
7315          0x01e2},
7316         {
7317          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7318          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7319          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7320          0x01e0,
7321          0x01e1},
7322         {
7323          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7324          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7325          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7326          0x01df,
7327          0x01e0},
7328         {
7329          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7330          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7331          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7332          0x01de,
7333          0x01df},
7334         {
7335          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7336          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7337          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7338          0x01dd,
7339          0x01de},
7340         {
7341          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7342          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7343          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7344          0x01dd,
7345          0x01dd},
7346         {
7347          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7348          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7349          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7350          0x01dc,
7351          0x01dd},
7352         {
7353          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7354          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7355          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7356          0x01db,
7357          0x01dc},
7358         {
7359          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7360          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7361          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7362          0x01da,
7363          0x01db},
7364         {
7365          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7366          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7367          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7368          0x01d9,
7369          0x01da},
7370         {
7371          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7372          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7373          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7374          0x01d8,
7375          0x01d9},
7376         {
7377          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7378          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7379          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7380          0x01d7,
7381          0x01d8},
7382         {
7383          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7384          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7385          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7386          0x01d7,
7387          0x01d7},
7388         {
7389          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7390          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7391          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7392          0x01d6,
7393          0x01d7},
7394         {
7395          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7396          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7397          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7398          0x01d5,
7399          0x01d6},
7400         {
7401          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7402          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7403          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7404          0x01d4,
7405          0x01d5},
7406         {
7407          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7408          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7409          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7410          0x01d3,
7411          0x01d4},
7412         {
7413          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7414          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7415          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7416          0x01d2,
7417          0x01d3},
7418         {
7419          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7420          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7421          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7422          0x01d2,
7423          0x01d2},
7424         {
7425          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7426          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7427          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7428          0x01d1,
7429          0x01d2},
7430         {
7431          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7432          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7433          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7434          0x01d0,
7435          0x01d1},
7436         {
7437          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7438          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7439          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7440          0x01cf,
7441          0x01d0},
7442         {
7443          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7444          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7445          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7446          0x01ce,
7447          0x01cf},
7448         {
7449          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7450          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7451          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7452          0x01ce,
7453          0x01ce},
7454         {
7455          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7456          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7457          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7458          0x01cd,
7459          0x01ce},
7460         {
7461          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7462          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7463          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7464          0x01cc,
7465          0x01cd},
7466         {
7467          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7468          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7469          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7470          0x01cb,
7471          0x01cc},
7472         {
7473          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7474          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7475          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7476          0x01ca,
7477          0x01cb},
7478         {
7479          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7480          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7481          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7482          0x01ca,
7483          0x01cb},
7484         {
7485          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7486          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7487          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7488          0x01c9,
7489          0x01ca},
7490         {
7491          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7492          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7493          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7494          0x01c9,
7495          0x01ca},
7496         {
7497          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7498          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7499          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7500          0x01c9,
7501          0x01c9},
7502         {
7503          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7504          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7505          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7506          0x01c8,
7507          0x01c9},
7508         {
7509          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7510          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7511          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7512          0x01c8,
7513          0x01c9},
7514         {
7515          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7516          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7517          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7518          0x01c8,
7519          0x01c8},
7520         {
7521          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7522          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7523          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7524          0x01c7,
7525          0x01c8},
7526         {
7527          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7528          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7529          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7530          0x01c7,
7531          0x01c8},
7532         {
7533          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7534          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7535          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7536          0x01c6,
7537          0x01c7},
7538         {
7539          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7540          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7541          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7542          0x01c6,
7543          0x01c7},
7544         {
7545          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7546          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7547          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7548          0x01c6,
7549          0x01c6},
7550         {
7551          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7552          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7553          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7554          0x01c5,
7555          0x01c6},
7556         {
7557          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7558          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7559          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7560          0x01c5,
7561          0x01c6},
7562         {
7563          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7564          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7565          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7566          0x01c4,
7567          0x01c5},
7568         {
7569          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7570          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7571          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7572          0x01c4,
7573          0x01c5},
7574         {
7575          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7576          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7577          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7578          0x01c4,
7579          0x01c4},
7580         {
7581          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7582          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7583          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7584          0x01c3,
7585          0x01c4},
7586         {
7587          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7588          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7589          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7590          0x01c3,
7591          0x01c4},
7592         {
7593          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7594          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7595          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7596          0x01c2,
7597          0x01c3},
7598         {
7599          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7600          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7601          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7602          0x01c2,
7603          0x01c3},
7604         {
7605          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7606          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7607          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7608          0x01c2,
7609          0x01c2},
7610         {
7611          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7612          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7613          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7614          0x01c1,
7615          0x01c2},
7616         {
7617          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7618          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7619          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7620          0x01c0,
7621          0x01c1},
7622         {
7623          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7624          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7625          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7626          0x01bf,
7627          0x01c0},
7628         {
7629          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7630          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7631          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7632          0x01bf,
7633          0x01bf},
7634         {
7635          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7636          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7637          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7638          0x01be,
7639          0x01bf},
7640         {
7641          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7642          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7643          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7644          0x01bd,
7645          0x01be},
7646         {
7647          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7648          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7649          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7650          0x01bc,
7651          0x01bd},
7652         {
7653          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7654          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7655          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7656          0x043f,
7657          0x0443},
7658         {
7659          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7660          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7661          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7662          0x043d,
7663          0x0441},
7664         {
7665          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7666          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7667          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7668          0x043a,
7669          0x043f},
7670         {
7671          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7672          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7673          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7674          0x0438,
7675          0x043d},
7676         {
7677          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7678          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7679          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7680          0x0436,
7681          0x043a},
7682         {
7683          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7684          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7685          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7686          0x0434,
7687          0x0438},
7688         {
7689          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7690          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7691          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7692          0x0431,
7693          0x0436},
7694         {
7695          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7696          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7697          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7698          0x042f,
7699          0x0434},
7700         {
7701          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7702          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7703          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7704          0x042d,
7705          0x0431},
7706         {
7707          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7708          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7709          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7710          0x042b,
7711          0x042f},
7712         {
7713          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7714          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7715          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7716          0x0429,
7717          0x042d},
7718         {
7719          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7720          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7721          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7722          0x0427,
7723          0x042b},
7724         {
7725          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7726          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7727          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7728          0x0424,
7729          0x0429},
7730         {
7731          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7732          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7733          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7734          0x041f,
7735          0x0424}
7736 };
7737
7738 radio_regs_t regs_2055[] = {
7739         {0x02, 0x80, 0x80, 0, 0},
7740         {0x03, 0, 0, 0, 0},
7741         {0x04, 0x27, 0x27, 0, 0},
7742         {0x05, 0, 0, 0, 0},
7743         {0x06, 0x27, 0x27, 0, 0},
7744         {0x07, 0x7f, 0x7f, 1, 1},
7745         {0x08, 0x7, 0x7, 1, 1},
7746         {0x09, 0x7f, 0x7f, 1, 1},
7747         {0x0A, 0x7, 0x7, 1, 1},
7748         {0x0B, 0x15, 0x15, 0, 0},
7749         {0x0C, 0x15, 0x15, 0, 0},
7750         {0x0D, 0x4f, 0x4f, 1, 1},
7751         {0x0E, 0x5, 0x5, 1, 1},
7752         {0x0F, 0x4f, 0x4f, 1, 1},
7753         {0x10, 0x5, 0x5, 1, 1},
7754         {0x11, 0xd0, 0xd0, 0, 0},
7755         {0x12, 0x2, 0x2, 0, 0},
7756         {0x13, 0, 0, 0, 0},
7757         {0x14, 0x40, 0x40, 0, 0},
7758         {0x15, 0, 0, 0, 0},
7759         {0x16, 0, 0, 0, 0},
7760         {0x17, 0, 0, 0, 0},
7761         {0x18, 0, 0, 0, 0},
7762         {0x19, 0, 0, 0, 0},
7763         {0x1A, 0, 0, 0, 0},
7764         {0x1B, 0, 0, 0, 0},
7765         {0x1C, 0, 0, 0, 0},
7766         {0x1D, 0xc0, 0xc0, 0, 0},
7767         {0x1E, 0xff, 0xff, 0, 0},
7768         {0x1F, 0xc0, 0xc0, 0, 0},
7769         {0x20, 0xff, 0xff, 0, 0},
7770         {0x21, 0xc0, 0xc0, 0, 0},
7771         {0x22, 0, 0, 0, 0},
7772         {0x23, 0x2c, 0x2c, 0, 0},
7773         {0x24, 0, 0, 0, 0},
7774         {0x25, 0, 0, 0, 0},
7775         {0x26, 0, 0, 0, 0},
7776         {0x27, 0, 0, 0, 0},
7777         {0x28, 0, 0, 0, 0},
7778         {0x29, 0, 0, 0, 0},
7779         {0x2A, 0, 0, 0, 0},
7780         {0x2B, 0, 0, 0, 0},
7781         {0x2C, 0, 0, 0, 0},
7782         {0x2D, 0xa4, 0xa4, 0, 0},
7783         {0x2E, 0x38, 0x38, 0, 0},
7784         {0x2F, 0, 0, 0, 0},
7785         {0x30, 0x4, 0x4, 1, 1},
7786         {0x31, 0, 0, 0, 0},
7787         {0x32, 0xa, 0xa, 0, 0},
7788         {0x33, 0x87, 0x87, 0, 0},
7789         {0x34, 0x9, 0x9, 0, 0},
7790         {0x35, 0x70, 0x70, 0, 0},
7791         {0x36, 0x11, 0x11, 0, 0},
7792         {0x37, 0x18, 0x18, 1, 1},
7793         {0x38, 0x6, 0x6, 0, 0},
7794         {0x39, 0x4, 0x4, 1, 1},
7795         {0x3A, 0x6, 0x6, 0, 0},
7796         {0x3B, 0x9e, 0x9e, 0, 0},
7797         {0x3C, 0x9, 0x9, 0, 0},
7798         {0x3D, 0xc8, 0xc8, 1, 1},
7799         {0x3E, 0x88, 0x88, 0, 0},
7800         {0x3F, 0, 0, 0, 0},
7801         {0x40, 0, 0, 0, 0},
7802         {0x41, 0, 0, 0, 0},
7803         {0x42, 0x1, 0x1, 0, 0},
7804         {0x43, 0x2, 0x2, 0, 0},
7805         {0x44, 0x96, 0x96, 0, 0},
7806         {0x45, 0x3e, 0x3e, 0, 0},
7807         {0x46, 0x3e, 0x3e, 0, 0},
7808         {0x47, 0x13, 0x13, 0, 0},
7809         {0x48, 0x2, 0x2, 0, 0},
7810         {0x49, 0x15, 0x15, 0, 0},
7811         {0x4A, 0x7, 0x7, 0, 0},
7812         {0x4B, 0, 0, 0, 0},
7813         {0x4C, 0, 0, 0, 0},
7814         {0x4D, 0, 0, 0, 0},
7815         {0x4E, 0, 0, 0, 0},
7816         {0x4F, 0, 0, 0, 0},
7817         {0x50, 0x8, 0x8, 0, 0},
7818         {0x51, 0x8, 0x8, 0, 0},
7819         {0x52, 0x6, 0x6, 0, 0},
7820         {0x53, 0x84, 0x84, 1, 1},
7821         {0x54, 0xc3, 0xc3, 0, 0},
7822         {0x55, 0x8f, 0x8f, 0, 0},
7823         {0x56, 0xff, 0xff, 0, 0},
7824         {0x57, 0xff, 0xff, 0, 0},
7825         {0x58, 0x88, 0x88, 0, 0},
7826         {0x59, 0x88, 0x88, 0, 0},
7827         {0x5A, 0, 0, 0, 0},
7828         {0x5B, 0xcc, 0xcc, 0, 0},
7829         {0x5C, 0x6, 0x6, 0, 0},
7830         {0x5D, 0x80, 0x80, 0, 0},
7831         {0x5E, 0x80, 0x80, 0, 0},
7832         {0x5F, 0xf8, 0xf8, 0, 0},
7833         {0x60, 0x88, 0x88, 0, 0},
7834         {0x61, 0x88, 0x88, 0, 0},
7835         {0x62, 0x88, 0x8, 1, 1},
7836         {0x63, 0x88, 0x88, 0, 0},
7837         {0x64, 0, 0, 0, 0},
7838         {0x65, 0x1, 0x1, 1, 1},
7839         {0x66, 0x8a, 0x8a, 0, 0},
7840         {0x67, 0x8, 0x8, 0, 0},
7841         {0x68, 0x83, 0x83, 0, 0},
7842         {0x69, 0x6, 0x6, 0, 0},
7843         {0x6A, 0xa0, 0xa0, 0, 0},
7844         {0x6B, 0xa, 0xa, 0, 0},
7845         {0x6C, 0x87, 0x87, 1, 1},
7846         {0x6D, 0x2a, 0x2a, 0, 0},
7847         {0x6E, 0x2a, 0x2a, 0, 0},
7848         {0x6F, 0x2a, 0x2a, 0, 0},
7849         {0x70, 0x2a, 0x2a, 0, 0},
7850         {0x71, 0x18, 0x18, 0, 0},
7851         {0x72, 0x6a, 0x6a, 1, 1},
7852         {0x73, 0xab, 0xab, 1, 1},
7853         {0x74, 0x13, 0x13, 1, 1},
7854         {0x75, 0xc1, 0xc1, 1, 1},
7855         {0x76, 0xaa, 0xaa, 1, 1},
7856         {0x77, 0x87, 0x87, 1, 1},
7857         {0x78, 0, 0, 0, 0},
7858         {0x79, 0x6, 0x6, 0, 0},
7859         {0x7A, 0x7, 0x7, 0, 0},
7860         {0x7B, 0x7, 0x7, 0, 0},
7861         {0x7C, 0x15, 0x15, 0, 0},
7862         {0x7D, 0x55, 0x55, 0, 0},
7863         {0x7E, 0x97, 0x97, 1, 1},
7864         {0x7F, 0x8, 0x8, 0, 0},
7865         {0x80, 0x14, 0x14, 1, 1},
7866         {0x81, 0x33, 0x33, 0, 0},
7867         {0x82, 0x88, 0x88, 0, 0},
7868         {0x83, 0x6, 0x6, 0, 0},
7869         {0x84, 0x3, 0x3, 1, 1},
7870         {0x85, 0xa, 0xa, 0, 0},
7871         {0x86, 0x3, 0x3, 1, 1},
7872         {0x87, 0x2a, 0x2a, 0, 0},
7873         {0x88, 0xa4, 0xa4, 0, 0},
7874         {0x89, 0x18, 0x18, 0, 0},
7875         {0x8A, 0x28, 0x28, 0, 0},
7876         {0x8B, 0, 0, 0, 0},
7877         {0x8C, 0x4a, 0x4a, 0, 0},
7878         {0x8D, 0, 0, 0, 0},
7879         {0x8E, 0xf8, 0xf8, 0, 0},
7880         {0x8F, 0x88, 0x88, 0, 0},
7881         {0x90, 0x88, 0x88, 0, 0},
7882         {0x91, 0x88, 0x8, 1, 1},
7883         {0x92, 0x88, 0x88, 0, 0},
7884         {0x93, 0, 0, 0, 0},
7885         {0x94, 0x1, 0x1, 1, 1},
7886         {0x95, 0x8a, 0x8a, 0, 0},
7887         {0x96, 0x8, 0x8, 0, 0},
7888         {0x97, 0x83, 0x83, 0, 0},
7889         {0x98, 0x6, 0x6, 0, 0},
7890         {0x99, 0xa0, 0xa0, 0, 0},
7891         {0x9A, 0xa, 0xa, 0, 0},
7892         {0x9B, 0x87, 0x87, 1, 1},
7893         {0x9C, 0x2a, 0x2a, 0, 0},
7894         {0x9D, 0x2a, 0x2a, 0, 0},
7895         {0x9E, 0x2a, 0x2a, 0, 0},
7896         {0x9F, 0x2a, 0x2a, 0, 0},
7897         {0xA0, 0x18, 0x18, 0, 0},
7898         {0xA1, 0x6a, 0x6a, 1, 1},
7899         {0xA2, 0xab, 0xab, 1, 1},
7900         {0xA3, 0x13, 0x13, 1, 1},
7901         {0xA4, 0xc1, 0xc1, 1, 1},
7902         {0xA5, 0xaa, 0xaa, 1, 1},
7903         {0xA6, 0x87, 0x87, 1, 1},
7904         {0xA7, 0, 0, 0, 0},
7905         {0xA8, 0x6, 0x6, 0, 0},
7906         {0xA9, 0x7, 0x7, 0, 0},
7907         {0xAA, 0x7, 0x7, 0, 0},
7908         {0xAB, 0x15, 0x15, 0, 0},
7909         {0xAC, 0x55, 0x55, 0, 0},
7910         {0xAD, 0x97, 0x97, 1, 1},
7911         {0xAE, 0x8, 0x8, 0, 0},
7912         {0xAF, 0x14, 0x14, 1, 1},
7913         {0xB0, 0x33, 0x33, 0, 0},
7914         {0xB1, 0x88, 0x88, 0, 0},
7915         {0xB2, 0x6, 0x6, 0, 0},
7916         {0xB3, 0x3, 0x3, 1, 1},
7917         {0xB4, 0xa, 0xa, 0, 0},
7918         {0xB5, 0x3, 0x3, 1, 1},
7919         {0xB6, 0x2a, 0x2a, 0, 0},
7920         {0xB7, 0xa4, 0xa4, 0, 0},
7921         {0xB8, 0x18, 0x18, 0, 0},
7922         {0xB9, 0x28, 0x28, 0, 0},
7923         {0xBA, 0, 0, 0, 0},
7924         {0xBB, 0x4a, 0x4a, 0, 0},
7925         {0xBC, 0, 0, 0, 0},
7926         {0xBD, 0x71, 0x71, 0, 0},
7927         {0xBE, 0x72, 0x72, 0, 0},
7928         {0xBF, 0x73, 0x73, 0, 0},
7929         {0xC0, 0x74, 0x74, 0, 0},
7930         {0xC1, 0x75, 0x75, 0, 0},
7931         {0xC2, 0x76, 0x76, 0, 0},
7932         {0xC3, 0x77, 0x77, 0, 0},
7933         {0xC4, 0x78, 0x78, 0, 0},
7934         {0xC5, 0x79, 0x79, 0, 0},
7935         {0xC6, 0x7a, 0x7a, 0, 0},
7936         {0xC7, 0, 0, 0, 0},
7937         {0xC8, 0, 0, 0, 0},
7938         {0xC9, 0, 0, 0, 0},
7939         {0xCA, 0, 0, 0, 0},
7940         {0xCB, 0, 0, 0, 0},
7941         {0xCC, 0, 0, 0, 0},
7942         {0xCD, 0, 0, 0, 0},
7943         {0xCE, 0x6, 0x6, 0, 0},
7944         {0xCF, 0, 0, 0, 0},
7945         {0xD0, 0, 0, 0, 0},
7946         {0xD1, 0x18, 0x18, 0, 0},
7947         {0xD2, 0x88, 0x88, 0, 0},
7948         {0xD3, 0, 0, 0, 0},
7949         {0xD4, 0, 0, 0, 0},
7950         {0xD5, 0, 0, 0, 0},
7951         {0xD6, 0, 0, 0, 0},
7952         {0xD7, 0, 0, 0, 0},
7953         {0xD8, 0, 0, 0, 0},
7954         {0xD9, 0, 0, 0, 0},
7955         {0xDA, 0x6, 0x6, 0, 0},
7956         {0xDB, 0, 0, 0, 0},
7957         {0xDC, 0, 0, 0, 0},
7958         {0xDD, 0x18, 0x18, 0, 0},
7959         {0xDE, 0x88, 0x88, 0, 0},
7960         {0xDF, 0, 0, 0, 0},
7961         {0xE0, 0, 0, 0, 0},
7962         {0xE1, 0, 0, 0, 0},
7963         {0xE2, 0, 0, 0, 0},
7964         {0xFFFF, 0, 0, 0, 0},
7965 };
7966
7967 radio_regs_t regs_SYN_2056[] = {
7968         {0x02, 0, 0, 0, 0},
7969         {0x03, 0, 0, 0, 0},
7970         {0x04, 0, 0, 0, 0},
7971         {0x05, 0, 0, 0, 0},
7972         {0x06, 0, 0, 0, 0},
7973         {0x07, 0, 0, 0, 0},
7974         {0x08, 0, 0, 0, 0},
7975         {0x09, 0x1, 0x1, 0, 0},
7976         {0x0A, 0, 0, 0, 0},
7977         {0x0B, 0, 0, 0, 0},
7978         {0x0C, 0, 0, 0, 0},
7979         {0x0D, 0, 0, 0, 0},
7980         {0x0E, 0, 0, 0, 0},
7981         {0x0F, 0, 0, 0, 0},
7982         {0x10, 0, 0, 0, 0},
7983         {0x11, 0, 0, 0, 0},
7984         {0x12, 0, 0, 0, 0},
7985         {0x13, 0, 0, 0, 0},
7986         {0x14, 0, 0, 0, 0},
7987         {0x15, 0, 0, 0, 0},
7988         {0x16, 0, 0, 0, 0},
7989         {0x17, 0, 0, 0, 0},
7990         {0x18, 0, 0, 0, 0},
7991         {0x19, 0, 0, 0, 0},
7992         {0x1A, 0, 0, 0, 0},
7993         {0x1B, 0, 0, 0, 0},
7994         {0x1C, 0, 0, 0, 0},
7995         {0x1D, 0, 0, 0, 0},
7996         {0x1E, 0, 0, 0, 0},
7997         {0x1F, 0, 0, 0, 0},
7998         {0x20, 0, 0, 0, 0},
7999         {0x21, 0, 0, 0, 0},
8000         {0x22, 0x60, 0x60, 0, 0},
8001         {0x23, 0x6, 0x6, 0, 0},
8002         {0x24, 0xc, 0xc, 0, 0},
8003         {0x25, 0, 0, 0, 0},
8004         {0x26, 0, 0, 0, 0},
8005         {0x27, 0, 0, 0, 0},
8006         {0x28, 0x1, 0x1, 0, 0},
8007         {0x29, 0, 0, 0, 0},
8008         {0x2A, 0, 0, 0, 0},
8009         {0x2B, 0, 0, 0, 0},
8010         {0x2C, 0, 0, 0, 0},
8011         {0x2D, 0, 0, 0, 0},
8012         {0x2E, 0xd, 0xd, 0, 0},
8013         {0x2F, 0x1f, 0x1f, 0, 0},
8014         {0x30, 0x15, 0x15, 0, 0},
8015         {0x31, 0xf, 0xf, 0, 0},
8016         {0x32, 0, 0, 0, 0},
8017         {0x33, 0, 0, 0, 0},
8018         {0x34, 0, 0, 0, 0},
8019         {0x35, 0, 0, 0, 0},
8020         {0x36, 0, 0, 0, 0},
8021         {0x37, 0, 0, 0, 0},
8022         {0x38, 0, 0, 0, 0},
8023         {0x39, 0, 0, 0, 0},
8024         {0x3A, 0, 0, 0, 0},
8025         {0x3B, 0, 0, 0, 0},
8026         {0x3C, 0x13, 0x13, 0, 0},
8027         {0x3D, 0xf, 0xf, 0, 0},
8028         {0x3E, 0x18, 0x18, 0, 0},
8029         {0x3F, 0, 0, 0, 0},
8030         {0x40, 0, 0, 0, 0},
8031         {0x41, 0x20, 0x20, 0, 0},
8032         {0x42, 0x20, 0x20, 0, 0},
8033         {0x43, 0, 0, 0, 0},
8034         {0x44, 0x77, 0x77, 0, 0},
8035         {0x45, 0x7, 0x7, 0, 0},
8036         {0x46, 0x1, 0x1, 0, 0},
8037         {0x47, 0x4, 0x4, 0, 0},
8038         {0x48, 0xf, 0xf, 0, 0},
8039         {0x49, 0x30, 0x30, 0, 0},
8040         {0x4A, 0x32, 0x32, 0, 0},
8041         {0x4B, 0xd, 0xd, 0, 0},
8042         {0x4C, 0xd, 0xd, 0, 0},
8043         {0x4D, 0x4, 0x4, 0, 0},
8044         {0x4E, 0x6, 0x6, 0, 0},
8045         {0x4F, 0x1, 0x1, 0, 0},
8046         {0x50, 0x1c, 0x1c, 0, 0},
8047         {0x51, 0x2, 0x2, 0, 0},
8048         {0x52, 0x2, 0x2, 0, 0},
8049         {0x53, 0xf7, 0xf7, 1, 1},
8050         {0x54, 0xb4, 0xb4, 0, 0},
8051         {0x55, 0xd2, 0xd2, 0, 0},
8052         {0x56, 0, 0, 0, 0},
8053         {0x57, 0, 0, 0, 0},
8054         {0x58, 0x4, 0x4, 0, 0},
8055         {0x59, 0x96, 0x96, 0, 0},
8056         {0x5A, 0x3e, 0x3e, 0, 0},
8057         {0x5B, 0x3e, 0x3e, 0, 0},
8058         {0x5C, 0x13, 0x13, 0, 0},
8059         {0x5D, 0x2, 0x2, 0, 0},
8060         {0x5E, 0, 0, 0, 0},
8061         {0x5F, 0x7, 0x7, 0, 0},
8062         {0x60, 0x7, 0x7, 1, 1},
8063         {0x61, 0x8, 0x8, 0, 0},
8064         {0x62, 0x3, 0x3, 0, 0},
8065         {0x63, 0, 0, 0, 0},
8066         {0x64, 0, 0, 0, 0},
8067         {0x65, 0, 0, 0, 0},
8068         {0x66, 0, 0, 0, 0},
8069         {0x67, 0, 0, 0, 0},
8070         {0x68, 0x40, 0x40, 0, 0},
8071         {0x69, 0, 0, 0, 0},
8072         {0x6A, 0, 0, 0, 0},
8073         {0x6B, 0, 0, 0, 0},
8074         {0x6C, 0, 0, 0, 0},
8075         {0x6D, 0x1, 0x1, 0, 0},
8076         {0x6E, 0, 0, 0, 0},
8077         {0x6F, 0, 0, 0, 0},
8078         {0x70, 0x60, 0x60, 0, 0},
8079         {0x71, 0x66, 0x66, 0, 0},
8080         {0x72, 0xc, 0xc, 0, 0},
8081         {0x73, 0x66, 0x66, 0, 0},
8082         {0x74, 0x8f, 0x8f, 1, 1},
8083         {0x75, 0, 0, 0, 0},
8084         {0x76, 0xcc, 0xcc, 0, 0},
8085         {0x77, 0x1, 0x1, 0, 0},
8086         {0x78, 0x66, 0x66, 0, 0},
8087         {0x79, 0x66, 0x66, 0, 0},
8088         {0x7A, 0, 0, 0, 0},
8089         {0x7B, 0, 0, 0, 0},
8090         {0x7C, 0, 0, 0, 0},
8091         {0x7D, 0, 0, 0, 0},
8092         {0x7E, 0, 0, 0, 0},
8093         {0x7F, 0, 0, 0, 0},
8094         {0x80, 0, 0, 0, 0},
8095         {0x81, 0, 0, 0, 0},
8096         {0x82, 0, 0, 0, 0},
8097         {0x83, 0, 0, 0, 0},
8098         {0x84, 0, 0, 0, 0},
8099         {0x85, 0xff, 0xff, 0, 0},
8100         {0x86, 0, 0, 0, 0},
8101         {0x87, 0, 0, 0, 0},
8102         {0x88, 0, 0, 0, 0},
8103         {0x89, 0, 0, 0, 0},
8104         {0x8A, 0, 0, 0, 0},
8105         {0x8B, 0, 0, 0, 0},
8106         {0x8C, 0, 0, 0, 0},
8107         {0x8D, 0, 0, 0, 0},
8108         {0x8E, 0, 0, 0, 0},
8109         {0x8F, 0, 0, 0, 0},
8110         {0x90, 0, 0, 0, 0},
8111         {0x91, 0, 0, 0, 0},
8112         {0x92, 0, 0, 0, 0},
8113         {0x93, 0, 0, 0, 0},
8114         {0x94, 0, 0, 0, 0},
8115         {0x95, 0, 0, 0, 0},
8116         {0x96, 0, 0, 0, 0},
8117         {0x97, 0, 0, 0, 0},
8118         {0x98, 0, 0, 0, 0},
8119         {0x99, 0, 0, 0, 0},
8120         {0x9A, 0, 0, 0, 0},
8121         {0x9B, 0, 0, 0, 0},
8122         {0x9C, 0, 0, 0, 0},
8123         {0x9D, 0, 0, 0, 0},
8124         {0x9E, 0, 0, 0, 0},
8125         {0x9F, 0x6, 0x6, 0, 0},
8126         {0xA0, 0x66, 0x66, 0, 0},
8127         {0xA1, 0x66, 0x66, 0, 0},
8128         {0xA2, 0x66, 0x66, 0, 0},
8129         {0xA3, 0x66, 0x66, 0, 0},
8130         {0xA4, 0x66, 0x66, 0, 0},
8131         {0xA5, 0x66, 0x66, 0, 0},
8132         {0xA6, 0x66, 0x66, 0, 0},
8133         {0xA7, 0x66, 0x66, 0, 0},
8134         {0xA8, 0x66, 0x66, 0, 0},
8135         {0xA9, 0x66, 0x66, 0, 0},
8136         {0xAA, 0x66, 0x66, 0, 0},
8137         {0xAB, 0x66, 0x66, 0, 0},
8138         {0xAC, 0x66, 0x66, 0, 0},
8139         {0xAD, 0x66, 0x66, 0, 0},
8140         {0xAE, 0x66, 0x66, 0, 0},
8141         {0xAF, 0x66, 0x66, 0, 0},
8142         {0xB0, 0x66, 0x66, 0, 0},
8143         {0xB1, 0x66, 0x66, 0, 0},
8144         {0xB2, 0x66, 0x66, 0, 0},
8145         {0xB3, 0xa, 0xa, 0, 0},
8146         {0xB4, 0, 0, 0, 0},
8147         {0xB5, 0, 0, 0, 0},
8148         {0xB6, 0, 0, 0, 0},
8149         {0xFFFF, 0, 0, 0, 0}
8150 };
8151
8152 radio_regs_t regs_TX_2056[] = {
8153         {0x02, 0, 0, 0, 0},
8154         {0x03, 0, 0, 0, 0},
8155         {0x04, 0, 0, 0, 0},
8156         {0x05, 0, 0, 0, 0},
8157         {0x06, 0, 0, 0, 0},
8158         {0x07, 0, 0, 0, 0},
8159         {0x08, 0, 0, 0, 0},
8160         {0x09, 0, 0, 0, 0},
8161         {0x0A, 0, 0, 0, 0},
8162         {0x0B, 0, 0, 0, 0},
8163         {0x0C, 0, 0, 0, 0},
8164         {0x0D, 0, 0, 0, 0},
8165         {0x0E, 0, 0, 0, 0},
8166         {0x0F, 0, 0, 0, 0},
8167         {0x10, 0, 0, 0, 0},
8168         {0x11, 0, 0, 0, 0},
8169         {0x12, 0, 0, 0, 0},
8170         {0x13, 0, 0, 0, 0},
8171         {0x14, 0, 0, 0, 0},
8172         {0x15, 0, 0, 0, 0},
8173         {0x16, 0, 0, 0, 0},
8174         {0x17, 0, 0, 0, 0},
8175         {0x18, 0, 0, 0, 0},
8176         {0x19, 0, 0, 0, 0},
8177         {0x1A, 0, 0, 0, 0},
8178         {0x1B, 0, 0, 0, 0},
8179         {0x1C, 0, 0, 0, 0},
8180         {0x1D, 0, 0, 0, 0},
8181         {0x1E, 0, 0, 0, 0},
8182         {0x1F, 0, 0, 0, 0},
8183         {0x20, 0, 0, 0, 0},
8184         {0x21, 0x88, 0x88, 0, 0},
8185         {0x22, 0x88, 0x88, 0, 0},
8186         {0x23, 0x88, 0x88, 0, 0},
8187         {0x24, 0x88, 0x88, 0, 0},
8188         {0x25, 0xc, 0xc, 0, 0},
8189         {0x26, 0, 0, 0, 0},
8190         {0x27, 0x3, 0x3, 0, 0},
8191         {0x28, 0, 0, 0, 0},
8192         {0x29, 0x3, 0x3, 0, 0},
8193         {0x2A, 0x37, 0x37, 0, 0},
8194         {0x2B, 0x3, 0x3, 0, 0},
8195         {0x2C, 0, 0, 0, 0},
8196         {0x2D, 0, 0, 0, 0},
8197         {0x2E, 0x1, 0x1, 0, 0},
8198         {0x2F, 0x1, 0x1, 0, 0},
8199         {0x30, 0, 0, 0, 0},
8200         {0x31, 0, 0, 0, 0},
8201         {0x32, 0, 0, 0, 0},
8202         {0x33, 0x11, 0x11, 0, 0},
8203         {0x34, 0x11, 0x11, 0, 0},
8204         {0x35, 0, 0, 0, 0},
8205         {0x36, 0, 0, 0, 0},
8206         {0x37, 0x3, 0x3, 0, 0},
8207         {0x38, 0xf, 0xf, 0, 0},
8208         {0x39, 0, 0, 0, 0},
8209         {0x3A, 0x2d, 0x2d, 0, 0},
8210         {0x3B, 0, 0, 0, 0},
8211         {0x3C, 0x6e, 0x6e, 0, 0},
8212         {0x3D, 0xf0, 0xf0, 1, 1},
8213         {0x3E, 0, 0, 0, 0},
8214         {0x3F, 0, 0, 0, 0},
8215         {0x40, 0, 0, 0, 0},
8216         {0x41, 0x3, 0x3, 0, 0},
8217         {0x42, 0x3, 0x3, 0, 0},
8218         {0x43, 0, 0, 0, 0},
8219         {0x44, 0x1e, 0x1e, 0, 0},
8220         {0x45, 0, 0, 0, 0},
8221         {0x46, 0x6e, 0x6e, 0, 0},
8222         {0x47, 0xf0, 0xf0, 1, 1},
8223         {0x48, 0, 0, 0, 0},
8224         {0x49, 0x2, 0x2, 0, 0},
8225         {0x4A, 0xff, 0xff, 1, 1},
8226         {0x4B, 0xc, 0xc, 0, 0},
8227         {0x4C, 0, 0, 0, 0},
8228         {0x4D, 0x38, 0x38, 0, 0},
8229         {0x4E, 0x70, 0x70, 1, 1},
8230         {0x4F, 0x2, 0x2, 0, 0},
8231         {0x50, 0x88, 0x88, 0, 0},
8232         {0x51, 0xc, 0xc, 0, 0},
8233         {0x52, 0, 0, 0, 0},
8234         {0x53, 0x8, 0x8, 0, 0},
8235         {0x54, 0x70, 0x70, 1, 1},
8236         {0x55, 0x2, 0x2, 0, 0},
8237         {0x56, 0xff, 0xff, 1, 1},
8238         {0x57, 0, 0, 0, 0},
8239         {0x58, 0x83, 0x83, 0, 0},
8240         {0x59, 0x77, 0x77, 1, 1},
8241         {0x5A, 0, 0, 0, 0},
8242         {0x5B, 0x2, 0x2, 0, 0},
8243         {0x5C, 0x88, 0x88, 0, 0},
8244         {0x5D, 0, 0, 0, 0},
8245         {0x5E, 0x8, 0x8, 0, 0},
8246         {0x5F, 0x77, 0x77, 1, 1},
8247         {0x60, 0x1, 0x1, 0, 0},
8248         {0x61, 0, 0, 0, 0},
8249         {0x62, 0x7, 0x7, 0, 0},
8250         {0x63, 0, 0, 0, 0},
8251         {0x64, 0x7, 0x7, 0, 0},
8252         {0x65, 0, 0, 0, 0},
8253         {0x66, 0, 0, 0, 0},
8254         {0x67, 0x74, 0x74, 1, 1},
8255         {0x68, 0, 0, 0, 0},
8256         {0x69, 0xa, 0xa, 0, 0},
8257         {0x6A, 0, 0, 0, 0},
8258         {0x6B, 0, 0, 0, 0},
8259         {0x6C, 0, 0, 0, 0},
8260         {0x6D, 0, 0, 0, 0},
8261         {0x6E, 0, 0, 0, 0},
8262         {0x6F, 0, 0, 0, 0},
8263         {0x70, 0, 0, 0, 0},
8264         {0x71, 0x2, 0x2, 0, 0},
8265         {0x72, 0, 0, 0, 0},
8266         {0x73, 0, 0, 0, 0},
8267         {0x74, 0xe, 0xe, 0, 0},
8268         {0x75, 0xe, 0xe, 0, 0},
8269         {0x76, 0xe, 0xe, 0, 0},
8270         {0x77, 0x13, 0x13, 0, 0},
8271         {0x78, 0x13, 0x13, 0, 0},
8272         {0x79, 0x1b, 0x1b, 0, 0},
8273         {0x7A, 0x1b, 0x1b, 0, 0},
8274         {0x7B, 0x55, 0x55, 0, 0},
8275         {0x7C, 0x5b, 0x5b, 0, 0},
8276         {0x7D, 0, 0, 0, 0},
8277         {0x7E, 0, 0, 0, 0},
8278         {0x7F, 0, 0, 0, 0},
8279         {0x80, 0, 0, 0, 0},
8280         {0x81, 0, 0, 0, 0},
8281         {0x82, 0, 0, 0, 0},
8282         {0x83, 0, 0, 0, 0},
8283         {0x84, 0, 0, 0, 0},
8284         {0x85, 0, 0, 0, 0},
8285         {0x86, 0, 0, 0, 0},
8286         {0x87, 0, 0, 0, 0},
8287         {0x88, 0, 0, 0, 0},
8288         {0x89, 0, 0, 0, 0},
8289         {0x8A, 0, 0, 0, 0},
8290         {0x8B, 0, 0, 0, 0},
8291         {0x8C, 0, 0, 0, 0},
8292         {0x8D, 0, 0, 0, 0},
8293         {0x8E, 0, 0, 0, 0},
8294         {0x8F, 0, 0, 0, 0},
8295         {0x90, 0, 0, 0, 0},
8296         {0x91, 0, 0, 0, 0},
8297         {0x92, 0, 0, 0, 0},
8298         {0xFFFF, 0, 0, 0, 0}
8299 };
8300
8301 radio_regs_t regs_RX_2056[] = {
8302         {0x02, 0, 0, 0, 0},
8303         {0x03, 0, 0, 0, 0},
8304         {0x04, 0, 0, 0, 0},
8305         {0x05, 0, 0, 0, 0},
8306         {0x06, 0, 0, 0, 0},
8307         {0x07, 0, 0, 0, 0},
8308         {0x08, 0, 0, 0, 0},
8309         {0x09, 0, 0, 0, 0},
8310         {0x0A, 0, 0, 0, 0},
8311         {0x0B, 0, 0, 0, 0},
8312         {0x0C, 0, 0, 0, 0},
8313         {0x0D, 0, 0, 0, 0},
8314         {0x0E, 0, 0, 0, 0},
8315         {0x0F, 0, 0, 0, 0},
8316         {0x10, 0, 0, 0, 0},
8317         {0x11, 0, 0, 0, 0},
8318         {0x12, 0, 0, 0, 0},
8319         {0x13, 0, 0, 0, 0},
8320         {0x14, 0, 0, 0, 0},
8321         {0x15, 0, 0, 0, 0},
8322         {0x16, 0, 0, 0, 0},
8323         {0x17, 0, 0, 0, 0},
8324         {0x18, 0, 0, 0, 0},
8325         {0x19, 0, 0, 0, 0},
8326         {0x1A, 0, 0, 0, 0},
8327         {0x1B, 0, 0, 0, 0},
8328         {0x1C, 0, 0, 0, 0},
8329         {0x1D, 0, 0, 0, 0},
8330         {0x1E, 0, 0, 0, 0},
8331         {0x1F, 0, 0, 0, 0},
8332         {0x20, 0x3, 0x3, 0, 0},
8333         {0x21, 0, 0, 0, 0},
8334         {0x22, 0, 0, 0, 0},
8335         {0x23, 0x90, 0x90, 0, 0},
8336         {0x24, 0x55, 0x55, 0, 0},
8337         {0x25, 0x15, 0x15, 0, 0},
8338         {0x26, 0x5, 0x5, 0, 0},
8339         {0x27, 0x15, 0x15, 0, 0},
8340         {0x28, 0x5, 0x5, 0, 0},
8341         {0x29, 0x20, 0x20, 0, 0},
8342         {0x2A, 0x11, 0x11, 0, 0},
8343         {0x2B, 0x90, 0x90, 0, 0},
8344         {0x2C, 0, 0, 0, 0},
8345         {0x2D, 0x88, 0x88, 0, 0},
8346         {0x2E, 0x32, 0x32, 0, 0},
8347         {0x2F, 0x77, 0x77, 0, 0},
8348         {0x30, 0x17, 0x17, 1, 1},
8349         {0x31, 0xff, 0xff, 1, 1},
8350         {0x32, 0x20, 0x20, 0, 0},
8351         {0x33, 0, 0, 0, 0},
8352         {0x34, 0x88, 0x88, 0, 0},
8353         {0x35, 0x32, 0x32, 0, 0},
8354         {0x36, 0x77, 0x77, 0, 0},
8355         {0x37, 0x17, 0x17, 1, 1},
8356         {0x38, 0xf0, 0xf0, 1, 1},
8357         {0x39, 0x20, 0x20, 0, 0},
8358         {0x3A, 0x8, 0x8, 0, 0},
8359         {0x3B, 0x99, 0x99, 0, 0},
8360         {0x3C, 0, 0, 0, 0},
8361         {0x3D, 0x44, 0x44, 1, 1},
8362         {0x3E, 0, 0, 0, 0},
8363         {0x3F, 0x44, 0x44, 0, 0},
8364         {0x40, 0xf, 0xf, 1, 1},
8365         {0x41, 0x6, 0x6, 0, 0},
8366         {0x42, 0x4, 0x4, 0, 0},
8367         {0x43, 0x50, 0x50, 1, 1},
8368         {0x44, 0x8, 0x8, 0, 0},
8369         {0x45, 0x99, 0x99, 0, 0},
8370         {0x46, 0, 0, 0, 0},
8371         {0x47, 0x11, 0x11, 0, 0},
8372         {0x48, 0, 0, 0, 0},
8373         {0x49, 0x44, 0x44, 0, 0},
8374         {0x4A, 0x7, 0x7, 0, 0},
8375         {0x4B, 0x6, 0x6, 0, 0},
8376         {0x4C, 0x4, 0x4, 0, 0},
8377         {0x4D, 0, 0, 0, 0},
8378         {0x4E, 0, 0, 0, 0},
8379         {0x4F, 0x66, 0x66, 0, 0},
8380         {0x50, 0x66, 0x66, 0, 0},
8381         {0x51, 0x57, 0x57, 0, 0},
8382         {0x52, 0x57, 0x57, 0, 0},
8383         {0x53, 0x44, 0x44, 0, 0},
8384         {0x54, 0, 0, 0, 0},
8385         {0x55, 0, 0, 0, 0},
8386         {0x56, 0x8, 0x8, 0, 0},
8387         {0x57, 0x8, 0x8, 0, 0},
8388         {0x58, 0x7, 0x7, 0, 0},
8389         {0x59, 0x22, 0x22, 0, 0},
8390         {0x5A, 0x22, 0x22, 0, 0},
8391         {0x5B, 0x2, 0x2, 0, 0},
8392         {0x5C, 0x23, 0x23, 0, 0},
8393         {0x5D, 0x7, 0x7, 0, 0},
8394         {0x5E, 0x55, 0x55, 0, 0},
8395         {0x5F, 0x23, 0x23, 0, 0},
8396         {0x60, 0x41, 0x41, 0, 0},
8397         {0x61, 0x1, 0x1, 0, 0},
8398         {0x62, 0xa, 0xa, 0, 0},
8399         {0x63, 0, 0, 0, 0},
8400         {0x64, 0, 0, 0, 0},
8401         {0x65, 0, 0, 0, 0},
8402         {0x66, 0, 0, 0, 0},
8403         {0x67, 0, 0, 0, 0},
8404         {0x68, 0, 0, 0, 0},
8405         {0x69, 0, 0, 0, 0},
8406         {0x6A, 0, 0, 0, 0},
8407         {0x6B, 0xc, 0xc, 0, 0},
8408         {0x6C, 0, 0, 0, 0},
8409         {0x6D, 0, 0, 0, 0},
8410         {0x6E, 0, 0, 0, 0},
8411         {0x6F, 0, 0, 0, 0},
8412         {0x70, 0, 0, 0, 0},
8413         {0x71, 0, 0, 0, 0},
8414         {0x72, 0x22, 0x22, 0, 0},
8415         {0x73, 0x22, 0x22, 0, 0},
8416         {0x74, 0x2, 0x2, 0, 0},
8417         {0x75, 0xa, 0xa, 0, 0},
8418         {0x76, 0x1, 0x1, 0, 0},
8419         {0x77, 0x22, 0x22, 0, 0},
8420         {0x78, 0x30, 0x30, 0, 0},
8421         {0x79, 0, 0, 0, 0},
8422         {0x7A, 0, 0, 0, 0},
8423         {0x7B, 0, 0, 0, 0},
8424         {0x7C, 0, 0, 0, 0},
8425         {0x7D, 0, 0, 0, 0},
8426         {0x7E, 0, 0, 0, 0},
8427         {0x7F, 0, 0, 0, 0},
8428         {0x80, 0, 0, 0, 0},
8429         {0x81, 0, 0, 0, 0},
8430         {0x82, 0, 0, 0, 0},
8431         {0x83, 0, 0, 0, 0},
8432         {0x84, 0, 0, 0, 0},
8433         {0x85, 0, 0, 0, 0},
8434         {0x86, 0, 0, 0, 0},
8435         {0x87, 0, 0, 0, 0},
8436         {0x88, 0, 0, 0, 0},
8437         {0x89, 0, 0, 0, 0},
8438         {0x8A, 0, 0, 0, 0},
8439         {0x8B, 0, 0, 0, 0},
8440         {0x8C, 0, 0, 0, 0},
8441         {0x8D, 0, 0, 0, 0},
8442         {0x8E, 0, 0, 0, 0},
8443         {0x8F, 0, 0, 0, 0},
8444         {0x90, 0, 0, 0, 0},
8445         {0x91, 0, 0, 0, 0},
8446         {0x92, 0, 0, 0, 0},
8447         {0x93, 0, 0, 0, 0},
8448         {0x94, 0, 0, 0, 0},
8449         {0xFFFF, 0, 0, 0, 0}
8450 };
8451
8452 radio_regs_t regs_SYN_2056_A1[] = {
8453         {0x02, 0, 0, 0, 0},
8454         {0x03, 0, 0, 0, 0},
8455         {0x04, 0, 0, 0, 0},
8456         {0x05, 0, 0, 0, 0},
8457         {0x06, 0, 0, 0, 0},
8458         {0x07, 0, 0, 0, 0},
8459         {0x08, 0, 0, 0, 0},
8460         {0x09, 0x1, 0x1, 0, 0},
8461         {0x0A, 0, 0, 0, 0},
8462         {0x0B, 0, 0, 0, 0},
8463         {0x0C, 0, 0, 0, 0},
8464         {0x0D, 0, 0, 0, 0},
8465         {0x0E, 0, 0, 0, 0},
8466         {0x0F, 0, 0, 0, 0},
8467         {0x10, 0, 0, 0, 0},
8468         {0x11, 0, 0, 0, 0},
8469         {0x12, 0, 0, 0, 0},
8470         {0x13, 0, 0, 0, 0},
8471         {0x14, 0, 0, 0, 0},
8472         {0x15, 0, 0, 0, 0},
8473         {0x16, 0, 0, 0, 0},
8474         {0x17, 0, 0, 0, 0},
8475         {0x18, 0, 0, 0, 0},
8476         {0x19, 0, 0, 0, 0},
8477         {0x1A, 0, 0, 0, 0},
8478         {0x1B, 0, 0, 0, 0},
8479         {0x1C, 0, 0, 0, 0},
8480         {0x1D, 0, 0, 0, 0},
8481         {0x1E, 0, 0, 0, 0},
8482         {0x1F, 0, 0, 0, 0},
8483         {0x20, 0, 0, 0, 0},
8484         {0x21, 0, 0, 0, 0},
8485         {0x22, 0x60, 0x60, 0, 0},
8486         {0x23, 0x6, 0x6, 0, 0},
8487         {0x24, 0xc, 0xc, 0, 0},
8488         {0x25, 0, 0, 0, 0},
8489         {0x26, 0, 0, 0, 0},
8490         {0x27, 0, 0, 0, 0},
8491         {0x28, 0x1, 0x1, 0, 0},
8492         {0x29, 0, 0, 0, 0},
8493         {0x2A, 0, 0, 0, 0},
8494         {0x2B, 0, 0, 0, 0},
8495         {0x2C, 0, 0, 0, 0},
8496         {0x2D, 0, 0, 0, 0},
8497         {0x2E, 0xd, 0xd, 0, 0},
8498         {0x2F, 0x1f, 0x1f, 0, 0},
8499         {0x30, 0x15, 0x15, 0, 0},
8500         {0x31, 0xf, 0xf, 0, 0},
8501         {0x32, 0, 0, 0, 0},
8502         {0x33, 0, 0, 0, 0},
8503         {0x34, 0, 0, 0, 0},
8504         {0x35, 0, 0, 0, 0},
8505         {0x36, 0, 0, 0, 0},
8506         {0x37, 0, 0, 0, 0},
8507         {0x38, 0, 0, 0, 0},
8508         {0x39, 0, 0, 0, 0},
8509         {0x3A, 0, 0, 0, 0},
8510         {0x3B, 0, 0, 0, 0},
8511         {0x3C, 0x13, 0x13, 0, 0},
8512         {0x3D, 0xf, 0xf, 0, 0},
8513         {0x3E, 0x18, 0x18, 0, 0},
8514         {0x3F, 0, 0, 0, 0},
8515         {0x40, 0, 0, 0, 0},
8516         {0x41, 0x20, 0x20, 0, 0},
8517         {0x42, 0x20, 0x20, 0, 0},
8518         {0x43, 0, 0, 0, 0},
8519         {0x44, 0x77, 0x77, 0, 0},
8520         {0x45, 0x7, 0x7, 0, 0},
8521         {0x46, 0x1, 0x1, 0, 0},
8522         {0x47, 0x4, 0x4, 0, 0},
8523         {0x48, 0xf, 0xf, 0, 0},
8524         {0x49, 0x30, 0x30, 0, 0},
8525         {0x4A, 0x32, 0x32, 0, 0},
8526         {0x4B, 0xd, 0xd, 0, 0},
8527         {0x4C, 0xd, 0xd, 0, 0},
8528         {0x4D, 0x4, 0x4, 0, 0},
8529         {0x4E, 0x6, 0x6, 0, 0},
8530         {0x4F, 0x1, 0x1, 0, 0},
8531         {0x50, 0x1c, 0x1c, 0, 0},
8532         {0x51, 0x2, 0x2, 0, 0},
8533         {0x52, 0x2, 0x2, 0, 0},
8534         {0x53, 0xf7, 0xf7, 1, 1},
8535         {0x54, 0xb4, 0xb4, 0, 0},
8536         {0x55, 0xd2, 0xd2, 0, 0},
8537         {0x56, 0, 0, 0, 0},
8538         {0x57, 0, 0, 0, 0},
8539         {0x58, 0x4, 0x4, 0, 0},
8540         {0x59, 0x96, 0x96, 0, 0},
8541         {0x5A, 0x3e, 0x3e, 0, 0},
8542         {0x5B, 0x3e, 0x3e, 0, 0},
8543         {0x5C, 0x13, 0x13, 0, 0},
8544         {0x5D, 0x2, 0x2, 0, 0},
8545         {0x5E, 0, 0, 0, 0},
8546         {0x5F, 0x7, 0x7, 0, 0},
8547         {0x60, 0x7, 0x7, 1, 1},
8548         {0x61, 0x8, 0x8, 0, 0},
8549         {0x62, 0x3, 0x3, 0, 0},
8550         {0x63, 0, 0, 0, 0},
8551         {0x64, 0, 0, 0, 0},
8552         {0x65, 0, 0, 0, 0},
8553         {0x66, 0, 0, 0, 0},
8554         {0x67, 0, 0, 0, 0},
8555         {0x68, 0x40, 0x40, 0, 0},
8556         {0x69, 0, 0, 0, 0},
8557         {0x6A, 0, 0, 0, 0},
8558         {0x6B, 0, 0, 0, 0},
8559         {0x6C, 0, 0, 0, 0},
8560         {0x6D, 0x1, 0x1, 0, 0},
8561         {0x6E, 0, 0, 0, 0},
8562         {0x6F, 0, 0, 0, 0},
8563         {0x70, 0x60, 0x60, 0, 0},
8564         {0x71, 0x66, 0x66, 0, 0},
8565         {0x72, 0xc, 0xc, 0, 0},
8566         {0x73, 0x66, 0x66, 0, 0},
8567         {0x74, 0x8f, 0x8f, 1, 1},
8568         {0x75, 0, 0, 0, 0},
8569         {0x76, 0xcc, 0xcc, 0, 0},
8570         {0x77, 0x1, 0x1, 0, 0},
8571         {0x78, 0x66, 0x66, 0, 0},
8572         {0x79, 0x66, 0x66, 0, 0},
8573         {0x7A, 0, 0, 0, 0},
8574         {0x7B, 0, 0, 0, 0},
8575         {0x7C, 0, 0, 0, 0},
8576         {0x7D, 0, 0, 0, 0},
8577         {0x7E, 0, 0, 0, 0},
8578         {0x7F, 0, 0, 0, 0},
8579         {0x80, 0, 0, 0, 0},
8580         {0x81, 0, 0, 0, 0},
8581         {0x82, 0, 0, 0, 0},
8582         {0x83, 0, 0, 0, 0},
8583         {0x84, 0, 0, 0, 0},
8584         {0x85, 0xff, 0xff, 0, 0},
8585         {0x86, 0, 0, 0, 0},
8586         {0x87, 0, 0, 0, 0},
8587         {0x88, 0, 0, 0, 0},
8588         {0x89, 0, 0, 0, 0},
8589         {0x8A, 0, 0, 0, 0},
8590         {0x8B, 0, 0, 0, 0},
8591         {0x8C, 0, 0, 0, 0},
8592         {0x8D, 0, 0, 0, 0},
8593         {0x8E, 0, 0, 0, 0},
8594         {0x8F, 0, 0, 0, 0},
8595         {0x90, 0, 0, 0, 0},
8596         {0x91, 0, 0, 0, 0},
8597         {0x92, 0, 0, 0, 0},
8598         {0x93, 0, 0, 0, 0},
8599         {0x94, 0, 0, 0, 0},
8600         {0x95, 0, 0, 0, 0},
8601         {0x96, 0, 0, 0, 0},
8602         {0x97, 0, 0, 0, 0},
8603         {0x98, 0, 0, 0, 0},
8604         {0x99, 0, 0, 0, 0},
8605         {0x9A, 0, 0, 0, 0},
8606         {0x9B, 0, 0, 0, 0},
8607         {0x9C, 0, 0, 0, 0},
8608         {0x9D, 0, 0, 0, 0},
8609         {0x9E, 0, 0, 0, 0},
8610         {0x9F, 0x6, 0x6, 0, 0},
8611         {0xA0, 0x66, 0x66, 0, 0},
8612         {0xA1, 0x66, 0x66, 0, 0},
8613         {0xA2, 0x66, 0x66, 0, 0},
8614         {0xA3, 0x66, 0x66, 0, 0},
8615         {0xA4, 0x66, 0x66, 0, 0},
8616         {0xA5, 0x66, 0x66, 0, 0},
8617         {0xA6, 0x66, 0x66, 0, 0},
8618         {0xA7, 0x66, 0x66, 0, 0},
8619         {0xA8, 0x66, 0x66, 0, 0},
8620         {0xA9, 0x66, 0x66, 0, 0},
8621         {0xAA, 0x66, 0x66, 0, 0},
8622         {0xAB, 0x66, 0x66, 0, 0},
8623         {0xAC, 0x66, 0x66, 0, 0},
8624         {0xAD, 0x66, 0x66, 0, 0},
8625         {0xAE, 0x66, 0x66, 0, 0},
8626         {0xAF, 0x66, 0x66, 0, 0},
8627         {0xB0, 0x66, 0x66, 0, 0},
8628         {0xB1, 0x66, 0x66, 0, 0},
8629         {0xB2, 0x66, 0x66, 0, 0},
8630         {0xB3, 0xa, 0xa, 0, 0},
8631         {0xB4, 0, 0, 0, 0},
8632         {0xB5, 0, 0, 0, 0},
8633         {0xB6, 0, 0, 0, 0},
8634         {0xFFFF, 0, 0, 0, 0}
8635 };
8636
8637 radio_regs_t regs_TX_2056_A1[] = {
8638         {0x02, 0, 0, 0, 0},
8639         {0x03, 0, 0, 0, 0},
8640         {0x04, 0, 0, 0, 0},
8641         {0x05, 0, 0, 0, 0},
8642         {0x06, 0, 0, 0, 0},
8643         {0x07, 0, 0, 0, 0},
8644         {0x08, 0, 0, 0, 0},
8645         {0x09, 0, 0, 0, 0},
8646         {0x0A, 0, 0, 0, 0},
8647         {0x0B, 0, 0, 0, 0},
8648         {0x0C, 0, 0, 0, 0},
8649         {0x0D, 0, 0, 0, 0},
8650         {0x0E, 0, 0, 0, 0},
8651         {0x0F, 0, 0, 0, 0},
8652         {0x10, 0, 0, 0, 0},
8653         {0x11, 0, 0, 0, 0},
8654         {0x12, 0, 0, 0, 0},
8655         {0x13, 0, 0, 0, 0},
8656         {0x14, 0, 0, 0, 0},
8657         {0x15, 0, 0, 0, 0},
8658         {0x16, 0, 0, 0, 0},
8659         {0x17, 0, 0, 0, 0},
8660         {0x18, 0, 0, 0, 0},
8661         {0x19, 0, 0, 0, 0},
8662         {0x1A, 0, 0, 0, 0},
8663         {0x1B, 0, 0, 0, 0},
8664         {0x1C, 0, 0, 0, 0},
8665         {0x1D, 0, 0, 0, 0},
8666         {0x1E, 0, 0, 0, 0},
8667         {0x1F, 0, 0, 0, 0},
8668         {0x20, 0, 0, 0, 0},
8669         {0x21, 0x88, 0x88, 0, 0},
8670         {0x22, 0x88, 0x88, 0, 0},
8671         {0x23, 0x88, 0x88, 0, 0},
8672         {0x24, 0x88, 0x88, 0, 0},
8673         {0x25, 0xc, 0xc, 0, 0},
8674         {0x26, 0, 0, 0, 0},
8675         {0x27, 0x3, 0x3, 0, 0},
8676         {0x28, 0, 0, 0, 0},
8677         {0x29, 0x3, 0x3, 0, 0},
8678         {0x2A, 0x37, 0x37, 0, 0},
8679         {0x2B, 0x3, 0x3, 0, 0},
8680         {0x2C, 0, 0, 0, 0},
8681         {0x2D, 0, 0, 0, 0},
8682         {0x2E, 0x1, 0x1, 0, 0},
8683         {0x2F, 0x1, 0x1, 0, 0},
8684         {0x30, 0, 0, 0, 0},
8685         {0x31, 0, 0, 0, 0},
8686         {0x32, 0, 0, 0, 0},
8687         {0x33, 0x11, 0x11, 0, 0},
8688         {0x34, 0x11, 0x11, 0, 0},
8689         {0x35, 0, 0, 0, 0},
8690         {0x36, 0, 0, 0, 0},
8691         {0x37, 0x3, 0x3, 0, 0},
8692         {0x38, 0xf, 0xf, 0, 0},
8693         {0x39, 0, 0, 0, 0},
8694         {0x3A, 0x2d, 0x2d, 0, 0},
8695         {0x3B, 0, 0, 0, 0},
8696         {0x3C, 0x6e, 0x6e, 0, 0},
8697         {0x3D, 0xf0, 0xf0, 1, 1},
8698         {0x3E, 0, 0, 0, 0},
8699         {0x3F, 0, 0, 0, 0},
8700         {0x40, 0, 0, 0, 0},
8701         {0x41, 0x3, 0x3, 0, 0},
8702         {0x42, 0x3, 0x3, 0, 0},
8703         {0x43, 0, 0, 0, 0},
8704         {0x44, 0x1e, 0x1e, 0, 0},
8705         {0x45, 0, 0, 0, 0},
8706         {0x46, 0x6e, 0x6e, 0, 0},
8707         {0x47, 0xf0, 0xf0, 1, 1},
8708         {0x48, 0, 0, 0, 0},
8709         {0x49, 0x2, 0x2, 0, 0},
8710         {0x4A, 0xff, 0xff, 1, 1},
8711         {0x4B, 0xc, 0xc, 0, 0},
8712         {0x4C, 0, 0, 0, 0},
8713         {0x4D, 0x38, 0x38, 0, 0},
8714         {0x4E, 0x70, 0x70, 1, 1},
8715         {0x4F, 0x2, 0x2, 0, 0},
8716         {0x50, 0x88, 0x88, 0, 0},
8717         {0x51, 0xc, 0xc, 0, 0},
8718         {0x52, 0, 0, 0, 0},
8719         {0x53, 0x8, 0x8, 0, 0},
8720         {0x54, 0x70, 0x70, 1, 1},
8721         {0x55, 0x2, 0x2, 0, 0},
8722         {0x56, 0xff, 0xff, 1, 1},
8723         {0x57, 0, 0, 0, 0},
8724         {0x58, 0x83, 0x83, 0, 0},
8725         {0x59, 0x77, 0x77, 1, 1},
8726         {0x5A, 0, 0, 0, 0},
8727         {0x5B, 0x2, 0x2, 0, 0},
8728         {0x5C, 0x88, 0x88, 0, 0},
8729         {0x5D, 0, 0, 0, 0},
8730         {0x5E, 0x8, 0x8, 0, 0},
8731         {0x5F, 0x77, 0x77, 1, 1},
8732         {0x60, 0x1, 0x1, 0, 0},
8733         {0x61, 0, 0, 0, 0},
8734         {0x62, 0x7, 0x7, 0, 0},
8735         {0x63, 0, 0, 0, 0},
8736         {0x64, 0x7, 0x7, 0, 0},
8737         {0x65, 0, 0, 0, 0},
8738         {0x66, 0, 0, 0, 0},
8739         {0x67, 0x72, 0x72, 1, 1},
8740         {0x68, 0, 0, 0, 0},
8741         {0x69, 0xa, 0xa, 0, 0},
8742         {0x6A, 0, 0, 0, 0},
8743         {0x6B, 0, 0, 0, 0},
8744         {0x6C, 0, 0, 0, 0},
8745         {0x6D, 0, 0, 0, 0},
8746         {0x6E, 0, 0, 0, 0},
8747         {0x6F, 0, 0, 0, 0},
8748         {0x70, 0, 0, 0, 0},
8749         {0x71, 0x2, 0x2, 0, 0},
8750         {0x72, 0, 0, 0, 0},
8751         {0x73, 0, 0, 0, 0},
8752         {0x74, 0xe, 0xe, 0, 0},
8753         {0x75, 0xe, 0xe, 0, 0},
8754         {0x76, 0xe, 0xe, 0, 0},
8755         {0x77, 0x13, 0x13, 0, 0},
8756         {0x78, 0x13, 0x13, 0, 0},
8757         {0x79, 0x1b, 0x1b, 0, 0},
8758         {0x7A, 0x1b, 0x1b, 0, 0},
8759         {0x7B, 0x55, 0x55, 0, 0},
8760         {0x7C, 0x5b, 0x5b, 0, 0},
8761         {0x7D, 0, 0, 0, 0},
8762         {0x7E, 0, 0, 0, 0},
8763         {0x7F, 0, 0, 0, 0},
8764         {0x80, 0, 0, 0, 0},
8765         {0x81, 0, 0, 0, 0},
8766         {0x82, 0, 0, 0, 0},
8767         {0x83, 0, 0, 0, 0},
8768         {0x84, 0, 0, 0, 0},
8769         {0x85, 0, 0, 0, 0},
8770         {0x86, 0, 0, 0, 0},
8771         {0x87, 0, 0, 0, 0},
8772         {0x88, 0, 0, 0, 0},
8773         {0x89, 0, 0, 0, 0},
8774         {0x8A, 0, 0, 0, 0},
8775         {0x8B, 0, 0, 0, 0},
8776         {0x8C, 0, 0, 0, 0},
8777         {0x8D, 0, 0, 0, 0},
8778         {0x8E, 0, 0, 0, 0},
8779         {0x8F, 0, 0, 0, 0},
8780         {0x90, 0, 0, 0, 0},
8781         {0x91, 0, 0, 0, 0},
8782         {0x92, 0, 0, 0, 0},
8783         {0xFFFF, 0, 0, 0, 0}
8784 };
8785
8786 radio_regs_t regs_RX_2056_A1[] = {
8787         {0x02, 0, 0, 0, 0},
8788         {0x03, 0, 0, 0, 0},
8789         {0x04, 0, 0, 0, 0},
8790         {0x05, 0, 0, 0, 0},
8791         {0x06, 0, 0, 0, 0},
8792         {0x07, 0, 0, 0, 0},
8793         {0x08, 0, 0, 0, 0},
8794         {0x09, 0, 0, 0, 0},
8795         {0x0A, 0, 0, 0, 0},
8796         {0x0B, 0, 0, 0, 0},
8797         {0x0C, 0, 0, 0, 0},
8798         {0x0D, 0, 0, 0, 0},
8799         {0x0E, 0, 0, 0, 0},
8800         {0x0F, 0, 0, 0, 0},
8801         {0x10, 0, 0, 0, 0},
8802         {0x11, 0, 0, 0, 0},
8803         {0x12, 0, 0, 0, 0},
8804         {0x13, 0, 0, 0, 0},
8805         {0x14, 0, 0, 0, 0},
8806         {0x15, 0, 0, 0, 0},
8807         {0x16, 0, 0, 0, 0},
8808         {0x17, 0, 0, 0, 0},
8809         {0x18, 0, 0, 0, 0},
8810         {0x19, 0, 0, 0, 0},
8811         {0x1A, 0, 0, 0, 0},
8812         {0x1B, 0, 0, 0, 0},
8813         {0x1C, 0, 0, 0, 0},
8814         {0x1D, 0, 0, 0, 0},
8815         {0x1E, 0, 0, 0, 0},
8816         {0x1F, 0, 0, 0, 0},
8817         {0x20, 0x3, 0x3, 0, 0},
8818         {0x21, 0, 0, 0, 0},
8819         {0x22, 0, 0, 0, 0},
8820         {0x23, 0x90, 0x90, 0, 0},
8821         {0x24, 0x55, 0x55, 0, 0},
8822         {0x25, 0x15, 0x15, 0, 0},
8823         {0x26, 0x5, 0x5, 0, 0},
8824         {0x27, 0x15, 0x15, 0, 0},
8825         {0x28, 0x5, 0x5, 0, 0},
8826         {0x29, 0x20, 0x20, 0, 0},
8827         {0x2A, 0x11, 0x11, 0, 0},
8828         {0x2B, 0x90, 0x90, 0, 0},
8829         {0x2C, 0, 0, 0, 0},
8830         {0x2D, 0x88, 0x88, 0, 0},
8831         {0x2E, 0x32, 0x32, 0, 0},
8832         {0x2F, 0x77, 0x77, 0, 0},
8833         {0x30, 0x17, 0x17, 1, 1},
8834         {0x31, 0xff, 0xff, 1, 1},
8835         {0x32, 0x20, 0x20, 0, 0},
8836         {0x33, 0, 0, 0, 0},
8837         {0x34, 0x88, 0x88, 0, 0},
8838         {0x35, 0x32, 0x32, 0, 0},
8839         {0x36, 0x77, 0x77, 0, 0},
8840         {0x37, 0x17, 0x17, 1, 1},
8841         {0x38, 0xf0, 0xf0, 1, 1},
8842         {0x39, 0x20, 0x20, 0, 0},
8843         {0x3A, 0x8, 0x8, 0, 0},
8844         {0x3B, 0x55, 0x55, 1, 1},
8845         {0x3C, 0, 0, 0, 0},
8846         {0x3D, 0x44, 0x44, 1, 1},
8847         {0x3E, 0, 0, 0, 0},
8848         {0x3F, 0x44, 0x44, 0, 0},
8849         {0x40, 0xf, 0xf, 1, 1},
8850         {0x41, 0x6, 0x6, 0, 0},
8851         {0x42, 0x4, 0x4, 0, 0},
8852         {0x43, 0x50, 0x50, 1, 1},
8853         {0x44, 0x8, 0x8, 0, 0},
8854         {0x45, 0x55, 0x55, 1, 1},
8855         {0x46, 0, 0, 0, 0},
8856         {0x47, 0x11, 0x11, 0, 0},
8857         {0x48, 0, 0, 0, 0},
8858         {0x49, 0x44, 0x44, 0, 0},
8859         {0x4A, 0x7, 0x7, 0, 0},
8860         {0x4B, 0x6, 0x6, 0, 0},
8861         {0x4C, 0x4, 0x4, 0, 0},
8862         {0x4D, 0, 0, 0, 0},
8863         {0x4E, 0, 0, 0, 0},
8864         {0x4F, 0x26, 0x26, 1, 1},
8865         {0x50, 0x26, 0x26, 1, 1},
8866         {0x51, 0xf, 0xf, 1, 1},
8867         {0x52, 0xf, 0xf, 1, 1},
8868         {0x53, 0x44, 0x44, 0, 0},
8869         {0x54, 0, 0, 0, 0},
8870         {0x55, 0, 0, 0, 0},
8871         {0x56, 0x8, 0x8, 0, 0},
8872         {0x57, 0x8, 0x8, 0, 0},
8873         {0x58, 0x7, 0x7, 0, 0},
8874         {0x59, 0x22, 0x22, 0, 0},
8875         {0x5A, 0x22, 0x22, 0, 0},
8876         {0x5B, 0x2, 0x2, 0, 0},
8877         {0x5C, 0x2f, 0x2f, 1, 1},
8878         {0x5D, 0x7, 0x7, 0, 0},
8879         {0x5E, 0x55, 0x55, 0, 0},
8880         {0x5F, 0x23, 0x23, 0, 0},
8881         {0x60, 0x41, 0x41, 0, 0},
8882         {0x61, 0x1, 0x1, 0, 0},
8883         {0x62, 0xa, 0xa, 0, 0},
8884         {0x63, 0, 0, 0, 0},
8885         {0x64, 0, 0, 0, 0},
8886         {0x65, 0, 0, 0, 0},
8887         {0x66, 0, 0, 0, 0},
8888         {0x67, 0, 0, 0, 0},
8889         {0x68, 0, 0, 0, 0},
8890         {0x69, 0, 0, 0, 0},
8891         {0x6A, 0, 0, 0, 0},
8892         {0x6B, 0xc, 0xc, 0, 0},
8893         {0x6C, 0, 0, 0, 0},
8894         {0x6D, 0, 0, 0, 0},
8895         {0x6E, 0, 0, 0, 0},
8896         {0x6F, 0, 0, 0, 0},
8897         {0x70, 0, 0, 0, 0},
8898         {0x71, 0, 0, 0, 0},
8899         {0x72, 0x22, 0x22, 0, 0},
8900         {0x73, 0x22, 0x22, 0, 0},
8901         {0x74, 0, 0, 1, 1},
8902         {0x75, 0xa, 0xa, 0, 0},
8903         {0x76, 0x1, 0x1, 0, 0},
8904         {0x77, 0x22, 0x22, 0, 0},
8905         {0x78, 0x30, 0x30, 0, 0},
8906         {0x79, 0, 0, 0, 0},
8907         {0x7A, 0, 0, 0, 0},
8908         {0x7B, 0, 0, 0, 0},
8909         {0x7C, 0, 0, 0, 0},
8910         {0x7D, 0, 0, 0, 0},
8911         {0x7E, 0, 0, 0, 0},
8912         {0x7F, 0, 0, 0, 0},
8913         {0x80, 0, 0, 0, 0},
8914         {0x81, 0, 0, 0, 0},
8915         {0x82, 0, 0, 0, 0},
8916         {0x83, 0, 0, 0, 0},
8917         {0x84, 0, 0, 0, 0},
8918         {0x85, 0, 0, 0, 0},
8919         {0x86, 0, 0, 0, 0},
8920         {0x87, 0, 0, 0, 0},
8921         {0x88, 0, 0, 0, 0},
8922         {0x89, 0, 0, 0, 0},
8923         {0x8A, 0, 0, 0, 0},
8924         {0x8B, 0, 0, 0, 0},
8925         {0x8C, 0, 0, 0, 0},
8926         {0x8D, 0, 0, 0, 0},
8927         {0x8E, 0, 0, 0, 0},
8928         {0x8F, 0, 0, 0, 0},
8929         {0x90, 0, 0, 0, 0},
8930         {0x91, 0, 0, 0, 0},
8931         {0x92, 0, 0, 0, 0},
8932         {0x93, 0, 0, 0, 0},
8933         {0x94, 0, 0, 0, 0},
8934         {0xFFFF, 0, 0, 0, 0}
8935 };
8936
8937 radio_regs_t regs_SYN_2056_rev5[] = {
8938         {0x02, 0, 0, 0, 0},
8939         {0x03, 0, 0, 0, 0},
8940         {0x04, 0, 0, 0, 0},
8941         {0x05, 0, 0, 0, 0},
8942         {0x06, 0, 0, 0, 0},
8943         {0x07, 0, 0, 0, 0},
8944         {0x08, 0, 0, 0, 0},
8945         {0x09, 0x1, 0x1, 0, 0},
8946         {0x0A, 0, 0, 0, 0},
8947         {0x0B, 0, 0, 0, 0},
8948         {0x0C, 0, 0, 0, 0},
8949         {0x0D, 0, 0, 0, 0},
8950         {0x0E, 0, 0, 0, 0},
8951         {0x0F, 0, 0, 0, 0},
8952         {0x10, 0, 0, 0, 0},
8953         {0x11, 0, 0, 0, 0},
8954         {0x12, 0, 0, 0, 0},
8955         {0x13, 0, 0, 0, 0},
8956         {0x14, 0, 0, 0, 0},
8957         {0x15, 0, 0, 0, 0},
8958         {0x16, 0, 0, 0, 0},
8959         {0x17, 0, 0, 0, 0},
8960         {0x18, 0, 0, 0, 0},
8961         {0x19, 0, 0, 0, 0},
8962         {0x1A, 0, 0, 0, 0},
8963         {0x1B, 0, 0, 0, 0},
8964         {0x1C, 0, 0, 0, 0},
8965         {0x1D, 0, 0, 0, 0},
8966         {0x1E, 0, 0, 0, 0},
8967         {0x1F, 0, 0, 0, 0},
8968         {0x20, 0, 0, 0, 0},
8969         {0x21, 0, 0, 0, 0},
8970         {0x22, 0x60, 0x60, 0, 0},
8971         {0x23, 0x6, 0x6, 0, 0},
8972         {0x24, 0xc, 0xc, 0, 0},
8973         {0x25, 0, 0, 0, 0},
8974         {0x26, 0, 0, 0, 0},
8975         {0x27, 0, 0, 0, 0},
8976         {0x28, 0x1, 0x1, 0, 0},
8977         {0x29, 0, 0, 0, 0},
8978         {0x2A, 0, 0, 0, 0},
8979         {0x2B, 0, 0, 0, 0},
8980         {0x2C, 0, 0, 0, 0},
8981         {0x2D, 0, 0, 0, 0},
8982         {0x2E, 0, 0, 0, 0},
8983         {0x2F, 0x1f, 0x1f, 0, 0},
8984         {0x30, 0x15, 0x15, 0, 0},
8985         {0x31, 0xf, 0xf, 0, 0},
8986         {0x32, 0, 0, 0, 0},
8987         {0x33, 0, 0, 0, 0},
8988         {0x34, 0, 0, 0, 0},
8989         {0x35, 0, 0, 0, 0},
8990         {0x36, 0, 0, 0, 0},
8991         {0x37, 0, 0, 0, 0},
8992         {0x38, 0, 0, 0, 0},
8993         {0x39, 0, 0, 0, 0},
8994         {0x3A, 0, 0, 0, 0},
8995         {0x3B, 0, 0, 0, 0},
8996         {0x3C, 0x13, 0x13, 0, 0},
8997         {0x3D, 0xf, 0xf, 0, 0},
8998         {0x3E, 0x18, 0x18, 0, 0},
8999         {0x3F, 0, 0, 0, 0},
9000         {0x40, 0, 0, 0, 0},
9001         {0x41, 0x20, 0x20, 0, 0},
9002         {0x42, 0x20, 0x20, 0, 0},
9003         {0x43, 0, 0, 0, 0},
9004         {0x44, 0x77, 0x77, 0, 0},
9005         {0x45, 0x7, 0x7, 0, 0},
9006         {0x46, 0x1, 0x1, 0, 0},
9007         {0x47, 0x4, 0x4, 0, 0},
9008         {0x48, 0xf, 0xf, 0, 0},
9009         {0x49, 0x30, 0x30, 0, 0},
9010         {0x4A, 0x32, 0x32, 0, 0},
9011         {0x4B, 0xd, 0xd, 0, 0},
9012         {0x4C, 0xd, 0xd, 0, 0},
9013         {0x4D, 0x4, 0x4, 0, 0},
9014         {0x4E, 0x6, 0x6, 0, 0},
9015         {0x4F, 0x1, 0x1, 0, 0},
9016         {0x50, 0x1c, 0x1c, 0, 0},
9017         {0x51, 0x2, 0x2, 0, 0},
9018         {0x52, 0x2, 0x2, 0, 0},
9019         {0x53, 0xf7, 0xf7, 1, 1},
9020         {0x54, 0xb4, 0xb4, 0, 0},
9021         {0x55, 0xd2, 0xd2, 0, 0},
9022         {0x56, 0, 0, 0, 0},
9023         {0x57, 0, 0, 0, 0},
9024         {0x58, 0x4, 0x4, 0, 0},
9025         {0x59, 0x96, 0x96, 0, 0},
9026         {0x5A, 0x3e, 0x3e, 0, 0},
9027         {0x5B, 0x3e, 0x3e, 0, 0},
9028         {0x5C, 0x13, 0x13, 0, 0},
9029         {0x5D, 0x2, 0x2, 0, 0},
9030         {0x5E, 0, 0, 0, 0},
9031         {0x5F, 0x7, 0x7, 0, 0},
9032         {0x60, 0x7, 0x7, 1, 1},
9033         {0x61, 0x8, 0x8, 0, 0},
9034         {0x62, 0x3, 0x3, 0, 0},
9035         {0x63, 0, 0, 0, 0},
9036         {0x64, 0, 0, 0, 0},
9037         {0x65, 0, 0, 0, 0},
9038         {0x66, 0, 0, 0, 0},
9039         {0x67, 0, 0, 0, 0},
9040         {0x68, 0x40, 0x40, 0, 0},
9041         {0x69, 0, 0, 0, 0},
9042         {0x6A, 0, 0, 0, 0},
9043         {0x6B, 0, 0, 0, 0},
9044         {0x6C, 0, 0, 0, 0},
9045         {0x6D, 0x1, 0x1, 0, 0},
9046         {0x6E, 0, 0, 0, 0},
9047         {0x6F, 0, 0, 0, 0},
9048         {0x70, 0x60, 0x60, 0, 0},
9049         {0x71, 0x66, 0x66, 0, 0},
9050         {0x72, 0xc, 0xc, 0, 0},
9051         {0x73, 0x66, 0x66, 0, 0},
9052         {0x74, 0x8f, 0x8f, 1, 1},
9053         {0x75, 0, 0, 0, 0},
9054         {0x76, 0xcc, 0xcc, 0, 0},
9055         {0x77, 0x1, 0x1, 0, 0},
9056         {0x78, 0x66, 0x66, 0, 0},
9057         {0x79, 0x66, 0x66, 0, 0},
9058         {0x7A, 0, 0, 0, 0},
9059         {0x7B, 0, 0, 0, 0},
9060         {0x7C, 0, 0, 0, 0},
9061         {0x7D, 0, 0, 0, 0},
9062         {0x7E, 0, 0, 0, 0},
9063         {0x7F, 0, 0, 0, 0},
9064         {0x80, 0, 0, 0, 0},
9065         {0x81, 0, 0, 0, 0},
9066         {0x82, 0, 0, 0, 0},
9067         {0x83, 0, 0, 0, 0},
9068         {0x84, 0, 0, 0, 0},
9069         {0x85, 0xff, 0xff, 0, 0},
9070         {0x86, 0, 0, 0, 0},
9071         {0x87, 0, 0, 0, 0},
9072         {0x88, 0, 0, 0, 0},
9073         {0x89, 0, 0, 0, 0},
9074         {0x8A, 0, 0, 0, 0},
9075         {0x8B, 0, 0, 0, 0},
9076         {0x8C, 0, 0, 0, 0},
9077         {0x8D, 0, 0, 0, 0},
9078         {0x8E, 0, 0, 0, 0},
9079         {0x8F, 0, 0, 0, 0},
9080         {0x90, 0, 0, 0, 0},
9081         {0x91, 0, 0, 0, 0},
9082         {0x92, 0, 0, 0, 0},
9083         {0x93, 0, 0, 0, 0},
9084         {0x94, 0, 0, 0, 0},
9085         {0x95, 0, 0, 0, 0},
9086         {0x96, 0, 0, 0, 0},
9087         {0x97, 0, 0, 0, 0},
9088         {0x98, 0, 0, 0, 0},
9089         {0x99, 0, 0, 0, 0},
9090         {0x9A, 0, 0, 0, 0},
9091         {0x9B, 0, 0, 0, 0},
9092         {0x9C, 0, 0, 0, 0},
9093         {0x9D, 0, 0, 0, 0},
9094         {0x9E, 0, 0, 0, 0},
9095         {0x9F, 0x6, 0x6, 0, 0},
9096         {0xA0, 0x66, 0x66, 0, 0},
9097         {0xA1, 0x66, 0x66, 0, 0},
9098         {0xA2, 0x66, 0x66, 0, 0},
9099         {0xA3, 0x66, 0x66, 0, 0},
9100         {0xA4, 0x66, 0x66, 0, 0},
9101         {0xA5, 0x66, 0x66, 0, 0},
9102         {0xA6, 0x66, 0x66, 0, 0},
9103         {0xA7, 0x66, 0x66, 0, 0},
9104         {0xA8, 0x66, 0x66, 0, 0},
9105         {0xA9, 0x66, 0x66, 0, 0},
9106         {0xAA, 0x66, 0x66, 0, 0},
9107         {0xAB, 0x66, 0x66, 0, 0},
9108         {0xAC, 0x66, 0x66, 0, 0},
9109         {0xAD, 0x66, 0x66, 0, 0},
9110         {0xAE, 0x66, 0x66, 0, 0},
9111         {0xAF, 0x66, 0x66, 0, 0},
9112         {0xB0, 0x66, 0x66, 0, 0},
9113         {0xB1, 0x66, 0x66, 0, 0},
9114         {0xB2, 0x66, 0x66, 0, 0},
9115         {0xB3, 0xa, 0xa, 0, 0},
9116         {0xB4, 0, 0, 0, 0},
9117         {0xB5, 0, 0, 0, 0},
9118         {0xB6, 0, 0, 0, 0},
9119         {0xFFFF, 0, 0, 0, 0}
9120 };
9121
9122 radio_regs_t regs_TX_2056_rev5[] = {
9123         {0x02, 0, 0, 0, 0},
9124         {0x03, 0, 0, 0, 0},
9125         {0x04, 0, 0, 0, 0},
9126         {0x05, 0, 0, 0, 0},
9127         {0x06, 0, 0, 0, 0},
9128         {0x07, 0, 0, 0, 0},
9129         {0x08, 0, 0, 0, 0},
9130         {0x09, 0, 0, 0, 0},
9131         {0x0A, 0, 0, 0, 0},
9132         {0x0B, 0, 0, 0, 0},
9133         {0x0C, 0, 0, 0, 0},
9134         {0x0D, 0, 0, 0, 0},
9135         {0x0E, 0, 0, 0, 0},
9136         {0x0F, 0, 0, 0, 0},
9137         {0x10, 0, 0, 0, 0},
9138         {0x11, 0, 0, 0, 0},
9139         {0x12, 0, 0, 0, 0},
9140         {0x13, 0, 0, 0, 0},
9141         {0x14, 0, 0, 0, 0},
9142         {0x15, 0, 0, 0, 0},
9143         {0x16, 0, 0, 0, 0},
9144         {0x17, 0, 0, 0, 0},
9145         {0x18, 0, 0, 0, 0},
9146         {0x19, 0, 0, 0, 0},
9147         {0x1A, 0, 0, 0, 0},
9148         {0x1B, 0, 0, 0, 0},
9149         {0x1C, 0, 0, 0, 0},
9150         {0x1D, 0, 0, 0, 0},
9151         {0x1E, 0, 0, 0, 0},
9152         {0x1F, 0, 0, 0, 0},
9153         {0x20, 0, 0, 0, 0},
9154         {0x21, 0x88, 0x88, 0, 0},
9155         {0x22, 0x88, 0x88, 0, 0},
9156         {0x23, 0x88, 0x88, 0, 0},
9157         {0x24, 0x88, 0x88, 0, 0},
9158         {0x25, 0xc, 0xc, 0, 0},
9159         {0x26, 0, 0, 0, 0},
9160         {0x27, 0x3, 0x3, 0, 0},
9161         {0x28, 0, 0, 0, 0},
9162         {0x29, 0x3, 0x3, 0, 0},
9163         {0x2A, 0x37, 0x37, 0, 0},
9164         {0x2B, 0x3, 0x3, 0, 0},
9165         {0x2C, 0, 0, 0, 0},
9166         {0x2D, 0, 0, 0, 0},
9167         {0x2E, 0x1, 0x1, 0, 0},
9168         {0x2F, 0x1, 0x1, 0, 0},
9169         {0x30, 0, 0, 0, 0},
9170         {0x31, 0, 0, 0, 0},
9171         {0x32, 0, 0, 0, 0},
9172         {0x33, 0x11, 0x11, 0, 0},
9173         {0x34, 0x11, 0x11, 0, 0},
9174         {0x35, 0, 0, 0, 0},
9175         {0x36, 0, 0, 0, 0},
9176         {0x37, 0x3, 0x3, 0, 0},
9177         {0x38, 0xf, 0xf, 0, 0},
9178         {0x39, 0, 0, 0, 0},
9179         {0x3A, 0x2d, 0x2d, 0, 0},
9180         {0x3B, 0, 0, 0, 0},
9181         {0x3C, 0x6e, 0x6e, 0, 0},
9182         {0x3D, 0xf0, 0xf0, 1, 1},
9183         {0x3E, 0, 0, 0, 0},
9184         {0x3F, 0, 0, 0, 0},
9185         {0x40, 0, 0, 0, 0},
9186         {0x41, 0x3, 0x3, 0, 0},
9187         {0x42, 0x3, 0x3, 0, 0},
9188         {0x43, 0, 0, 0, 0},
9189         {0x44, 0x1e, 0x1e, 0, 0},
9190         {0x45, 0, 0, 0, 0},
9191         {0x46, 0x6e, 0x6e, 0, 0},
9192         {0x47, 0xf0, 0xf0, 1, 1},
9193         {0x48, 0, 0, 0, 0},
9194         {0x49, 0x2, 0x2, 0, 0},
9195         {0x4A, 0xff, 0xff, 1, 1},
9196         {0x4B, 0xc, 0xc, 0, 0},
9197         {0x4C, 0, 0, 0, 0},
9198         {0x4D, 0x38, 0x38, 0, 0},
9199         {0x4E, 0x70, 0x70, 1, 1},
9200         {0x4F, 0x2, 0x2, 0, 0},
9201         {0x50, 0x88, 0x88, 0, 0},
9202         {0x51, 0xc, 0xc, 0, 0},
9203         {0x52, 0, 0, 0, 0},
9204         {0x53, 0x8, 0x8, 0, 0},
9205         {0x54, 0x70, 0x70, 1, 1},
9206         {0x55, 0x2, 0x2, 0, 0},
9207         {0x56, 0xff, 0xff, 1, 1},
9208         {0x57, 0, 0, 0, 0},
9209         {0x58, 0x83, 0x83, 0, 0},
9210         {0x59, 0x77, 0x77, 1, 1},
9211         {0x5A, 0, 0, 0, 0},
9212         {0x5B, 0x2, 0x2, 0, 0},
9213         {0x5C, 0x88, 0x88, 0, 0},
9214         {0x5D, 0, 0, 0, 0},
9215         {0x5E, 0x8, 0x8, 0, 0},
9216         {0x5F, 0x77, 0x77, 1, 1},
9217         {0x60, 0x1, 0x1, 0, 0},
9218         {0x61, 0, 0, 0, 0},
9219         {0x62, 0x7, 0x7, 0, 0},
9220         {0x63, 0, 0, 0, 0},
9221         {0x64, 0x7, 0x7, 0, 0},
9222         {0x65, 0, 0, 0, 0},
9223         {0x66, 0, 0, 0, 0},
9224         {0x67, 0, 0, 1, 1},
9225         {0x68, 0, 0, 0, 0},
9226         {0x69, 0xa, 0xa, 0, 0},
9227         {0x6A, 0, 0, 0, 0},
9228         {0x6B, 0, 0, 0, 0},
9229         {0x6C, 0, 0, 0, 0},
9230         {0x6D, 0, 0, 0, 0},
9231         {0x6E, 0, 0, 0, 0},
9232         {0x6F, 0, 0, 0, 0},
9233         {0x70, 0, 0, 0, 0},
9234         {0x71, 0x2, 0x2, 0, 0},
9235         {0x72, 0, 0, 0, 0},
9236         {0x73, 0, 0, 0, 0},
9237         {0x74, 0xe, 0xe, 0, 0},
9238         {0x75, 0xe, 0xe, 0, 0},
9239         {0x76, 0xe, 0xe, 0, 0},
9240         {0x77, 0x13, 0x13, 0, 0},
9241         {0x78, 0x13, 0x13, 0, 0},
9242         {0x79, 0x1b, 0x1b, 0, 0},
9243         {0x7A, 0x1b, 0x1b, 0, 0},
9244         {0x7B, 0x55, 0x55, 0, 0},
9245         {0x7C, 0x5b, 0x5b, 0, 0},
9246         {0x7D, 0, 0, 0, 0},
9247         {0x7E, 0, 0, 0, 0},
9248         {0x7F, 0, 0, 0, 0},
9249         {0x80, 0, 0, 0, 0},
9250         {0x81, 0, 0, 0, 0},
9251         {0x82, 0, 0, 0, 0},
9252         {0x83, 0, 0, 0, 0},
9253         {0x84, 0, 0, 0, 0},
9254         {0x85, 0, 0, 0, 0},
9255         {0x86, 0, 0, 0, 0},
9256         {0x87, 0, 0, 0, 0},
9257         {0x88, 0, 0, 0, 0},
9258         {0x89, 0, 0, 0, 0},
9259         {0x8A, 0, 0, 0, 0},
9260         {0x8B, 0, 0, 0, 0},
9261         {0x8C, 0, 0, 0, 0},
9262         {0x8D, 0, 0, 0, 0},
9263         {0x8E, 0, 0, 0, 0},
9264         {0x8F, 0, 0, 0, 0},
9265         {0x90, 0, 0, 0, 0},
9266         {0x91, 0, 0, 0, 0},
9267         {0x92, 0, 0, 0, 0},
9268         {0x93, 0x70, 0x70, 0, 0},
9269         {0x94, 0x70, 0x70, 0, 0},
9270         {0x95, 0x71, 0x71, 1, 1},
9271         {0x96, 0x71, 0x71, 1, 1},
9272         {0x97, 0x72, 0x72, 1, 1},
9273         {0x98, 0x73, 0x73, 1, 1},
9274         {0x99, 0x74, 0x74, 1, 1},
9275         {0x9A, 0x75, 0x75, 1, 1},
9276         {0xFFFF, 0, 0, 0, 0}
9277 };
9278
9279 radio_regs_t regs_RX_2056_rev5[] = {
9280         {0x02, 0, 0, 0, 0},
9281         {0x03, 0, 0, 0, 0},
9282         {0x04, 0, 0, 0, 0},
9283         {0x05, 0, 0, 0, 0},
9284         {0x06, 0, 0, 0, 0},
9285         {0x07, 0, 0, 0, 0},
9286         {0x08, 0, 0, 0, 0},
9287         {0x09, 0, 0, 0, 0},
9288         {0x0A, 0, 0, 0, 0},
9289         {0x0B, 0, 0, 0, 0},
9290         {0x0C, 0, 0, 0, 0},
9291         {0x0D, 0, 0, 0, 0},
9292         {0x0E, 0, 0, 0, 0},
9293         {0x0F, 0, 0, 0, 0},
9294         {0x10, 0, 0, 0, 0},
9295         {0x11, 0, 0, 0, 0},
9296         {0x12, 0, 0, 0, 0},
9297         {0x13, 0, 0, 0, 0},
9298         {0x14, 0, 0, 0, 0},
9299         {0x15, 0, 0, 0, 0},
9300         {0x16, 0, 0, 0, 0},
9301         {0x17, 0, 0, 0, 0},
9302         {0x18, 0, 0, 0, 0},
9303         {0x19, 0, 0, 0, 0},
9304         {0x1A, 0, 0, 0, 0},
9305         {0x1B, 0, 0, 0, 0},
9306         {0x1C, 0, 0, 0, 0},
9307         {0x1D, 0, 0, 0, 0},
9308         {0x1E, 0, 0, 0, 0},
9309         {0x1F, 0, 0, 0, 0},
9310         {0x20, 0x3, 0x3, 0, 0},
9311         {0x21, 0, 0, 0, 0},
9312         {0x22, 0, 0, 0, 0},
9313         {0x23, 0x90, 0x90, 0, 0},
9314         {0x24, 0x55, 0x55, 0, 0},
9315         {0x25, 0x15, 0x15, 0, 0},
9316         {0x26, 0x5, 0x5, 0, 0},
9317         {0x27, 0x15, 0x15, 0, 0},
9318         {0x28, 0x5, 0x5, 0, 0},
9319         {0x29, 0x20, 0x20, 0, 0},
9320         {0x2A, 0x11, 0x11, 0, 0},
9321         {0x2B, 0x90, 0x90, 0, 0},
9322         {0x2C, 0, 0, 0, 0},
9323         {0x2D, 0x88, 0x88, 0, 0},
9324         {0x2E, 0x32, 0x32, 0, 0},
9325         {0x2F, 0x77, 0x77, 0, 0},
9326         {0x30, 0x17, 0x17, 1, 1},
9327         {0x31, 0xff, 0xff, 1, 1},
9328         {0x32, 0x20, 0x20, 0, 0},
9329         {0x33, 0, 0, 0, 0},
9330         {0x34, 0x88, 0x88, 0, 0},
9331         {0x35, 0x32, 0x32, 0, 0},
9332         {0x36, 0x77, 0x77, 0, 0},
9333         {0x37, 0x17, 0x17, 1, 1},
9334         {0x38, 0xf0, 0xf0, 1, 1},
9335         {0x39, 0x20, 0x20, 0, 0},
9336         {0x3A, 0x8, 0x8, 0, 0},
9337         {0x3B, 0x55, 0x55, 1, 1},
9338         {0x3C, 0, 0, 0, 0},
9339         {0x3D, 0x88, 0x88, 1, 1},
9340         {0x3E, 0, 0, 0, 0},
9341         {0x3F, 0, 0, 1, 1},
9342         {0x40, 0x7, 0x7, 1, 1},
9343         {0x41, 0x6, 0x6, 0, 0},
9344         {0x42, 0x4, 0x4, 0, 0},
9345         {0x43, 0, 0, 0, 0},
9346         {0x44, 0x8, 0x8, 0, 0},
9347         {0x45, 0x55, 0x55, 1, 1},
9348         {0x46, 0, 0, 0, 0},
9349         {0x47, 0x11, 0x11, 0, 0},
9350         {0x48, 0, 0, 0, 0},
9351         {0x49, 0, 0, 1, 1},
9352         {0x4A, 0x7, 0x7, 0, 0},
9353         {0x4B, 0x6, 0x6, 0, 0},
9354         {0x4C, 0x4, 0x4, 0, 0},
9355         {0x4D, 0, 0, 0, 0},
9356         {0x4E, 0, 0, 0, 0},
9357         {0x4F, 0x26, 0x26, 1, 1},
9358         {0x50, 0x26, 0x26, 1, 1},
9359         {0x51, 0xf, 0xf, 1, 1},
9360         {0x52, 0xf, 0xf, 1, 1},
9361         {0x53, 0x44, 0x44, 0, 0},
9362         {0x54, 0, 0, 0, 0},
9363         {0x55, 0, 0, 0, 0},
9364         {0x56, 0x8, 0x8, 0, 0},
9365         {0x57, 0x8, 0x8, 0, 0},
9366         {0x58, 0x7, 0x7, 0, 0},
9367         {0x59, 0x22, 0x22, 0, 0},
9368         {0x5A, 0x22, 0x22, 0, 0},
9369         {0x5B, 0x2, 0x2, 0, 0},
9370         {0x5C, 0x4, 0x4, 1, 1},
9371         {0x5D, 0x7, 0x7, 0, 0},
9372         {0x5E, 0x55, 0x55, 0, 0},
9373         {0x5F, 0x23, 0x23, 0, 0},
9374         {0x60, 0x41, 0x41, 0, 0},
9375         {0x61, 0x1, 0x1, 0, 0},
9376         {0x62, 0xa, 0xa, 0, 0},
9377         {0x63, 0, 0, 0, 0},
9378         {0x64, 0, 0, 0, 0},
9379         {0x65, 0, 0, 0, 0},
9380         {0x66, 0, 0, 0, 0},
9381         {0x67, 0, 0, 0, 0},
9382         {0x68, 0, 0, 0, 0},
9383         {0x69, 0, 0, 0, 0},
9384         {0x6A, 0, 0, 0, 0},
9385         {0x6B, 0xc, 0xc, 0, 0},
9386         {0x6C, 0, 0, 0, 0},
9387         {0x6D, 0, 0, 0, 0},
9388         {0x6E, 0, 0, 0, 0},
9389         {0x6F, 0, 0, 0, 0},
9390         {0x70, 0, 0, 0, 0},
9391         {0x71, 0, 0, 0, 0},
9392         {0x72, 0x22, 0x22, 0, 0},
9393         {0x73, 0x22, 0x22, 0, 0},
9394         {0x74, 0, 0, 1, 1},
9395         {0x75, 0xa, 0xa, 0, 0},
9396         {0x76, 0x1, 0x1, 0, 0},
9397         {0x77, 0x22, 0x22, 0, 0},
9398         {0x78, 0x30, 0x30, 0, 0},
9399         {0x79, 0, 0, 0, 0},
9400         {0x7A, 0, 0, 0, 0},
9401         {0x7B, 0, 0, 0, 0},
9402         {0x7C, 0, 0, 0, 0},
9403         {0x7D, 0, 0, 0, 0},
9404         {0x7E, 0, 0, 0, 0},
9405         {0x7F, 0, 0, 0, 0},
9406         {0x80, 0, 0, 0, 0},
9407         {0x81, 0, 0, 0, 0},
9408         {0x82, 0, 0, 0, 0},
9409         {0x83, 0, 0, 0, 0},
9410         {0x84, 0, 0, 0, 0},
9411         {0x85, 0, 0, 0, 0},
9412         {0x86, 0, 0, 0, 0},
9413         {0x87, 0, 0, 0, 0},
9414         {0x88, 0, 0, 0, 0},
9415         {0x89, 0, 0, 0, 0},
9416         {0x8A, 0, 0, 0, 0},
9417         {0x8B, 0, 0, 0, 0},
9418         {0x8C, 0, 0, 0, 0},
9419         {0x8D, 0, 0, 0, 0},
9420         {0x8E, 0, 0, 0, 0},
9421         {0x8F, 0, 0, 0, 0},
9422         {0x90, 0, 0, 0, 0},
9423         {0x91, 0, 0, 0, 0},
9424         {0x92, 0, 0, 0, 0},
9425         {0x93, 0, 0, 0, 0},
9426         {0x94, 0, 0, 0, 0},
9427         {0xFFFF, 0, 0, 0, 0}
9428 };
9429
9430 radio_regs_t regs_SYN_2056_rev6[] = {
9431         {0x02, 0, 0, 0, 0},
9432         {0x03, 0, 0, 0, 0},
9433         {0x04, 0, 0, 0, 0},
9434         {0x05, 0, 0, 0, 0},
9435         {0x06, 0, 0, 0, 0},
9436         {0x07, 0, 0, 0, 0},
9437         {0x08, 0, 0, 0, 0},
9438         {0x09, 0x1, 0x1, 0, 0},
9439         {0x0A, 0, 0, 0, 0},
9440         {0x0B, 0, 0, 0, 0},
9441         {0x0C, 0, 0, 0, 0},
9442         {0x0D, 0, 0, 0, 0},
9443         {0x0E, 0, 0, 0, 0},
9444         {0x0F, 0, 0, 0, 0},
9445         {0x10, 0, 0, 0, 0},
9446         {0x11, 0, 0, 0, 0},
9447         {0x12, 0, 0, 0, 0},
9448         {0x13, 0, 0, 0, 0},
9449         {0x14, 0, 0, 0, 0},
9450         {0x15, 0, 0, 0, 0},
9451         {0x16, 0, 0, 0, 0},
9452         {0x17, 0, 0, 0, 0},
9453         {0x18, 0, 0, 0, 0},
9454         {0x19, 0, 0, 0, 0},
9455         {0x1A, 0, 0, 0, 0},
9456         {0x1B, 0, 0, 0, 0},
9457         {0x1C, 0, 0, 0, 0},
9458         {0x1D, 0, 0, 0, 0},
9459         {0x1E, 0, 0, 0, 0},
9460         {0x1F, 0, 0, 0, 0},
9461         {0x20, 0, 0, 0, 0},
9462         {0x21, 0, 0, 0, 0},
9463         {0x22, 0x60, 0x60, 0, 0},
9464         {0x23, 0x6, 0x6, 0, 0},
9465         {0x24, 0xc, 0xc, 0, 0},
9466         {0x25, 0, 0, 0, 0},
9467         {0x26, 0, 0, 0, 0},
9468         {0x27, 0, 0, 0, 0},
9469         {0x28, 0x1, 0x1, 0, 0},
9470         {0x29, 0, 0, 0, 0},
9471         {0x2A, 0, 0, 0, 0},
9472         {0x2B, 0, 0, 0, 0},
9473         {0x2C, 0, 0, 0, 0},
9474         {0x2D, 0, 0, 0, 0},
9475         {0x2E, 0, 0, 0, 0},
9476         {0x2F, 0x1f, 0x1f, 0, 0},
9477         {0x30, 0x15, 0x15, 0, 0},
9478         {0x31, 0xf, 0xf, 0, 0},
9479         {0x32, 0, 0, 0, 0},
9480         {0x33, 0, 0, 0, 0},
9481         {0x34, 0, 0, 0, 0},
9482         {0x35, 0, 0, 0, 0},
9483         {0x36, 0, 0, 0, 0},
9484         {0x37, 0, 0, 0, 0},
9485         {0x38, 0, 0, 0, 0},
9486         {0x39, 0, 0, 0, 0},
9487         {0x3A, 0, 0, 0, 0},
9488         {0x3B, 0, 0, 0, 0},
9489         {0x3C, 0x13, 0x13, 0, 0},
9490         {0x3D, 0xf, 0xf, 0, 0},
9491         {0x3E, 0x18, 0x18, 0, 0},
9492         {0x3F, 0, 0, 0, 0},
9493         {0x40, 0, 0, 0, 0},
9494         {0x41, 0x20, 0x20, 0, 0},
9495         {0x42, 0x20, 0x20, 0, 0},
9496         {0x43, 0, 0, 0, 0},
9497         {0x44, 0x77, 0x77, 0, 0},
9498         {0x45, 0x7, 0x7, 0, 0},
9499         {0x46, 0x1, 0x1, 0, 0},
9500         {0x47, 0x4, 0x4, 0, 0},
9501         {0x48, 0xf, 0xf, 0, 0},
9502         {0x49, 0x30, 0x30, 0, 0},
9503         {0x4A, 0x32, 0x32, 0, 0},
9504         {0x4B, 0xd, 0xd, 0, 0},
9505         {0x4C, 0xd, 0xd, 0, 0},
9506         {0x4D, 0x4, 0x4, 0, 0},
9507         {0x4E, 0x6, 0x6, 0, 0},
9508         {0x4F, 0x1, 0x1, 0, 0},
9509         {0x50, 0x1c, 0x1c, 0, 0},
9510         {0x51, 0x2, 0x2, 0, 0},
9511         {0x52, 0x2, 0x2, 0, 0},
9512         {0x53, 0xf7, 0xf7, 1, 1},
9513         {0x54, 0xb4, 0xb4, 0, 0},
9514         {0x55, 0xd2, 0xd2, 0, 0},
9515         {0x56, 0, 0, 0, 0},
9516         {0x57, 0, 0, 0, 0},
9517         {0x58, 0x4, 0x4, 0, 0},
9518         {0x59, 0x96, 0x96, 0, 0},
9519         {0x5A, 0x3e, 0x3e, 0, 0},
9520         {0x5B, 0x3e, 0x3e, 0, 0},
9521         {0x5C, 0x13, 0x13, 0, 0},
9522         {0x5D, 0x2, 0x2, 0, 0},
9523         {0x5E, 0, 0, 0, 0},
9524         {0x5F, 0x7, 0x7, 0, 0},
9525         {0x60, 0x7, 0x7, 1, 1},
9526         {0x61, 0x8, 0x8, 0, 0},
9527         {0x62, 0x3, 0x3, 0, 0},
9528         {0x63, 0, 0, 0, 0},
9529         {0x64, 0, 0, 0, 0},
9530         {0x65, 0, 0, 0, 0},
9531         {0x66, 0, 0, 0, 0},
9532         {0x67, 0, 0, 0, 0},
9533         {0x68, 0x40, 0x40, 0, 0},
9534         {0x69, 0, 0, 0, 0},
9535         {0x6A, 0, 0, 0, 0},
9536         {0x6B, 0, 0, 0, 0},
9537         {0x6C, 0, 0, 0, 0},
9538         {0x6D, 0x1, 0x1, 0, 0},
9539         {0x6E, 0, 0, 0, 0},
9540         {0x6F, 0, 0, 0, 0},
9541         {0x70, 0x60, 0x60, 0, 0},
9542         {0x71, 0x66, 0x66, 0, 0},
9543         {0x72, 0xc, 0xc, 0, 0},
9544         {0x73, 0x66, 0x66, 0, 0},
9545         {0x74, 0x8f, 0x8f, 1, 1},
9546         {0x75, 0, 0, 0, 0},
9547         {0x76, 0xcc, 0xcc, 0, 0},
9548         {0x77, 0x1, 0x1, 0, 0},
9549         {0x78, 0x66, 0x66, 0, 0},
9550         {0x79, 0x66, 0x66, 0, 0},
9551         {0x7A, 0, 0, 0, 0},
9552         {0x7B, 0, 0, 0, 0},
9553         {0x7C, 0, 0, 0, 0},
9554         {0x7D, 0, 0, 0, 0},
9555         {0x7E, 0, 0, 0, 0},
9556         {0x7F, 0, 0, 0, 0},
9557         {0x80, 0, 0, 0, 0},
9558         {0x81, 0, 0, 0, 0},
9559         {0x82, 0, 0, 0, 0},
9560         {0x83, 0, 0, 0, 0},
9561         {0x84, 0, 0, 0, 0},
9562         {0x85, 0xff, 0xff, 0, 0},
9563         {0x86, 0, 0, 0, 0},
9564         {0x87, 0, 0, 0, 0},
9565         {0x88, 0, 0, 0, 0},
9566         {0x89, 0, 0, 0, 0},
9567         {0x8A, 0, 0, 0, 0},
9568         {0x8B, 0, 0, 0, 0},
9569         {0x8C, 0, 0, 0, 0},
9570         {0x8D, 0, 0, 0, 0},
9571         {0x8E, 0, 0, 0, 0},
9572         {0x8F, 0, 0, 0, 0},
9573         {0x90, 0, 0, 0, 0},
9574         {0x91, 0, 0, 0, 0},
9575         {0x92, 0, 0, 0, 0},
9576         {0x93, 0, 0, 0, 0},
9577         {0x94, 0, 0, 0, 0},
9578         {0x95, 0, 0, 0, 0},
9579         {0x96, 0, 0, 0, 0},
9580         {0x97, 0, 0, 0, 0},
9581         {0x98, 0, 0, 0, 0},
9582         {0x99, 0, 0, 0, 0},
9583         {0x9A, 0, 0, 0, 0},
9584         {0x9B, 0, 0, 0, 0},
9585         {0x9C, 0, 0, 0, 0},
9586         {0x9D, 0, 0, 0, 0},
9587         {0x9E, 0, 0, 0, 0},
9588         {0x9F, 0x6, 0x6, 0, 0},
9589         {0xA0, 0x66, 0x66, 0, 0},
9590         {0xA1, 0x66, 0x66, 0, 0},
9591         {0xA2, 0x66, 0x66, 0, 0},
9592         {0xA3, 0x66, 0x66, 0, 0},
9593         {0xA4, 0x66, 0x66, 0, 0},
9594         {0xA5, 0x66, 0x66, 0, 0},
9595         {0xA6, 0x66, 0x66, 0, 0},
9596         {0xA7, 0x66, 0x66, 0, 0},
9597         {0xA8, 0x66, 0x66, 0, 0},
9598         {0xA9, 0x66, 0x66, 0, 0},
9599         {0xAA, 0x66, 0x66, 0, 0},
9600         {0xAB, 0x66, 0x66, 0, 0},
9601         {0xAC, 0x66, 0x66, 0, 0},
9602         {0xAD, 0x66, 0x66, 0, 0},
9603         {0xAE, 0x66, 0x66, 0, 0},
9604         {0xAF, 0x66, 0x66, 0, 0},
9605         {0xB0, 0x66, 0x66, 0, 0},
9606         {0xB1, 0x66, 0x66, 0, 0},
9607         {0xB2, 0x66, 0x66, 0, 0},
9608         {0xB3, 0xa, 0xa, 0, 0},
9609         {0xB4, 0, 0, 0, 0},
9610         {0xB5, 0, 0, 0, 0},
9611         {0xB6, 0, 0, 0, 0},
9612         {0xFFFF, 0, 0, 0, 0}
9613 };
9614
9615 radio_regs_t regs_TX_2056_rev6[] = {
9616         {0x02, 0, 0, 0, 0},
9617         {0x03, 0, 0, 0, 0},
9618         {0x04, 0, 0, 0, 0},
9619         {0x05, 0, 0, 0, 0},
9620         {0x06, 0, 0, 0, 0},
9621         {0x07, 0, 0, 0, 0},
9622         {0x08, 0, 0, 0, 0},
9623         {0x09, 0, 0, 0, 0},
9624         {0x0A, 0, 0, 0, 0},
9625         {0x0B, 0, 0, 0, 0},
9626         {0x0C, 0, 0, 0, 0},
9627         {0x0D, 0, 0, 0, 0},
9628         {0x0E, 0, 0, 0, 0},
9629         {0x0F, 0, 0, 0, 0},
9630         {0x10, 0, 0, 0, 0},
9631         {0x11, 0, 0, 0, 0},
9632         {0x12, 0, 0, 0, 0},
9633         {0x13, 0, 0, 0, 0},
9634         {0x14, 0, 0, 0, 0},
9635         {0x15, 0, 0, 0, 0},
9636         {0x16, 0, 0, 0, 0},
9637         {0x17, 0, 0, 0, 0},
9638         {0x18, 0, 0, 0, 0},
9639         {0x19, 0, 0, 0, 0},
9640         {0x1A, 0, 0, 0, 0},
9641         {0x1B, 0, 0, 0, 0},
9642         {0x1C, 0, 0, 0, 0},
9643         {0x1D, 0, 0, 0, 0},
9644         {0x1E, 0, 0, 0, 0},
9645         {0x1F, 0, 0, 0, 0},
9646         {0x20, 0, 0, 0, 0},
9647         {0x21, 0x88, 0x88, 0, 0},
9648         {0x22, 0x88, 0x88, 0, 0},
9649         {0x23, 0x88, 0x88, 0, 0},
9650         {0x24, 0x88, 0x88, 0, 0},
9651         {0x25, 0xc, 0xc, 0, 0},
9652         {0x26, 0, 0, 0, 0},
9653         {0x27, 0x3, 0x3, 0, 0},
9654         {0x28, 0, 0, 0, 0},
9655         {0x29, 0x3, 0x3, 0, 0},
9656         {0x2A, 0x37, 0x37, 0, 0},
9657         {0x2B, 0x3, 0x3, 0, 0},
9658         {0x2C, 0, 0, 0, 0},
9659         {0x2D, 0, 0, 0, 0},
9660         {0x2E, 0x1, 0x1, 0, 0},
9661         {0x2F, 0x1, 0x1, 0, 0},
9662         {0x30, 0, 0, 0, 0},
9663         {0x31, 0, 0, 0, 0},
9664         {0x32, 0, 0, 0, 0},
9665         {0x33, 0x11, 0x11, 0, 0},
9666         {0x34, 0xee, 0xee, 1, 1},
9667         {0x35, 0, 0, 0, 0},
9668         {0x36, 0, 0, 0, 0},
9669         {0x37, 0x3, 0x3, 0, 0},
9670         {0x38, 0x50, 0x50, 1, 1},
9671         {0x39, 0, 0, 0, 0},
9672         {0x3A, 0x50, 0x50, 1, 1},
9673         {0x3B, 0, 0, 0, 0},
9674         {0x3C, 0x6e, 0x6e, 0, 0},
9675         {0x3D, 0xf0, 0xf0, 1, 1},
9676         {0x3E, 0, 0, 0, 0},
9677         {0x3F, 0, 0, 0, 0},
9678         {0x40, 0, 0, 0, 0},
9679         {0x41, 0x3, 0x3, 0, 0},
9680         {0x42, 0x3, 0x3, 0, 0},
9681         {0x43, 0, 0, 0, 0},
9682         {0x44, 0x1e, 0x1e, 0, 0},
9683         {0x45, 0, 0, 0, 0},
9684         {0x46, 0x6e, 0x6e, 0, 0},
9685         {0x47, 0xf0, 0xf0, 1, 1},
9686         {0x48, 0, 0, 0, 0},
9687         {0x49, 0x2, 0x2, 0, 0},
9688         {0x4A, 0xff, 0xff, 1, 1},
9689         {0x4B, 0xc, 0xc, 0, 0},
9690         {0x4C, 0, 0, 0, 0},
9691         {0x4D, 0x38, 0x38, 0, 0},
9692         {0x4E, 0x70, 0x70, 1, 1},
9693         {0x4F, 0x2, 0x2, 0, 0},
9694         {0x50, 0x88, 0x88, 0, 0},
9695         {0x51, 0xc, 0xc, 0, 0},
9696         {0x52, 0, 0, 0, 0},
9697         {0x53, 0x8, 0x8, 0, 0},
9698         {0x54, 0x70, 0x70, 1, 1},
9699         {0x55, 0x2, 0x2, 0, 0},
9700         {0x56, 0xff, 0xff, 1, 1},
9701         {0x57, 0, 0, 0, 0},
9702         {0x58, 0x83, 0x83, 0, 0},
9703         {0x59, 0x77, 0x77, 1, 1},
9704         {0x5A, 0, 0, 0, 0},
9705         {0x5B, 0x2, 0x2, 0, 0},
9706         {0x5C, 0x88, 0x88, 0, 0},
9707         {0x5D, 0, 0, 0, 0},
9708         {0x5E, 0x8, 0x8, 0, 0},
9709         {0x5F, 0x77, 0x77, 1, 1},
9710         {0x60, 0x1, 0x1, 0, 0},
9711         {0x61, 0, 0, 0, 0},
9712         {0x62, 0x7, 0x7, 0, 0},
9713         {0x63, 0, 0, 0, 0},
9714         {0x64, 0x7, 0x7, 0, 0},
9715         {0x65, 0, 0, 0, 0},
9716         {0x66, 0, 0, 0, 0},
9717         {0x67, 0, 0, 1, 1},
9718         {0x68, 0, 0, 0, 0},
9719         {0x69, 0xa, 0xa, 0, 0},
9720         {0x6A, 0, 0, 0, 0},
9721         {0x6B, 0, 0, 0, 0},
9722         {0x6C, 0, 0, 0, 0},
9723         {0x6D, 0, 0, 0, 0},
9724         {0x6E, 0, 0, 0, 0},
9725         {0x6F, 0, 0, 0, 0},
9726         {0x70, 0, 0, 0, 0},
9727         {0x71, 0x2, 0x2, 0, 0},
9728         {0x72, 0, 0, 0, 0},
9729         {0x73, 0, 0, 0, 0},
9730         {0x74, 0xe, 0xe, 0, 0},
9731         {0x75, 0xe, 0xe, 0, 0},
9732         {0x76, 0xe, 0xe, 0, 0},
9733         {0x77, 0x13, 0x13, 0, 0},
9734         {0x78, 0x13, 0x13, 0, 0},
9735         {0x79, 0x1b, 0x1b, 0, 0},
9736         {0x7A, 0x1b, 0x1b, 0, 0},
9737         {0x7B, 0x55, 0x55, 0, 0},
9738         {0x7C, 0x5b, 0x5b, 0, 0},
9739         {0x7D, 0x30, 0x30, 1, 1},
9740         {0x7E, 0, 0, 0, 0},
9741         {0x7F, 0, 0, 0, 0},
9742         {0x80, 0, 0, 0, 0},
9743         {0x81, 0, 0, 0, 0},
9744         {0x82, 0, 0, 0, 0},
9745         {0x83, 0, 0, 0, 0},
9746         {0x84, 0, 0, 0, 0},
9747         {0x85, 0, 0, 0, 0},
9748         {0x86, 0, 0, 0, 0},
9749         {0x87, 0, 0, 0, 0},
9750         {0x88, 0, 0, 0, 0},
9751         {0x89, 0, 0, 0, 0},
9752         {0x8A, 0, 0, 0, 0},
9753         {0x8B, 0, 0, 0, 0},
9754         {0x8C, 0, 0, 0, 0},
9755         {0x8D, 0, 0, 0, 0},
9756         {0x8E, 0, 0, 0, 0},
9757         {0x8F, 0, 0, 0, 0},
9758         {0x90, 0, 0, 0, 0},
9759         {0x91, 0, 0, 0, 0},
9760         {0x92, 0, 0, 0, 0},
9761         {0x93, 0x70, 0x70, 0, 0},
9762         {0x94, 0x70, 0x70, 0, 0},
9763         {0x95, 0x70, 0x70, 0, 0},
9764         {0x96, 0x70, 0x70, 0, 0},
9765         {0x97, 0x70, 0x70, 0, 0},
9766         {0x98, 0x70, 0x70, 0, 0},
9767         {0x99, 0x70, 0x70, 0, 0},
9768         {0x9A, 0x70, 0x70, 0, 0},
9769         {0xFFFF, 0, 0, 0, 0}
9770 };
9771
9772 radio_regs_t regs_RX_2056_rev6[] = {
9773         {0x02, 0, 0, 0, 0},
9774         {0x03, 0, 0, 0, 0},
9775         {0x04, 0, 0, 0, 0},
9776         {0x05, 0, 0, 0, 0},
9777         {0x06, 0, 0, 0, 0},
9778         {0x07, 0, 0, 0, 0},
9779         {0x08, 0, 0, 0, 0},
9780         {0x09, 0, 0, 0, 0},
9781         {0x0A, 0, 0, 0, 0},
9782         {0x0B, 0, 0, 0, 0},
9783         {0x0C, 0, 0, 0, 0},
9784         {0x0D, 0, 0, 0, 0},
9785         {0x0E, 0, 0, 0, 0},
9786         {0x0F, 0, 0, 0, 0},
9787         {0x10, 0, 0, 0, 0},
9788         {0x11, 0, 0, 0, 0},
9789         {0x12, 0, 0, 0, 0},
9790         {0x13, 0, 0, 0, 0},
9791         {0x14, 0, 0, 0, 0},
9792         {0x15, 0, 0, 0, 0},
9793         {0x16, 0, 0, 0, 0},
9794         {0x17, 0, 0, 0, 0},
9795         {0x18, 0, 0, 0, 0},
9796         {0x19, 0, 0, 0, 0},
9797         {0x1A, 0, 0, 0, 0},
9798         {0x1B, 0, 0, 0, 0},
9799         {0x1C, 0, 0, 0, 0},
9800         {0x1D, 0, 0, 0, 0},
9801         {0x1E, 0, 0, 0, 0},
9802         {0x1F, 0, 0, 0, 0},
9803         {0x20, 0x3, 0x3, 0, 0},
9804         {0x21, 0, 0, 0, 0},
9805         {0x22, 0, 0, 0, 0},
9806         {0x23, 0x90, 0x90, 0, 0},
9807         {0x24, 0x55, 0x55, 0, 0},
9808         {0x25, 0x15, 0x15, 0, 0},
9809         {0x26, 0x5, 0x5, 0, 0},
9810         {0x27, 0x15, 0x15, 0, 0},
9811         {0x28, 0x5, 0x5, 0, 0},
9812         {0x29, 0x20, 0x20, 0, 0},
9813         {0x2A, 0x11, 0x11, 0, 0},
9814         {0x2B, 0x90, 0x90, 0, 0},
9815         {0x2C, 0, 0, 0, 0},
9816         {0x2D, 0x88, 0x88, 0, 0},
9817         {0x2E, 0x32, 0x32, 0, 0},
9818         {0x2F, 0x77, 0x77, 0, 0},
9819         {0x30, 0x17, 0x17, 1, 1},
9820         {0x31, 0xff, 0xff, 1, 1},
9821         {0x32, 0x20, 0x20, 0, 0},
9822         {0x33, 0, 0, 0, 0},
9823         {0x34, 0x88, 0x88, 0, 0},
9824         {0x35, 0x32, 0x32, 0, 0},
9825         {0x36, 0x77, 0x77, 0, 0},
9826         {0x37, 0x17, 0x17, 1, 1},
9827         {0x38, 0xf0, 0xf0, 1, 1},
9828         {0x39, 0x20, 0x20, 0, 0},
9829         {0x3A, 0x8, 0x8, 0, 0},
9830         {0x3B, 0x55, 0x55, 1, 1},
9831         {0x3C, 0, 0, 0, 0},
9832         {0x3D, 0x88, 0x88, 1, 1},
9833         {0x3E, 0, 0, 0, 0},
9834         {0x3F, 0x44, 0x44, 0, 0},
9835         {0x40, 0x7, 0x7, 1, 1},
9836         {0x41, 0x6, 0x6, 0, 0},
9837         {0x42, 0x4, 0x4, 0, 0},
9838         {0x43, 0, 0, 0, 0},
9839         {0x44, 0x8, 0x8, 0, 0},
9840         {0x45, 0x55, 0x55, 1, 1},
9841         {0x46, 0, 0, 0, 0},
9842         {0x47, 0x11, 0x11, 0, 0},
9843         {0x48, 0, 0, 0, 0},
9844         {0x49, 0x44, 0x44, 0, 0},
9845         {0x4A, 0x7, 0x7, 0, 0},
9846         {0x4B, 0x6, 0x6, 0, 0},
9847         {0x4C, 0x4, 0x4, 0, 0},
9848         {0x4D, 0, 0, 0, 0},
9849         {0x4E, 0, 0, 0, 0},
9850         {0x4F, 0x26, 0x26, 1, 1},
9851         {0x50, 0x26, 0x26, 1, 1},
9852         {0x51, 0xf, 0xf, 1, 1},
9853         {0x52, 0xf, 0xf, 1, 1},
9854         {0x53, 0x44, 0x44, 0, 0},
9855         {0x54, 0, 0, 0, 0},
9856         {0x55, 0, 0, 0, 0},
9857         {0x56, 0x8, 0x8, 0, 0},
9858         {0x57, 0x8, 0x8, 0, 0},
9859         {0x58, 0x7, 0x7, 0, 0},
9860         {0x59, 0x22, 0x22, 0, 0},
9861         {0x5A, 0x22, 0x22, 0, 0},
9862         {0x5B, 0x2, 0x2, 0, 0},
9863         {0x5C, 0x4, 0x4, 1, 1},
9864         {0x5D, 0x7, 0x7, 0, 0},
9865         {0x5E, 0x55, 0x55, 0, 0},
9866         {0x5F, 0x23, 0x23, 0, 0},
9867         {0x60, 0x41, 0x41, 0, 0},
9868         {0x61, 0x1, 0x1, 0, 0},
9869         {0x62, 0xa, 0xa, 0, 0},
9870         {0x63, 0, 0, 0, 0},
9871         {0x64, 0, 0, 0, 0},
9872         {0x65, 0, 0, 0, 0},
9873         {0x66, 0, 0, 0, 0},
9874         {0x67, 0, 0, 0, 0},
9875         {0x68, 0, 0, 0, 0},
9876         {0x69, 0, 0, 0, 0},
9877         {0x6A, 0, 0, 0, 0},
9878         {0x6B, 0xc, 0xc, 0, 0},
9879         {0x6C, 0, 0, 0, 0},
9880         {0x6D, 0, 0, 0, 0},
9881         {0x6E, 0, 0, 0, 0},
9882         {0x6F, 0, 0, 0, 0},
9883         {0x70, 0, 0, 0, 0},
9884         {0x71, 0, 0, 0, 0},
9885         {0x72, 0x22, 0x22, 0, 0},
9886         {0x73, 0x22, 0x22, 0, 0},
9887         {0x74, 0, 0, 1, 1},
9888         {0x75, 0xa, 0xa, 0, 0},
9889         {0x76, 0x1, 0x1, 0, 0},
9890         {0x77, 0x22, 0x22, 0, 0},
9891         {0x78, 0x30, 0x30, 0, 0},
9892         {0x79, 0, 0, 0, 0},
9893         {0x7A, 0, 0, 0, 0},
9894         {0x7B, 0, 0, 0, 0},
9895         {0x7C, 0, 0, 0, 0},
9896         {0x7D, 0x5, 0x5, 1, 1},
9897         {0x7E, 0, 0, 0, 0},
9898         {0x7F, 0, 0, 0, 0},
9899         {0x80, 0, 0, 0, 0},
9900         {0x81, 0, 0, 0, 0},
9901         {0x82, 0, 0, 0, 0},
9902         {0x83, 0, 0, 0, 0},
9903         {0x84, 0, 0, 0, 0},
9904         {0x85, 0, 0, 0, 0},
9905         {0x86, 0, 0, 0, 0},
9906         {0x87, 0, 0, 0, 0},
9907         {0x88, 0, 0, 0, 0},
9908         {0x89, 0, 0, 0, 0},
9909         {0x8A, 0, 0, 0, 0},
9910         {0x8B, 0, 0, 0, 0},
9911         {0x8C, 0, 0, 0, 0},
9912         {0x8D, 0, 0, 0, 0},
9913         {0x8E, 0, 0, 0, 0},
9914         {0x8F, 0, 0, 0, 0},
9915         {0x90, 0, 0, 0, 0},
9916         {0x91, 0, 0, 0, 0},
9917         {0x92, 0, 0, 0, 0},
9918         {0x93, 0, 0, 0, 0},
9919         {0x94, 0, 0, 0, 0},
9920         {0xFFFF, 0, 0, 0, 0}
9921 };
9922
9923 radio_regs_t regs_SYN_2056_rev7[] = {
9924         {0x02, 0, 0, 0, 0},
9925         {0x03, 0, 0, 0, 0},
9926         {0x04, 0, 0, 0, 0},
9927         {0x05, 0, 0, 0, 0},
9928         {0x06, 0, 0, 0, 0},
9929         {0x07, 0, 0, 0, 0},
9930         {0x08, 0, 0, 0, 0},
9931         {0x09, 0x1, 0x1, 0, 0},
9932         {0x0A, 0, 0, 0, 0},
9933         {0x0B, 0, 0, 0, 0},
9934         {0x0C, 0, 0, 0, 0},
9935         {0x0D, 0, 0, 0, 0},
9936         {0x0E, 0, 0, 0, 0},
9937         {0x0F, 0, 0, 0, 0},
9938         {0x10, 0, 0, 0, 0},
9939         {0x11, 0, 0, 0, 0},
9940         {0x12, 0, 0, 0, 0},
9941         {0x13, 0, 0, 0, 0},
9942         {0x14, 0, 0, 0, 0},
9943         {0x15, 0, 0, 0, 0},
9944         {0x16, 0, 0, 0, 0},
9945         {0x17, 0, 0, 0, 0},
9946         {0x18, 0, 0, 0, 0},
9947         {0x19, 0, 0, 0, 0},
9948         {0x1A, 0, 0, 0, 0},
9949         {0x1B, 0, 0, 0, 0},
9950         {0x1C, 0, 0, 0, 0},
9951         {0x1D, 0, 0, 0, 0},
9952         {0x1E, 0, 0, 0, 0},
9953         {0x1F, 0, 0, 0, 0},
9954         {0x20, 0, 0, 0, 0},
9955         {0x21, 0, 0, 0, 0},
9956         {0x22, 0x60, 0x60, 0, 0},
9957         {0x23, 0x6, 0x6, 0, 0},
9958         {0x24, 0xc, 0xc, 0, 0},
9959         {0x25, 0, 0, 0, 0},
9960         {0x26, 0, 0, 0, 0},
9961         {0x27, 0, 0, 0, 0},
9962         {0x28, 0x1, 0x1, 0, 0},
9963         {0x29, 0, 0, 0, 0},
9964         {0x2A, 0, 0, 0, 0},
9965         {0x2B, 0, 0, 0, 0},
9966         {0x2C, 0, 0, 0, 0},
9967         {0x2D, 0, 0, 0, 0},
9968         {0x2E, 0, 0, 0, 0},
9969         {0x2F, 0x1f, 0x1f, 0, 0},
9970         {0x30, 0x15, 0x15, 0, 0},
9971         {0x31, 0xf, 0xf, 0, 0},
9972         {0x32, 0, 0, 0, 0},
9973         {0x33, 0, 0, 0, 0},
9974         {0x34, 0, 0, 0, 0},
9975         {0x35, 0, 0, 0, 0},
9976         {0x36, 0, 0, 0, 0},
9977         {0x37, 0, 0, 0, 0},
9978         {0x38, 0, 0, 0, 0},
9979         {0x39, 0, 0, 0, 0},
9980         {0x3A, 0, 0, 0, 0},
9981         {0x3B, 0, 0, 0, 0},
9982         {0x3C, 0x13, 0x13, 0, 0},
9983         {0x3D, 0xf, 0xf, 0, 0},
9984         {0x3E, 0x18, 0x18, 0, 0},
9985         {0x3F, 0, 0, 0, 0},
9986         {0x40, 0, 0, 0, 0},
9987         {0x41, 0x20, 0x20, 0, 0},
9988         {0x42, 0x20, 0x20, 0, 0},
9989         {0x43, 0, 0, 0, 0},
9990         {0x44, 0x77, 0x77, 0, 0},
9991         {0x45, 0x7, 0x7, 0, 0},
9992         {0x46, 0x1, 0x1, 0, 0},
9993         {0x47, 0x4, 0x4, 0, 0},
9994         {0x48, 0xf, 0xf, 0, 0},
9995         {0x49, 0x30, 0x30, 0, 0},
9996         {0x4A, 0x32, 0x32, 0, 0},
9997         {0x4B, 0xd, 0xd, 0, 0},
9998         {0x4C, 0xd, 0xd, 0, 0},
9999         {0x4D, 0x4, 0x4, 0, 0},
10000         {0x4E, 0x6, 0x6, 0, 0},
10001         {0x4F, 0x1, 0x1, 0, 0},
10002         {0x50, 0x1c, 0x1c, 0, 0},
10003         {0x51, 0x2, 0x2, 0, 0},
10004         {0x52, 0x2, 0x2, 0, 0},
10005         {0x53, 0xf7, 0xf7, 1, 1},
10006         {0x54, 0xb4, 0xb4, 0, 0},
10007         {0x55, 0xd2, 0xd2, 0, 0},
10008         {0x56, 0, 0, 0, 0},
10009         {0x57, 0, 0, 0, 0},
10010         {0x58, 0x4, 0x4, 0, 0},
10011         {0x59, 0x96, 0x96, 0, 0},
10012         {0x5A, 0x3e, 0x3e, 0, 0},
10013         {0x5B, 0x3e, 0x3e, 0, 0},
10014         {0x5C, 0x13, 0x13, 0, 0},
10015         {0x5D, 0x2, 0x2, 0, 0},
10016         {0x5E, 0, 0, 0, 0},
10017         {0x5F, 0x7, 0x7, 0, 0},
10018         {0x60, 0x7, 0x7, 1, 1},
10019         {0x61, 0x8, 0x8, 0, 0},
10020         {0x62, 0x3, 0x3, 0, 0},
10021         {0x63, 0, 0, 0, 0},
10022         {0x64, 0, 0, 0, 0},
10023         {0x65, 0, 0, 0, 0},
10024         {0x66, 0, 0, 0, 0},
10025         {0x67, 0, 0, 0, 0},
10026         {0x68, 0x40, 0x40, 0, 0},
10027         {0x69, 0, 0, 0, 0},
10028         {0x6A, 0, 0, 0, 0},
10029         {0x6B, 0, 0, 0, 0},
10030         {0x6C, 0, 0, 0, 0},
10031         {0x6D, 0x1, 0x1, 0, 0},
10032         {0x6E, 0, 0, 0, 0},
10033         {0x6F, 0, 0, 0, 0},
10034         {0x70, 0x60, 0x60, 0, 0},
10035         {0x71, 0x66, 0x66, 0, 0},
10036         {0x72, 0xc, 0xc, 0, 0},
10037         {0x73, 0x66, 0x66, 0, 0},
10038         {0x74, 0x8f, 0x8f, 1, 1},
10039         {0x75, 0, 0, 0, 0},
10040         {0x76, 0xcc, 0xcc, 0, 0},
10041         {0x77, 0x1, 0x1, 0, 0},
10042         {0x78, 0x66, 0x66, 0, 0},
10043         {0x79, 0x66, 0x66, 0, 0},
10044         {0x7A, 0, 0, 0, 0},
10045         {0x7B, 0, 0, 0, 0},
10046         {0x7C, 0, 0, 0, 0},
10047         {0x7D, 0, 0, 0, 0},
10048         {0x7E, 0, 0, 0, 0},
10049         {0x7F, 0, 0, 0, 0},
10050         {0x80, 0, 0, 0, 0},
10051         {0x81, 0, 0, 0, 0},
10052         {0x82, 0, 0, 0, 0},
10053         {0x83, 0, 0, 0, 0},
10054         {0x84, 0, 0, 0, 0},
10055         {0x85, 0xff, 0xff, 0, 0},
10056         {0x86, 0, 0, 0, 0},
10057         {0x87, 0, 0, 0, 0},
10058         {0x88, 0, 0, 0, 0},
10059         {0x89, 0, 0, 0, 0},
10060         {0x8A, 0, 0, 0, 0},
10061         {0x8B, 0, 0, 0, 0},
10062         {0x8C, 0, 0, 0, 0},
10063         {0x8D, 0, 0, 0, 0},
10064         {0x8E, 0, 0, 0, 0},
10065         {0x8F, 0, 0, 0, 0},
10066         {0x90, 0, 0, 0, 0},
10067         {0x91, 0, 0, 0, 0},
10068         {0x92, 0, 0, 0, 0},
10069         {0x93, 0, 0, 0, 0},
10070         {0x94, 0, 0, 0, 0},
10071         {0x95, 0, 0, 0, 0},
10072         {0x96, 0, 0, 0, 0},
10073         {0x97, 0, 0, 0, 0},
10074         {0x98, 0, 0, 0, 0},
10075         {0x99, 0, 0, 0, 0},
10076         {0x9A, 0, 0, 0, 0},
10077         {0x9B, 0, 0, 0, 0},
10078         {0x9C, 0, 0, 0, 0},
10079         {0x9D, 0, 0, 0, 0},
10080         {0x9E, 0, 0, 0, 0},
10081         {0x9F, 0x6, 0x6, 0, 0},
10082         {0xA0, 0x66, 0x66, 0, 0},
10083         {0xA1, 0x66, 0x66, 0, 0},
10084         {0xA2, 0x66, 0x66, 0, 0},
10085         {0xA3, 0x66, 0x66, 0, 0},
10086         {0xA4, 0x66, 0x66, 0, 0},
10087         {0xA5, 0x66, 0x66, 0, 0},
10088         {0xA6, 0x66, 0x66, 0, 0},
10089         {0xA7, 0x66, 0x66, 0, 0},
10090         {0xA8, 0x66, 0x66, 0, 0},
10091         {0xA9, 0x66, 0x66, 0, 0},
10092         {0xAA, 0x66, 0x66, 0, 0},
10093         {0xAB, 0x66, 0x66, 0, 0},
10094         {0xAC, 0x66, 0x66, 0, 0},
10095         {0xAD, 0x66, 0x66, 0, 0},
10096         {0xAE, 0x66, 0x66, 0, 0},
10097         {0xAF, 0x66, 0x66, 0, 0},
10098         {0xB0, 0x66, 0x66, 0, 0},
10099         {0xB1, 0x66, 0x66, 0, 0},
10100         {0xB2, 0x66, 0x66, 0, 0},
10101         {0xB3, 0xa, 0xa, 0, 0},
10102         {0xB4, 0, 0, 0, 0},
10103         {0xB5, 0, 0, 0, 0},
10104         {0xB6, 0, 0, 0, 0},
10105         {0xFFFF, 0, 0, 0, 0},
10106 };
10107
10108 radio_regs_t regs_TX_2056_rev7[] = {
10109         {0x02, 0, 0, 0, 0},
10110         {0x03, 0, 0, 0, 0},
10111         {0x04, 0, 0, 0, 0},
10112         {0x05, 0, 0, 0, 0},
10113         {0x06, 0, 0, 0, 0},
10114         {0x07, 0, 0, 0, 0},
10115         {0x08, 0, 0, 0, 0},
10116         {0x09, 0, 0, 0, 0},
10117         {0x0A, 0, 0, 0, 0},
10118         {0x0B, 0, 0, 0, 0},
10119         {0x0C, 0, 0, 0, 0},
10120         {0x0D, 0, 0, 0, 0},
10121         {0x0E, 0, 0, 0, 0},
10122         {0x0F, 0, 0, 0, 0},
10123         {0x10, 0, 0, 0, 0},
10124         {0x11, 0, 0, 0, 0},
10125         {0x12, 0, 0, 0, 0},
10126         {0x13, 0, 0, 0, 0},
10127         {0x14, 0, 0, 0, 0},
10128         {0x15, 0, 0, 0, 0},
10129         {0x16, 0, 0, 0, 0},
10130         {0x17, 0, 0, 0, 0},
10131         {0x18, 0, 0, 0, 0},
10132         {0x19, 0, 0, 0, 0},
10133         {0x1A, 0, 0, 0, 0},
10134         {0x1B, 0, 0, 0, 0},
10135         {0x1C, 0, 0, 0, 0},
10136         {0x1D, 0, 0, 0, 0},
10137         {0x1E, 0, 0, 0, 0},
10138         {0x1F, 0, 0, 0, 0},
10139         {0x20, 0, 0, 0, 0},
10140         {0x21, 0x88, 0x88, 0, 0},
10141         {0x22, 0x88, 0x88, 0, 0},
10142         {0x23, 0x88, 0x88, 0, 0},
10143         {0x24, 0x88, 0x88, 0, 0},
10144         {0x25, 0xc, 0xc, 0, 0},
10145         {0x26, 0, 0, 0, 0},
10146         {0x27, 0x3, 0x3, 0, 0},
10147         {0x28, 0, 0, 0, 0},
10148         {0x29, 0x3, 0x3, 0, 0},
10149         {0x2A, 0x37, 0x37, 0, 0},
10150         {0x2B, 0x3, 0x3, 0, 0},
10151         {0x2C, 0, 0, 0, 0},
10152         {0x2D, 0, 0, 0, 0},
10153         {0x2E, 0x1, 0x1, 0, 0},
10154         {0x2F, 0x1, 0x1, 0, 0},
10155         {0x30, 0, 0, 0, 0},
10156         {0x31, 0, 0, 0, 0},
10157         {0x32, 0, 0, 0, 0},
10158         {0x33, 0x11, 0x11, 0, 0},
10159         {0x34, 0xee, 0xee, 1, 1},
10160         {0x35, 0, 0, 0, 0},
10161         {0x36, 0, 0, 0, 0},
10162         {0x37, 0x3, 0x3, 0, 0},
10163         {0x38, 0x50, 0x50, 1, 1},
10164         {0x39, 0, 0, 0, 0},
10165         {0x3A, 0x50, 0x50, 1, 1},
10166         {0x3B, 0, 0, 0, 0},
10167         {0x3C, 0x6e, 0x6e, 0, 0},
10168         {0x3D, 0xf0, 0xf0, 1, 1},
10169         {0x3E, 0, 0, 0, 0},
10170         {0x3F, 0, 0, 0, 0},
10171         {0x40, 0, 0, 0, 0},
10172         {0x41, 0x3, 0x3, 0, 0},
10173         {0x42, 0x3, 0x3, 0, 0},
10174         {0x43, 0, 0, 0, 0},
10175         {0x44, 0x1e, 0x1e, 0, 0},
10176         {0x45, 0, 0, 0, 0},
10177         {0x46, 0x6e, 0x6e, 0, 0},
10178         {0x47, 0xf0, 0xf0, 1, 1},
10179         {0x48, 0, 0, 0, 0},
10180         {0x49, 0x2, 0x2, 0, 0},
10181         {0x4A, 0xff, 0xff, 1, 1},
10182         {0x4B, 0xc, 0xc, 0, 0},
10183         {0x4C, 0, 0, 0, 0},
10184         {0x4D, 0x38, 0x38, 0, 0},
10185         {0x4E, 0x70, 0x70, 1, 1},
10186         {0x4F, 0x2, 0x2, 0, 0},
10187         {0x50, 0x88, 0x88, 0, 0},
10188         {0x51, 0xc, 0xc, 0, 0},
10189         {0x52, 0, 0, 0, 0},
10190         {0x53, 0x8, 0x8, 0, 0},
10191         {0x54, 0x70, 0x70, 1, 1},
10192         {0x55, 0x2, 0x2, 0, 0},
10193         {0x56, 0xff, 0xff, 1, 1},
10194         {0x57, 0, 0, 0, 0},
10195         {0x58, 0x83, 0x83, 0, 0},
10196         {0x59, 0x77, 0x77, 1, 1},
10197         {0x5A, 0, 0, 0, 0},
10198         {0x5B, 0x2, 0x2, 0, 0},
10199         {0x5C, 0x88, 0x88, 0, 0},
10200         {0x5D, 0, 0, 0, 0},
10201         {0x5E, 0x8, 0x8, 0, 0},
10202         {0x5F, 0x77, 0x77, 1, 1},
10203         {0x60, 0x1, 0x1, 0, 0},
10204         {0x61, 0, 0, 0, 0},
10205         {0x62, 0x7, 0x7, 0, 0},
10206         {0x63, 0, 0, 0, 0},
10207         {0x64, 0x7, 0x7, 0, 0},
10208         {0x65, 0, 0, 0, 0},
10209         {0x66, 0, 0, 0, 0},
10210         {0x67, 0, 0, 1, 1},
10211         {0x68, 0, 0, 0, 0},
10212         {0x69, 0xa, 0xa, 0, 0},
10213         {0x6A, 0, 0, 0, 0},
10214         {0x6B, 0, 0, 0, 0},
10215         {0x6C, 0, 0, 0, 0},
10216         {0x6D, 0, 0, 0, 0},
10217         {0x6E, 0, 0, 0, 0},
10218         {0x6F, 0, 0, 0, 0},
10219         {0x70, 0, 0, 0, 0},
10220         {0x71, 0x2, 0x2, 0, 0},
10221         {0x72, 0, 0, 0, 0},
10222         {0x73, 0, 0, 0, 0},
10223         {0x74, 0xe, 0xe, 0, 0},
10224         {0x75, 0xe, 0xe, 0, 0},
10225         {0x76, 0xe, 0xe, 0, 0},
10226         {0x77, 0x13, 0x13, 0, 0},
10227         {0x78, 0x13, 0x13, 0, 0},
10228         {0x79, 0x1b, 0x1b, 0, 0},
10229         {0x7A, 0x1b, 0x1b, 0, 0},
10230         {0x7B, 0x55, 0x55, 0, 0},
10231         {0x7C, 0x5b, 0x5b, 0, 0},
10232         {0x7D, 0x30, 0x30, 1, 1},
10233         {0x7E, 0, 0, 0, 0},
10234         {0x7F, 0, 0, 0, 0},
10235         {0x80, 0, 0, 0, 0},
10236         {0x81, 0, 0, 0, 0},
10237         {0x82, 0, 0, 0, 0},
10238         {0x83, 0, 0, 0, 0},
10239         {0x84, 0, 0, 0, 0},
10240         {0x85, 0, 0, 0, 0},
10241         {0x86, 0, 0, 0, 0},
10242         {0x87, 0, 0, 0, 0},
10243         {0x88, 0, 0, 0, 0},
10244         {0x89, 0, 0, 0, 0},
10245         {0x8A, 0, 0, 0, 0},
10246         {0x8B, 0, 0, 0, 0},
10247         {0x8C, 0, 0, 0, 0},
10248         {0x8D, 0, 0, 0, 0},
10249         {0x8E, 0, 0, 0, 0},
10250         {0x8F, 0, 0, 0, 0},
10251         {0x90, 0, 0, 0, 0},
10252         {0x91, 0, 0, 0, 0},
10253         {0x92, 0, 0, 0, 0},
10254         {0x93, 0x70, 0x70, 0, 0},
10255         {0x94, 0x70, 0x70, 0, 0},
10256         {0x95, 0x71, 0x71, 1, 1},
10257         {0x96, 0x71, 0x71, 1, 1},
10258         {0x97, 0x72, 0x72, 1, 1},
10259         {0x98, 0x73, 0x73, 1, 1},
10260         {0x99, 0x74, 0x74, 1, 1},
10261         {0x9A, 0x75, 0x75, 1, 1},
10262         {0xFFFF, 0, 0, 0, 0},
10263 };
10264
10265 radio_regs_t regs_RX_2056_rev7[] = {
10266         {0x02, 0, 0, 0, 0},
10267         {0x03, 0, 0, 0, 0},
10268         {0x04, 0, 0, 0, 0},
10269         {0x05, 0, 0, 0, 0},
10270         {0x06, 0, 0, 0, 0},
10271         {0x07, 0, 0, 0, 0},
10272         {0x08, 0, 0, 0, 0},
10273         {0x09, 0, 0, 0, 0},
10274         {0x0A, 0, 0, 0, 0},
10275         {0x0B, 0, 0, 0, 0},
10276         {0x0C, 0, 0, 0, 0},
10277         {0x0D, 0, 0, 0, 0},
10278         {0x0E, 0, 0, 0, 0},
10279         {0x0F, 0, 0, 0, 0},
10280         {0x10, 0, 0, 0, 0},
10281         {0x11, 0, 0, 0, 0},
10282         {0x12, 0, 0, 0, 0},
10283         {0x13, 0, 0, 0, 0},
10284         {0x14, 0, 0, 0, 0},
10285         {0x15, 0, 0, 0, 0},
10286         {0x16, 0, 0, 0, 0},
10287         {0x17, 0, 0, 0, 0},
10288         {0x18, 0, 0, 0, 0},
10289         {0x19, 0, 0, 0, 0},
10290         {0x1A, 0, 0, 0, 0},
10291         {0x1B, 0, 0, 0, 0},
10292         {0x1C, 0, 0, 0, 0},
10293         {0x1D, 0, 0, 0, 0},
10294         {0x1E, 0, 0, 0, 0},
10295         {0x1F, 0, 0, 0, 0},
10296         {0x20, 0x3, 0x3, 0, 0},
10297         {0x21, 0, 0, 0, 0},
10298         {0x22, 0, 0, 0, 0},
10299         {0x23, 0x90, 0x90, 0, 0},
10300         {0x24, 0x55, 0x55, 0, 0},
10301         {0x25, 0x15, 0x15, 0, 0},
10302         {0x26, 0x5, 0x5, 0, 0},
10303         {0x27, 0x15, 0x15, 0, 0},
10304         {0x28, 0x5, 0x5, 0, 0},
10305         {0x29, 0x20, 0x20, 0, 0},
10306         {0x2A, 0x11, 0x11, 0, 0},
10307         {0x2B, 0x90, 0x90, 0, 0},
10308         {0x2C, 0, 0, 0, 0},
10309         {0x2D, 0x88, 0x88, 0, 0},
10310         {0x2E, 0x32, 0x32, 0, 0},
10311         {0x2F, 0x77, 0x77, 0, 0},
10312         {0x30, 0x17, 0x17, 1, 1},
10313         {0x31, 0xff, 0xff, 1, 1},
10314         {0x32, 0x20, 0x20, 0, 0},
10315         {0x33, 0, 0, 0, 0},
10316         {0x34, 0x88, 0x88, 0, 0},
10317         {0x35, 0x32, 0x32, 0, 0},
10318         {0x36, 0x77, 0x77, 0, 0},
10319         {0x37, 0x17, 0x17, 1, 1},
10320         {0x38, 0xf0, 0xf0, 1, 1},
10321         {0x39, 0x20, 0x20, 0, 0},
10322         {0x3A, 0x8, 0x8, 0, 0},
10323         {0x3B, 0x55, 0x55, 1, 1},
10324         {0x3C, 0, 0, 0, 0},
10325         {0x3D, 0x88, 0x88, 1, 1},
10326         {0x3E, 0, 0, 0, 0},
10327         {0x3F, 0, 0, 1, 1},
10328         {0x40, 0x7, 0x7, 1, 1},
10329         {0x41, 0x6, 0x6, 0, 0},
10330         {0x42, 0x4, 0x4, 0, 0},
10331         {0x43, 0, 0, 0, 0},
10332         {0x44, 0x8, 0x8, 0, 0},
10333         {0x45, 0x55, 0x55, 1, 1},
10334         {0x46, 0, 0, 0, 0},
10335         {0x47, 0x11, 0x11, 0, 0},
10336         {0x48, 0, 0, 0, 0},
10337         {0x49, 0, 0, 1, 1},
10338         {0x4A, 0x7, 0x7, 0, 0},
10339         {0x4B, 0x6, 0x6, 0, 0},
10340         {0x4C, 0x4, 0x4, 0, 0},
10341         {0x4D, 0, 0, 0, 0},
10342         {0x4E, 0, 0, 0, 0},
10343         {0x4F, 0x26, 0x26, 1, 1},
10344         {0x50, 0x26, 0x26, 1, 1},
10345         {0x51, 0xf, 0xf, 1, 1},
10346         {0x52, 0xf, 0xf, 1, 1},
10347         {0x53, 0x44, 0x44, 0, 0},
10348         {0x54, 0, 0, 0, 0},
10349         {0x55, 0, 0, 0, 0},
10350         {0x56, 0x8, 0x8, 0, 0},
10351         {0x57, 0x8, 0x8, 0, 0},
10352         {0x58, 0x7, 0x7, 0, 0},
10353         {0x59, 0x22, 0x22, 0, 0},
10354         {0x5A, 0x22, 0x22, 0, 0},
10355         {0x5B, 0x2, 0x2, 0, 0},
10356         {0x5C, 0x4, 0x4, 1, 1},
10357         {0x5D, 0x7, 0x7, 0, 0},
10358         {0x5E, 0x55, 0x55, 0, 0},
10359         {0x5F, 0x23, 0x23, 0, 0},
10360         {0x60, 0x41, 0x41, 0, 0},
10361         {0x61, 0x1, 0x1, 0, 0},
10362         {0x62, 0xa, 0xa, 0, 0},
10363         {0x63, 0, 0, 0, 0},
10364         {0x64, 0, 0, 0, 0},
10365         {0x65, 0, 0, 0, 0},
10366         {0x66, 0, 0, 0, 0},
10367         {0x67, 0, 0, 0, 0},
10368         {0x68, 0, 0, 0, 0},
10369         {0x69, 0, 0, 0, 0},
10370         {0x6A, 0, 0, 0, 0},
10371         {0x6B, 0xc, 0xc, 0, 0},
10372         {0x6C, 0, 0, 0, 0},
10373         {0x6D, 0, 0, 0, 0},
10374         {0x6E, 0, 0, 0, 0},
10375         {0x6F, 0, 0, 0, 0},
10376         {0x70, 0, 0, 0, 0},
10377         {0x71, 0, 0, 0, 0},
10378         {0x72, 0x22, 0x22, 0, 0},
10379         {0x73, 0x22, 0x22, 0, 0},
10380         {0x74, 0, 0, 1, 1},
10381         {0x75, 0xa, 0xa, 0, 0},
10382         {0x76, 0x1, 0x1, 0, 0},
10383         {0x77, 0x22, 0x22, 0, 0},
10384         {0x78, 0x30, 0x30, 0, 0},
10385         {0x79, 0, 0, 0, 0},
10386         {0x7A, 0, 0, 0, 0},
10387         {0x7B, 0, 0, 0, 0},
10388         {0x7C, 0, 0, 0, 0},
10389         {0x7D, 0, 0, 0, 0},
10390         {0x7E, 0, 0, 0, 0},
10391         {0x7F, 0, 0, 0, 0},
10392         {0x80, 0, 0, 0, 0},
10393         {0x81, 0, 0, 0, 0},
10394         {0x82, 0, 0, 0, 0},
10395         {0x83, 0, 0, 0, 0},
10396         {0x84, 0, 0, 0, 0},
10397         {0x85, 0, 0, 0, 0},
10398         {0x86, 0, 0, 0, 0},
10399         {0x87, 0, 0, 0, 0},
10400         {0x88, 0, 0, 0, 0},
10401         {0x89, 0, 0, 0, 0},
10402         {0x8A, 0, 0, 0, 0},
10403         {0x8B, 0, 0, 0, 0},
10404         {0x8C, 0, 0, 0, 0},
10405         {0x8D, 0, 0, 0, 0},
10406         {0x8E, 0, 0, 0, 0},
10407         {0x8F, 0, 0, 0, 0},
10408         {0x90, 0, 0, 0, 0},
10409         {0x91, 0, 0, 0, 0},
10410         {0x92, 0, 0, 0, 0},
10411         {0x93, 0, 0, 0, 0},
10412         {0x94, 0, 0, 0, 0},
10413         {0xFFFF, 0, 0, 0, 0},
10414 };
10415
10416 radio_regs_t regs_SYN_2056_rev8[] = {
10417         {0x02, 0, 0, 0, 0},
10418         {0x03, 0, 0, 0, 0},
10419         {0x04, 0, 0, 0, 0},
10420         {0x05, 0, 0, 0, 0},
10421         {0x06, 0, 0, 0, 0},
10422         {0x07, 0, 0, 0, 0},
10423         {0x08, 0, 0, 0, 0},
10424         {0x09, 0x1, 0x1, 0, 0},
10425         {0x0A, 0, 0, 0, 0},
10426         {0x0B, 0, 0, 0, 0},
10427         {0x0C, 0, 0, 0, 0},
10428         {0x0D, 0, 0, 0, 0},
10429         {0x0E, 0, 0, 0, 0},
10430         {0x0F, 0, 0, 0, 0},
10431         {0x10, 0, 0, 0, 0},
10432         {0x11, 0, 0, 0, 0},
10433         {0x12, 0, 0, 0, 0},
10434         {0x13, 0, 0, 0, 0},
10435         {0x14, 0, 0, 0, 0},
10436         {0x15, 0, 0, 0, 0},
10437         {0x16, 0, 0, 0, 0},
10438         {0x17, 0, 0, 0, 0},
10439         {0x18, 0, 0, 0, 0},
10440         {0x19, 0, 0, 0, 0},
10441         {0x1A, 0, 0, 0, 0},
10442         {0x1B, 0, 0, 0, 0},
10443         {0x1C, 0, 0, 0, 0},
10444         {0x1D, 0, 0, 0, 0},
10445         {0x1E, 0, 0, 0, 0},
10446         {0x1F, 0, 0, 0, 0},
10447         {0x20, 0, 0, 0, 0},
10448         {0x21, 0, 0, 0, 0},
10449         {0x22, 0x60, 0x60, 0, 0},
10450         {0x23, 0x6, 0x6, 0, 0},
10451         {0x24, 0xc, 0xc, 0, 0},
10452         {0x25, 0, 0, 0, 0},
10453         {0x26, 0, 0, 0, 0},
10454         {0x27, 0, 0, 0, 0},
10455         {0x28, 0x1, 0x1, 0, 0},
10456         {0x29, 0, 0, 0, 0},
10457         {0x2A, 0, 0, 0, 0},
10458         {0x2B, 0, 0, 0, 0},
10459         {0x2C, 0, 0, 0, 0},
10460         {0x2D, 0, 0, 0, 0},
10461         {0x2E, 0, 0, 0, 0},
10462         {0x2F, 0x1f, 0x1f, 0, 0},
10463         {0x30, 0x15, 0x15, 0, 0},
10464         {0x31, 0xf, 0xf, 0, 0},
10465         {0x32, 0, 0, 0, 0},
10466         {0x33, 0, 0, 0, 0},
10467         {0x34, 0, 0, 0, 0},
10468         {0x35, 0, 0, 0, 0},
10469         {0x36, 0, 0, 0, 0},
10470         {0x37, 0, 0, 0, 0},
10471         {0x38, 0, 0, 0, 0},
10472         {0x39, 0, 0, 0, 0},
10473         {0x3A, 0, 0, 0, 0},
10474         {0x3B, 0, 0, 0, 0},
10475         {0x3C, 0x13, 0x13, 0, 0},
10476         {0x3D, 0xf, 0xf, 0, 0},
10477         {0x3E, 0x18, 0x18, 0, 0},
10478         {0x3F, 0, 0, 0, 0},
10479         {0x40, 0, 0, 0, 0},
10480         {0x41, 0x20, 0x20, 0, 0},
10481         {0x42, 0x20, 0x20, 0, 0},
10482         {0x43, 0, 0, 0, 0},
10483         {0x44, 0x77, 0x77, 0, 0},
10484         {0x45, 0x7, 0x7, 0, 0},
10485         {0x46, 0x1, 0x1, 0, 0},
10486         {0x47, 0x4, 0x4, 0, 0},
10487         {0x48, 0xf, 0xf, 0, 0},
10488         {0x49, 0x30, 0x30, 0, 0},
10489         {0x4A, 0x32, 0x32, 0, 0},
10490         {0x4B, 0xd, 0xd, 0, 0},
10491         {0x4C, 0xd, 0xd, 0, 0},
10492         {0x4D, 0x4, 0x4, 0, 0},
10493         {0x4E, 0x6, 0x6, 0, 0},
10494         {0x4F, 0x1, 0x1, 0, 0},
10495         {0x50, 0x1c, 0x1c, 0, 0},
10496         {0x51, 0x2, 0x2, 0, 0},
10497         {0x52, 0x2, 0x2, 0, 0},
10498         {0x53, 0xf7, 0xf7, 1, 1},
10499         {0x54, 0xb4, 0xb4, 0, 0},
10500         {0x55, 0xd2, 0xd2, 0, 0},
10501         {0x56, 0, 0, 0, 0},
10502         {0x57, 0, 0, 0, 0},
10503         {0x58, 0x4, 0x4, 0, 0},
10504         {0x59, 0x96, 0x96, 0, 0},
10505         {0x5A, 0x3e, 0x3e, 0, 0},
10506         {0x5B, 0x3e, 0x3e, 0, 0},
10507         {0x5C, 0x13, 0x13, 0, 0},
10508         {0x5D, 0x2, 0x2, 0, 0},
10509         {0x5E, 0, 0, 0, 0},
10510         {0x5F, 0x7, 0x7, 0, 0},
10511         {0x60, 0x7, 0x7, 1, 1},
10512         {0x61, 0x8, 0x8, 0, 0},
10513         {0x62, 0x3, 0x3, 0, 0},
10514         {0x63, 0, 0, 0, 0},
10515         {0x64, 0, 0, 0, 0},
10516         {0x65, 0, 0, 0, 0},
10517         {0x66, 0, 0, 0, 0},
10518         {0x67, 0, 0, 0, 0},
10519         {0x68, 0x40, 0x40, 0, 0},
10520         {0x69, 0, 0, 0, 0},
10521         {0x6A, 0, 0, 0, 0},
10522         {0x6B, 0, 0, 0, 0},
10523         {0x6C, 0, 0, 0, 0},
10524         {0x6D, 0x1, 0x1, 0, 0},
10525         {0x6E, 0, 0, 0, 0},
10526         {0x6F, 0, 0, 0, 0},
10527         {0x70, 0x60, 0x60, 0, 0},
10528         {0x71, 0x66, 0x66, 0, 0},
10529         {0x72, 0xc, 0xc, 0, 0},
10530         {0x73, 0x66, 0x66, 0, 0},
10531         {0x74, 0x8f, 0x8f, 1, 1},
10532         {0x75, 0, 0, 0, 0},
10533         {0x76, 0xcc, 0xcc, 0, 0},
10534         {0x77, 0x1, 0x1, 0, 0},
10535         {0x78, 0x66, 0x66, 0, 0},
10536         {0x79, 0x66, 0x66, 0, 0},
10537         {0x7A, 0, 0, 0, 0},
10538         {0x7B, 0, 0, 0, 0},
10539         {0x7C, 0, 0, 0, 0},
10540         {0x7D, 0, 0, 0, 0},
10541         {0x7E, 0, 0, 0, 0},
10542         {0x7F, 0, 0, 0, 0},
10543         {0x80, 0, 0, 0, 0},
10544         {0x81, 0, 0, 0, 0},
10545         {0x82, 0, 0, 0, 0},
10546         {0x83, 0, 0, 0, 0},
10547         {0x84, 0, 0, 0, 0},
10548         {0x85, 0xff, 0xff, 0, 0},
10549         {0x86, 0, 0, 0, 0},
10550         {0x87, 0, 0, 0, 0},
10551         {0x88, 0, 0, 0, 0},
10552         {0x89, 0, 0, 0, 0},
10553         {0x8A, 0, 0, 0, 0},
10554         {0x8B, 0, 0, 0, 0},
10555         {0x8C, 0, 0, 0, 0},
10556         {0x8D, 0, 0, 0, 0},
10557         {0x8E, 0, 0, 0, 0},
10558         {0x8F, 0, 0, 0, 0},
10559         {0x90, 0, 0, 0, 0},
10560         {0x91, 0, 0, 0, 0},
10561         {0x92, 0, 0, 0, 0},
10562         {0x93, 0, 0, 0, 0},
10563         {0x94, 0, 0, 0, 0},
10564         {0x95, 0, 0, 0, 0},
10565         {0x96, 0, 0, 0, 0},
10566         {0x97, 0, 0, 0, 0},
10567         {0x98, 0, 0, 0, 0},
10568         {0x99, 0, 0, 0, 0},
10569         {0x9A, 0, 0, 0, 0},
10570         {0x9B, 0, 0, 0, 0},
10571         {0x9C, 0, 0, 0, 0},
10572         {0x9D, 0, 0, 0, 0},
10573         {0x9E, 0, 0, 0, 0},
10574         {0x9F, 0x6, 0x6, 0, 0},
10575         {0xA0, 0x66, 0x66, 0, 0},
10576         {0xA1, 0x66, 0x66, 0, 0},
10577         {0xA2, 0x66, 0x66, 0, 0},
10578         {0xA3, 0x66, 0x66, 0, 0},
10579         {0xA4, 0x66, 0x66, 0, 0},
10580         {0xA5, 0x66, 0x66, 0, 0},
10581         {0xA6, 0x66, 0x66, 0, 0},
10582         {0xA7, 0x66, 0x66, 0, 0},
10583         {0xA8, 0x66, 0x66, 0, 0},
10584         {0xA9, 0x66, 0x66, 0, 0},
10585         {0xAA, 0x66, 0x66, 0, 0},
10586         {0xAB, 0x66, 0x66, 0, 0},
10587         {0xAC, 0x66, 0x66, 0, 0},
10588         {0xAD, 0x66, 0x66, 0, 0},
10589         {0xAE, 0x66, 0x66, 0, 0},
10590         {0xAF, 0x66, 0x66, 0, 0},
10591         {0xB0, 0x66, 0x66, 0, 0},
10592         {0xB1, 0x66, 0x66, 0, 0},
10593         {0xB2, 0x66, 0x66, 0, 0},
10594         {0xB3, 0xa, 0xa, 0, 0},
10595         {0xB4, 0, 0, 0, 0},
10596         {0xB5, 0, 0, 0, 0},
10597         {0xB6, 0, 0, 0, 0},
10598         {0xFFFF, 0, 0, 0, 0},
10599 };
10600
10601 radio_regs_t regs_TX_2056_rev8[] = {
10602         {0x02, 0, 0, 0, 0},
10603         {0x03, 0, 0, 0, 0},
10604         {0x04, 0, 0, 0, 0},
10605         {0x05, 0, 0, 0, 0},
10606         {0x06, 0, 0, 0, 0},
10607         {0x07, 0, 0, 0, 0},
10608         {0x08, 0, 0, 0, 0},
10609         {0x09, 0, 0, 0, 0},
10610         {0x0A, 0, 0, 0, 0},
10611         {0x0B, 0, 0, 0, 0},
10612         {0x0C, 0, 0, 0, 0},
10613         {0x0D, 0, 0, 0, 0},
10614         {0x0E, 0, 0, 0, 0},
10615         {0x0F, 0, 0, 0, 0},
10616         {0x10, 0, 0, 0, 0},
10617         {0x11, 0, 0, 0, 0},
10618         {0x12, 0, 0, 0, 0},
10619         {0x13, 0, 0, 0, 0},
10620         {0x14, 0, 0, 0, 0},
10621         {0x15, 0, 0, 0, 0},
10622         {0x16, 0, 0, 0, 0},
10623         {0x17, 0, 0, 0, 0},
10624         {0x18, 0, 0, 0, 0},
10625         {0x19, 0, 0, 0, 0},
10626         {0x1A, 0, 0, 0, 0},
10627         {0x1B, 0, 0, 0, 0},
10628         {0x1C, 0, 0, 0, 0},
10629         {0x1D, 0, 0, 0, 0},
10630         {0x1E, 0, 0, 0, 0},
10631         {0x1F, 0, 0, 0, 0},
10632         {0x20, 0, 0, 0, 0},
10633         {0x21, 0x88, 0x88, 0, 0},
10634         {0x22, 0x88, 0x88, 0, 0},
10635         {0x23, 0x88, 0x88, 0, 0},
10636         {0x24, 0x88, 0x88, 0, 0},
10637         {0x25, 0xc, 0xc, 0, 0},
10638         {0x26, 0, 0, 0, 0},
10639         {0x27, 0x3, 0x3, 0, 0},
10640         {0x28, 0, 0, 0, 0},
10641         {0x29, 0x3, 0x3, 0, 0},
10642         {0x2A, 0x37, 0x37, 0, 0},
10643         {0x2B, 0x3, 0x3, 0, 0},
10644         {0x2C, 0, 0, 0, 0},
10645         {0x2D, 0, 0, 0, 0},
10646         {0x2E, 0x1, 0x1, 0, 0},
10647         {0x2F, 0x1, 0x1, 0, 0},
10648         {0x30, 0, 0, 0, 0},
10649         {0x31, 0, 0, 0, 0},
10650         {0x32, 0, 0, 0, 0},
10651         {0x33, 0x11, 0x11, 0, 0},
10652         {0x34, 0xee, 0xee, 1, 1},
10653         {0x35, 0, 0, 0, 0},
10654         {0x36, 0, 0, 0, 0},
10655         {0x37, 0x3, 0x3, 0, 0},
10656         {0x38, 0x50, 0x50, 1, 1},
10657         {0x39, 0, 0, 0, 0},
10658         {0x3A, 0x50, 0x50, 1, 1},
10659         {0x3B, 0, 0, 0, 0},
10660         {0x3C, 0x6e, 0x6e, 0, 0},
10661         {0x3D, 0xf0, 0xf0, 1, 1},
10662         {0x3E, 0, 0, 0, 0},
10663         {0x3F, 0, 0, 0, 0},
10664         {0x40, 0, 0, 0, 0},
10665         {0x41, 0x3, 0x3, 0, 0},
10666         {0x42, 0x3, 0x3, 0, 0},
10667         {0x43, 0, 0, 0, 0},
10668         {0x44, 0x1e, 0x1e, 0, 0},
10669         {0x45, 0, 0, 0, 0},
10670         {0x46, 0x6e, 0x6e, 0, 0},
10671         {0x47, 0xf0, 0xf0, 1, 1},
10672         {0x48, 0, 0, 0, 0},
10673         {0x49, 0x2, 0x2, 0, 0},
10674         {0x4A, 0xff, 0xff, 1, 1},
10675         {0x4B, 0xc, 0xc, 0, 0},
10676         {0x4C, 0, 0, 0, 0},
10677         {0x4D, 0x38, 0x38, 0, 0},
10678         {0x4E, 0x70, 0x70, 1, 1},
10679         {0x4F, 0x2, 0x2, 0, 0},
10680         {0x50, 0x88, 0x88, 0, 0},
10681         {0x51, 0xc, 0xc, 0, 0},
10682         {0x52, 0, 0, 0, 0},
10683         {0x53, 0x8, 0x8, 0, 0},
10684         {0x54, 0x70, 0x70, 1, 1},
10685         {0x55, 0x2, 0x2, 0, 0},
10686         {0x56, 0xff, 0xff, 1, 1},
10687         {0x57, 0, 0, 0, 0},
10688         {0x58, 0x83, 0x83, 0, 0},
10689         {0x59, 0x77, 0x77, 1, 1},
10690         {0x5A, 0, 0, 0, 0},
10691         {0x5B, 0x2, 0x2, 0, 0},
10692         {0x5C, 0x88, 0x88, 0, 0},
10693         {0x5D, 0, 0, 0, 0},
10694         {0x5E, 0x8, 0x8, 0, 0},
10695         {0x5F, 0x77, 0x77, 1, 1},
10696         {0x60, 0x1, 0x1, 0, 0},
10697         {0x61, 0, 0, 0, 0},
10698         {0x62, 0x7, 0x7, 0, 0},
10699         {0x63, 0, 0, 0, 0},
10700         {0x64, 0x7, 0x7, 0, 0},
10701         {0x65, 0, 0, 0, 0},
10702         {0x66, 0, 0, 0, 0},
10703         {0x67, 0, 0, 1, 1},
10704         {0x68, 0, 0, 0, 0},
10705         {0x69, 0xa, 0xa, 0, 0},
10706         {0x6A, 0, 0, 0, 0},
10707         {0x6B, 0, 0, 0, 0},
10708         {0x6C, 0, 0, 0, 0},
10709         {0x6D, 0, 0, 0, 0},
10710         {0x6E, 0, 0, 0, 0},
10711         {0x6F, 0, 0, 0, 0},
10712         {0x70, 0, 0, 0, 0},
10713         {0x71, 0x2, 0x2, 0, 0},
10714         {0x72, 0, 0, 0, 0},
10715         {0x73, 0, 0, 0, 0},
10716         {0x74, 0xe, 0xe, 0, 0},
10717         {0x75, 0xe, 0xe, 0, 0},
10718         {0x76, 0xe, 0xe, 0, 0},
10719         {0x77, 0x13, 0x13, 0, 0},
10720         {0x78, 0x13, 0x13, 0, 0},
10721         {0x79, 0x1b, 0x1b, 0, 0},
10722         {0x7A, 0x1b, 0x1b, 0, 0},
10723         {0x7B, 0x55, 0x55, 0, 0},
10724         {0x7C, 0x5b, 0x5b, 0, 0},
10725         {0x7D, 0x30, 0x30, 1, 1},
10726         {0x7E, 0, 0, 0, 0},
10727         {0x7F, 0, 0, 0, 0},
10728         {0x80, 0, 0, 0, 0},
10729         {0x81, 0, 0, 0, 0},
10730         {0x82, 0, 0, 0, 0},
10731         {0x83, 0, 0, 0, 0},
10732         {0x84, 0, 0, 0, 0},
10733         {0x85, 0, 0, 0, 0},
10734         {0x86, 0, 0, 0, 0},
10735         {0x87, 0, 0, 0, 0},
10736         {0x88, 0, 0, 0, 0},
10737         {0x89, 0, 0, 0, 0},
10738         {0x8A, 0, 0, 0, 0},
10739         {0x8B, 0, 0, 0, 0},
10740         {0x8C, 0, 0, 0, 0},
10741         {0x8D, 0, 0, 0, 0},
10742         {0x8E, 0, 0, 0, 0},
10743         {0x8F, 0, 0, 0, 0},
10744         {0x90, 0, 0, 0, 0},
10745         {0x91, 0, 0, 0, 0},
10746         {0x92, 0, 0, 0, 0},
10747         {0x93, 0x70, 0x70, 0, 0},
10748         {0x94, 0x70, 0x70, 0, 0},
10749         {0x95, 0x70, 0x70, 0, 0},
10750         {0x96, 0x70, 0x70, 0, 0},
10751         {0x97, 0x70, 0x70, 0, 0},
10752         {0x98, 0x70, 0x70, 0, 0},
10753         {0x99, 0x70, 0x70, 0, 0},
10754         {0x9A, 0x70, 0x70, 0, 0},
10755         {0xFFFF, 0, 0, 0, 0},
10756 };
10757
10758 radio_regs_t regs_RX_2056_rev8[] = {
10759         {0x02, 0, 0, 0, 0},
10760         {0x03, 0, 0, 0, 0},
10761         {0x04, 0, 0, 0, 0},
10762         {0x05, 0, 0, 0, 0},
10763         {0x06, 0, 0, 0, 0},
10764         {0x07, 0, 0, 0, 0},
10765         {0x08, 0, 0, 0, 0},
10766         {0x09, 0, 0, 0, 0},
10767         {0x0A, 0, 0, 0, 0},
10768         {0x0B, 0, 0, 0, 0},
10769         {0x0C, 0, 0, 0, 0},
10770         {0x0D, 0, 0, 0, 0},
10771         {0x0E, 0, 0, 0, 0},
10772         {0x0F, 0, 0, 0, 0},
10773         {0x10, 0, 0, 0, 0},
10774         {0x11, 0, 0, 0, 0},
10775         {0x12, 0, 0, 0, 0},
10776         {0x13, 0, 0, 0, 0},
10777         {0x14, 0, 0, 0, 0},
10778         {0x15, 0, 0, 0, 0},
10779         {0x16, 0, 0, 0, 0},
10780         {0x17, 0, 0, 0, 0},
10781         {0x18, 0, 0, 0, 0},
10782         {0x19, 0, 0, 0, 0},
10783         {0x1A, 0, 0, 0, 0},
10784         {0x1B, 0, 0, 0, 0},
10785         {0x1C, 0, 0, 0, 0},
10786         {0x1D, 0, 0, 0, 0},
10787         {0x1E, 0, 0, 0, 0},
10788         {0x1F, 0, 0, 0, 0},
10789         {0x20, 0x3, 0x3, 0, 0},
10790         {0x21, 0, 0, 0, 0},
10791         {0x22, 0, 0, 0, 0},
10792         {0x23, 0x90, 0x90, 0, 0},
10793         {0x24, 0x55, 0x55, 0, 0},
10794         {0x25, 0x15, 0x15, 0, 0},
10795         {0x26, 0x5, 0x5, 0, 0},
10796         {0x27, 0x15, 0x15, 0, 0},
10797         {0x28, 0x5, 0x5, 0, 0},
10798         {0x29, 0x20, 0x20, 0, 0},
10799         {0x2A, 0x11, 0x11, 0, 0},
10800         {0x2B, 0x90, 0x90, 0, 0},
10801         {0x2C, 0, 0, 0, 0},
10802         {0x2D, 0x88, 0x88, 0, 0},
10803         {0x2E, 0x32, 0x32, 0, 0},
10804         {0x2F, 0x77, 0x77, 0, 0},
10805         {0x30, 0x17, 0x17, 1, 1},
10806         {0x31, 0xff, 0xff, 1, 1},
10807         {0x32, 0x20, 0x20, 0, 0},
10808         {0x33, 0, 0, 0, 0},
10809         {0x34, 0x88, 0x88, 0, 0},
10810         {0x35, 0x32, 0x32, 0, 0},
10811         {0x36, 0x77, 0x77, 0, 0},
10812         {0x37, 0x17, 0x17, 1, 1},
10813         {0x38, 0xf0, 0xf0, 1, 1},
10814         {0x39, 0x20, 0x20, 0, 0},
10815         {0x3A, 0x8, 0x8, 0, 0},
10816         {0x3B, 0x55, 0x55, 1, 1},
10817         {0x3C, 0, 0, 0, 0},
10818         {0x3D, 0x88, 0x88, 1, 1},
10819         {0x3E, 0, 0, 0, 0},
10820         {0x3F, 0x44, 0x44, 0, 0},
10821         {0x40, 0x7, 0x7, 1, 1},
10822         {0x41, 0x6, 0x6, 0, 0},
10823         {0x42, 0x4, 0x4, 0, 0},
10824         {0x43, 0, 0, 0, 0},
10825         {0x44, 0x8, 0x8, 0, 0},
10826         {0x45, 0x55, 0x55, 1, 1},
10827         {0x46, 0, 0, 0, 0},
10828         {0x47, 0x11, 0x11, 0, 0},
10829         {0x48, 0, 0, 0, 0},
10830         {0x49, 0x44, 0x44, 0, 0},
10831         {0x4A, 0x7, 0x7, 0, 0},
10832         {0x4B, 0x6, 0x6, 0, 0},
10833         {0x4C, 0x4, 0x4, 0, 0},
10834         {0x4D, 0, 0, 0, 0},
10835         {0x4E, 0, 0, 0, 0},
10836         {0x4F, 0x26, 0x26, 1, 1},
10837         {0x50, 0x26, 0x26, 1, 1},
10838         {0x51, 0xf, 0xf, 1, 1},
10839         {0x52, 0xf, 0xf, 1, 1},
10840         {0x53, 0x44, 0x44, 0, 0},
10841         {0x54, 0, 0, 0, 0},
10842         {0x55, 0, 0, 0, 0},
10843         {0x56, 0x8, 0x8, 0, 0},
10844         {0x57, 0x8, 0x8, 0, 0},
10845         {0x58, 0x7, 0x7, 0, 0},
10846         {0x59, 0x22, 0x22, 0, 0},
10847         {0x5A, 0x22, 0x22, 0, 0},
10848         {0x5B, 0x2, 0x2, 0, 0},
10849         {0x5C, 0x4, 0x4, 1, 1},
10850         {0x5D, 0x7, 0x7, 0, 0},
10851         {0x5E, 0x55, 0x55, 0, 0},
10852         {0x5F, 0x23, 0x23, 0, 0},
10853         {0x60, 0x41, 0x41, 0, 0},
10854         {0x61, 0x1, 0x1, 0, 0},
10855         {0x62, 0xa, 0xa, 0, 0},
10856         {0x63, 0, 0, 0, 0},
10857         {0x64, 0, 0, 0, 0},
10858         {0x65, 0, 0, 0, 0},
10859         {0x66, 0, 0, 0, 0},
10860         {0x67, 0, 0, 0, 0},
10861         {0x68, 0, 0, 0, 0},
10862         {0x69, 0, 0, 0, 0},
10863         {0x6A, 0, 0, 0, 0},
10864         {0x6B, 0xc, 0xc, 0, 0},
10865         {0x6C, 0, 0, 0, 0},
10866         {0x6D, 0, 0, 0, 0},
10867         {0x6E, 0, 0, 0, 0},
10868         {0x6F, 0, 0, 0, 0},
10869         {0x70, 0, 0, 0, 0},
10870         {0x71, 0, 0, 0, 0},
10871         {0x72, 0x22, 0x22, 0, 0},
10872         {0x73, 0x22, 0x22, 0, 0},
10873         {0x74, 0, 0, 1, 1},
10874         {0x75, 0xa, 0xa, 0, 0},
10875         {0x76, 0x1, 0x1, 0, 0},
10876         {0x77, 0x22, 0x22, 0, 0},
10877         {0x78, 0x30, 0x30, 0, 0},
10878         {0x79, 0, 0, 0, 0},
10879         {0x7A, 0, 0, 0, 0},
10880         {0x7B, 0, 0, 0, 0},
10881         {0x7C, 0, 0, 0, 0},
10882         {0x7D, 0x5, 0x5, 1, 1},
10883         {0x7E, 0, 0, 0, 0},
10884         {0x7F, 0, 0, 0, 0},
10885         {0x80, 0, 0, 0, 0},
10886         {0x81, 0, 0, 0, 0},
10887         {0x82, 0, 0, 0, 0},
10888         {0x83, 0, 0, 0, 0},
10889         {0x84, 0, 0, 0, 0},
10890         {0x85, 0, 0, 0, 0},
10891         {0x86, 0, 0, 0, 0},
10892         {0x87, 0, 0, 0, 0},
10893         {0x88, 0, 0, 0, 0},
10894         {0x89, 0, 0, 0, 0},
10895         {0x8A, 0, 0, 0, 0},
10896         {0x8B, 0, 0, 0, 0},
10897         {0x8C, 0, 0, 0, 0},
10898         {0x8D, 0, 0, 0, 0},
10899         {0x8E, 0, 0, 0, 0},
10900         {0x8F, 0, 0, 0, 0},
10901         {0x90, 0, 0, 0, 0},
10902         {0x91, 0, 0, 0, 0},
10903         {0x92, 0, 0, 0, 0},
10904         {0x93, 0, 0, 0, 0},
10905         {0x94, 0, 0, 0, 0},
10906         {0xFFFF, 0, 0, 0, 0},
10907 };
10908
10909 radio_regs_t regs_SYN_2056_rev11[] = {
10910         {0x02, 0, 0, 0, 0},
10911         {0x03, 0, 0, 0, 0},
10912         {0x04, 0, 0, 0, 0},
10913         {0x05, 0, 0, 0, 0},
10914         {0x06, 0, 0, 0, 0},
10915         {0x07, 0, 0, 0, 0},
10916         {0x08, 0, 0, 0, 0},
10917         {0x09, 0x1, 0x1, 0, 0},
10918         {0x0A, 0, 0, 0, 0},
10919         {0x0B, 0, 0, 0, 0},
10920         {0x0C, 0, 0, 0, 0},
10921         {0x0D, 0, 0, 0, 0},
10922         {0x0E, 0, 0, 0, 0},
10923         {0x0F, 0, 0, 0, 0},
10924         {0x10, 0, 0, 0, 0},
10925         {0x11, 0, 0, 0, 0},
10926         {0x12, 0, 0, 0, 0},
10927         {0x13, 0, 0, 0, 0},
10928         {0x14, 0, 0, 0, 0},
10929         {0x15, 0, 0, 0, 0},
10930         {0x16, 0, 0, 0, 0},
10931         {0x17, 0, 0, 0, 0},
10932         {0x18, 0, 0, 0, 0},
10933         {0x19, 0, 0, 0, 0},
10934         {0x1A, 0, 0, 0, 0},
10935         {0x1B, 0, 0, 0, 0},
10936         {0x1C, 0, 0, 0, 0},
10937         {0x1D, 0, 0, 0, 0},
10938         {0x1E, 0, 0, 0, 0},
10939         {0x1F, 0, 0, 0, 0},
10940         {0x20, 0, 0, 0, 0},
10941         {0x21, 0, 0, 0, 0},
10942         {0x22, 0x60, 0x60, 0, 0},
10943         {0x23, 0x6, 0x6, 0, 0},
10944         {0x24, 0xc, 0xc, 0, 0},
10945         {0x25, 0, 0, 0, 0},
10946         {0x26, 0, 0, 0, 0},
10947         {0x27, 0, 0, 0, 0},
10948         {0x28, 0x1, 0x1, 0, 0},
10949         {0x29, 0, 0, 0, 0},
10950         {0x2A, 0, 0, 0, 0},
10951         {0x2B, 0, 0, 0, 0},
10952         {0x2C, 0, 0, 0, 0},
10953         {0x2D, 0, 0, 0, 0},
10954         {0x2E, 0, 0, 0, 0},
10955         {0x2F, 0x1f, 0x1f, 0, 0},
10956         {0x30, 0x15, 0x15, 0, 0},
10957         {0x31, 0xf, 0xf, 0, 0},
10958         {0x32, 0, 0, 0, 0},
10959         {0x33, 0, 0, 0, 0},
10960         {0x34, 0, 0, 0, 0},
10961         {0x35, 0, 0, 0, 0},
10962         {0x36, 0, 0, 0, 0},
10963         {0x37, 0, 0, 0, 0},
10964         {0x38, 0, 0, 0, 0},
10965         {0x39, 0, 0, 0, 0},
10966         {0x3A, 0, 0, 0, 0},
10967         {0x3B, 0, 0, 0, 0},
10968         {0x3C, 0x13, 0x13, 0, 0},
10969         {0x3D, 0xf, 0xf, 0, 0},
10970         {0x3E, 0x18, 0x18, 0, 0},
10971         {0x3F, 0, 0, 0, 0},
10972         {0x40, 0, 0, 0, 0},
10973         {0x41, 0x20, 0x20, 0, 0},
10974         {0x42, 0x20, 0x20, 0, 0},
10975         {0x43, 0, 0, 0, 0},
10976         {0x44, 0x77, 0x77, 0, 0},
10977         {0x45, 0x7, 0x7, 0, 0},
10978         {0x46, 0x1, 0x1, 0, 0},
10979         {0x47, 0x6, 0x6, 1, 1},
10980         {0x48, 0xf, 0xf, 0, 0},
10981         {0x49, 0x3f, 0x3f, 1, 1},
10982         {0x4A, 0x32, 0x32, 0, 0},
10983         {0x4B, 0x6, 0x6, 1, 1},
10984         {0x4C, 0x6, 0x6, 1, 1},
10985         {0x4D, 0x4, 0x4, 0, 0},
10986         {0x4E, 0x2b, 0x2b, 1, 1},
10987         {0x4F, 0x1, 0x1, 0, 0},
10988         {0x50, 0x1c, 0x1c, 0, 0},
10989         {0x51, 0x2, 0x2, 0, 0},
10990         {0x52, 0x2, 0x2, 0, 0},
10991         {0x53, 0xf7, 0xf7, 1, 1},
10992         {0x54, 0xb4, 0xb4, 0, 0},
10993         {0x55, 0xd2, 0xd2, 0, 0},
10994         {0x56, 0, 0, 0, 0},
10995         {0x57, 0, 0, 0, 0},
10996         {0x58, 0x4, 0x4, 0, 0},
10997         {0x59, 0x96, 0x96, 0, 0},
10998         {0x5A, 0x3e, 0x3e, 0, 0},
10999         {0x5B, 0x3e, 0x3e, 0, 0},
11000         {0x5C, 0x13, 0x13, 0, 0},
11001         {0x5D, 0x2, 0x2, 0, 0},
11002         {0x5E, 0, 0, 0, 0},
11003         {0x5F, 0x7, 0x7, 0, 0},
11004         {0x60, 0x7, 0x7, 1, 1},
11005         {0x61, 0x8, 0x8, 0, 0},
11006         {0x62, 0x3, 0x3, 0, 0},
11007         {0x63, 0, 0, 0, 0},
11008         {0x64, 0, 0, 0, 0},
11009         {0x65, 0, 0, 0, 0},
11010         {0x66, 0, 0, 0, 0},
11011         {0x67, 0, 0, 0, 0},
11012         {0x68, 0x40, 0x40, 0, 0},
11013         {0x69, 0, 0, 0, 0},
11014         {0x6A, 0, 0, 0, 0},
11015         {0x6B, 0, 0, 0, 0},
11016         {0x6C, 0, 0, 0, 0},
11017         {0x6D, 0x1, 0x1, 0, 0},
11018         {0x6E, 0, 0, 0, 0},
11019         {0x6F, 0, 0, 0, 0},
11020         {0x70, 0x60, 0x60, 0, 0},
11021         {0x71, 0x66, 0x66, 0, 0},
11022         {0x72, 0xc, 0xc, 0, 0},
11023         {0x73, 0x66, 0x66, 0, 0},
11024         {0x74, 0x8f, 0x8f, 1, 1},
11025         {0x75, 0, 0, 0, 0},
11026         {0x76, 0xcc, 0xcc, 0, 0},
11027         {0x77, 0x1, 0x1, 0, 0},
11028         {0x78, 0x66, 0x66, 0, 0},
11029         {0x79, 0x66, 0x66, 0, 0},
11030         {0x7A, 0, 0, 0, 0},
11031         {0x7B, 0, 0, 0, 0},
11032         {0x7C, 0, 0, 0, 0},
11033         {0x7D, 0, 0, 0, 0},
11034         {0x7E, 0, 0, 0, 0},
11035         {0x7F, 0, 0, 0, 0},
11036         {0x80, 0, 0, 0, 0},
11037         {0x81, 0, 0, 0, 0},
11038         {0x82, 0, 0, 0, 0},
11039         {0x83, 0, 0, 0, 0},
11040         {0x84, 0, 0, 0, 0},
11041         {0x85, 0xff, 0xff, 0, 0},
11042         {0x86, 0, 0, 0, 0},
11043         {0x87, 0, 0, 0, 0},
11044         {0x88, 0, 0, 0, 0},
11045         {0x89, 0, 0, 0, 0},
11046         {0x8A, 0, 0, 0, 0},
11047         {0x8B, 0, 0, 0, 0},
11048         {0x8C, 0, 0, 0, 0},
11049         {0x8D, 0, 0, 0, 0},
11050         {0x8E, 0, 0, 0, 0},
11051         {0x8F, 0, 0, 0, 0},
11052         {0x90, 0, 0, 0, 0},
11053         {0x91, 0, 0, 0, 0},
11054         {0x92, 0, 0, 0, 0},
11055         {0x93, 0, 0, 0, 0},
11056         {0x94, 0, 0, 0, 0},
11057         {0x95, 0, 0, 0, 0},
11058         {0x96, 0, 0, 0, 0},
11059         {0x97, 0, 0, 0, 0},
11060         {0x98, 0, 0, 0, 0},
11061         {0x99, 0, 0, 0, 0},
11062         {0x9A, 0, 0, 0, 0},
11063         {0x9B, 0, 0, 0, 0},
11064         {0x9C, 0, 0, 0, 0},
11065         {0x9D, 0, 0, 0, 0},
11066         {0x9E, 0, 0, 0, 0},
11067         {0x9F, 0x6, 0x6, 0, 0},
11068         {0xA0, 0x66, 0x66, 0, 0},
11069         {0xA1, 0x66, 0x66, 0, 0},
11070         {0xA2, 0x66, 0x66, 0, 0},
11071         {0xA3, 0x66, 0x66, 0, 0},
11072         {0xA4, 0x66, 0x66, 0, 0},
11073         {0xA5, 0x66, 0x66, 0, 0},
11074         {0xA6, 0x66, 0x66, 0, 0},
11075         {0xA7, 0x66, 0x66, 0, 0},
11076         {0xA8, 0x66, 0x66, 0, 0},
11077         {0xA9, 0x66, 0x66, 0, 0},
11078         {0xAA, 0x66, 0x66, 0, 0},
11079         {0xAB, 0x66, 0x66, 0, 0},
11080         {0xAC, 0x66, 0x66, 0, 0},
11081         {0xAD, 0x66, 0x66, 0, 0},
11082         {0xAE, 0x66, 0x66, 0, 0},
11083         {0xAF, 0x66, 0x66, 0, 0},
11084         {0xB0, 0x66, 0x66, 0, 0},
11085         {0xB1, 0x66, 0x66, 0, 0},
11086         {0xB2, 0x66, 0x66, 0, 0},
11087         {0xB3, 0xa, 0xa, 0, 0},
11088         {0xB4, 0, 0, 0, 0},
11089         {0xB5, 0, 0, 0, 0},
11090         {0xB6, 0, 0, 0, 0},
11091         {0xFFFF, 0, 0, 0, 0},
11092 };
11093
11094 radio_regs_t regs_TX_2056_rev11[] = {
11095         {0x02, 0, 0, 0, 0},
11096         {0x03, 0, 0, 0, 0},
11097         {0x04, 0, 0, 0, 0},
11098         {0x05, 0, 0, 0, 0},
11099         {0x06, 0, 0, 0, 0},
11100         {0x07, 0, 0, 0, 0},
11101         {0x08, 0, 0, 0, 0},
11102         {0x09, 0, 0, 0, 0},
11103         {0x0A, 0, 0, 0, 0},
11104         {0x0B, 0, 0, 0, 0},
11105         {0x0C, 0, 0, 0, 0},
11106         {0x0D, 0, 0, 0, 0},
11107         {0x0E, 0, 0, 0, 0},
11108         {0x0F, 0, 0, 0, 0},
11109         {0x10, 0, 0, 0, 0},
11110         {0x11, 0, 0, 0, 0},
11111         {0x12, 0, 0, 0, 0},
11112         {0x13, 0, 0, 0, 0},
11113         {0x14, 0, 0, 0, 0},
11114         {0x15, 0, 0, 0, 0},
11115         {0x16, 0, 0, 0, 0},
11116         {0x17, 0, 0, 0, 0},
11117         {0x18, 0, 0, 0, 0},
11118         {0x19, 0, 0, 0, 0},
11119         {0x1A, 0, 0, 0, 0},
11120         {0x1B, 0, 0, 0, 0},
11121         {0x1C, 0, 0, 0, 0},
11122         {0x1D, 0, 0, 0, 0},
11123         {0x1E, 0, 0, 0, 0},
11124         {0x1F, 0, 0, 0, 0},
11125         {0x20, 0, 0, 0, 0},
11126         {0x21, 0x88, 0x88, 0, 0},
11127         {0x22, 0x88, 0x88, 0, 0},
11128         {0x23, 0x88, 0x88, 0, 0},
11129         {0x24, 0x88, 0x88, 0, 0},
11130         {0x25, 0xc, 0xc, 0, 0},
11131         {0x26, 0, 0, 0, 0},
11132         {0x27, 0x3, 0x3, 0, 0},
11133         {0x28, 0, 0, 0, 0},
11134         {0x29, 0x3, 0x3, 0, 0},
11135         {0x2A, 0x37, 0x37, 0, 0},
11136         {0x2B, 0x3, 0x3, 0, 0},
11137         {0x2C, 0, 0, 0, 0},
11138         {0x2D, 0, 0, 0, 0},
11139         {0x2E, 0x1, 0x1, 0, 0},
11140         {0x2F, 0x1, 0x1, 0, 0},
11141         {0x30, 0, 0, 0, 0},
11142         {0x31, 0, 0, 0, 0},
11143         {0x32, 0, 0, 0, 0},
11144         {0x33, 0x11, 0x11, 0, 0},
11145         {0x34, 0xee, 0xee, 1, 1},
11146         {0x35, 0, 0, 0, 0},
11147         {0x36, 0, 0, 0, 0},
11148         {0x37, 0x3, 0x3, 0, 0},
11149         {0x38, 0x50, 0x50, 1, 1},
11150         {0x39, 0, 0, 0, 0},
11151         {0x3A, 0x50, 0x50, 1, 1},
11152         {0x3B, 0, 0, 0, 0},
11153         {0x3C, 0x6e, 0x6e, 0, 0},
11154         {0x3D, 0xf0, 0xf0, 1, 1},
11155         {0x3E, 0, 0, 0, 0},
11156         {0x3F, 0, 0, 0, 0},
11157         {0x40, 0, 0, 0, 0},
11158         {0x41, 0x3, 0x3, 0, 0},
11159         {0x42, 0x3, 0x3, 0, 0},
11160         {0x43, 0, 0, 0, 0},
11161         {0x44, 0x1e, 0x1e, 0, 0},
11162         {0x45, 0, 0, 0, 0},
11163         {0x46, 0x6e, 0x6e, 0, 0},
11164         {0x47, 0xf0, 0xf0, 1, 1},
11165         {0x48, 0, 0, 0, 0},
11166         {0x49, 0x2, 0x2, 0, 0},
11167         {0x4A, 0xff, 0xff, 1, 1},
11168         {0x4B, 0xc, 0xc, 0, 0},
11169         {0x4C, 0, 0, 0, 0},
11170         {0x4D, 0x38, 0x38, 0, 0},
11171         {0x4E, 0x70, 0x70, 1, 1},
11172         {0x4F, 0x2, 0x2, 0, 0},
11173         {0x50, 0x88, 0x88, 0, 0},
11174         {0x51, 0xc, 0xc, 0, 0},
11175         {0x52, 0, 0, 0, 0},
11176         {0x53, 0x8, 0x8, 0, 0},
11177         {0x54, 0x70, 0x70, 1, 1},
11178         {0x55, 0x2, 0x2, 0, 0},
11179         {0x56, 0xff, 0xff, 1, 1},
11180         {0x57, 0, 0, 0, 0},
11181         {0x58, 0x83, 0x83, 0, 0},
11182         {0x59, 0x77, 0x77, 1, 1},
11183         {0x5A, 0, 0, 0, 0},
11184         {0x5B, 0x2, 0x2, 0, 0},
11185         {0x5C, 0x88, 0x88, 0, 0},
11186         {0x5D, 0, 0, 0, 0},
11187         {0x5E, 0x8, 0x8, 0, 0},
11188         {0x5F, 0x77, 0x77, 1, 1},
11189         {0x60, 0x1, 0x1, 0, 0},
11190         {0x61, 0, 0, 0, 0},
11191         {0x62, 0x7, 0x7, 0, 0},
11192         {0x63, 0, 0, 0, 0},
11193         {0x64, 0x7, 0x7, 0, 0},
11194         {0x65, 0, 0, 0, 0},
11195         {0x66, 0, 0, 0, 0},
11196         {0x67, 0, 0, 1, 1},
11197         {0x68, 0, 0, 0, 0},
11198         {0x69, 0xa, 0xa, 0, 0},
11199         {0x6A, 0, 0, 0, 0},
11200         {0x6B, 0, 0, 0, 0},
11201         {0x6C, 0, 0, 0, 0},
11202         {0x6D, 0, 0, 0, 0},
11203         {0x6E, 0, 0, 0, 0},
11204         {0x6F, 0, 0, 0, 0},
11205         {0x70, 0, 0, 0, 0},
11206         {0x71, 0x2, 0x2, 0, 0},
11207         {0x72, 0, 0, 0, 0},
11208         {0x73, 0, 0, 0, 0},
11209         {0x74, 0xe, 0xe, 0, 0},
11210         {0x75, 0xe, 0xe, 0, 0},
11211         {0x76, 0xe, 0xe, 0, 0},
11212         {0x77, 0x13, 0x13, 0, 0},
11213         {0x78, 0x13, 0x13, 0, 0},
11214         {0x79, 0x1b, 0x1b, 0, 0},
11215         {0x7A, 0x1b, 0x1b, 0, 0},
11216         {0x7B, 0x55, 0x55, 0, 0},
11217         {0x7C, 0x5b, 0x5b, 0, 0},
11218         {0x7D, 0x30, 0x30, 1, 1},
11219         {0x7E, 0, 0, 0, 0},
11220         {0x7F, 0, 0, 0, 0},
11221         {0x80, 0, 0, 0, 0},
11222         {0x81, 0, 0, 0, 0},
11223         {0x82, 0, 0, 0, 0},
11224         {0x83, 0, 0, 0, 0},
11225         {0x84, 0, 0, 0, 0},
11226         {0x85, 0, 0, 0, 0},
11227         {0x86, 0, 0, 0, 0},
11228         {0x87, 0, 0, 0, 0},
11229         {0x88, 0, 0, 0, 0},
11230         {0x89, 0, 0, 0, 0},
11231         {0x8A, 0, 0, 0, 0},
11232         {0x8B, 0, 0, 0, 0},
11233         {0x8C, 0, 0, 0, 0},
11234         {0x8D, 0, 0, 0, 0},
11235         {0x8E, 0, 0, 0, 0},
11236         {0x8F, 0, 0, 0, 0},
11237         {0x90, 0, 0, 0, 0},
11238         {0x91, 0, 0, 0, 0},
11239         {0x92, 0, 0, 0, 0},
11240         {0x93, 0x70, 0x70, 0, 0},
11241         {0x94, 0x70, 0x70, 0, 0},
11242         {0x95, 0x70, 0x70, 0, 0},
11243         {0x96, 0x70, 0x70, 0, 0},
11244         {0x97, 0x70, 0x70, 0, 0},
11245         {0x98, 0x70, 0x70, 0, 0},
11246         {0x99, 0x70, 0x70, 0, 0},
11247         {0x9A, 0x70, 0x70, 0, 0},
11248         {0xFFFF, 0, 0, 0, 0},
11249 };
11250
11251 radio_regs_t regs_RX_2056_rev11[] = {
11252         {0x02, 0, 0, 0, 0},
11253         {0x03, 0, 0, 0, 0},
11254         {0x04, 0, 0, 0, 0},
11255         {0x05, 0, 0, 0, 0},
11256         {0x06, 0, 0, 0, 0},
11257         {0x07, 0, 0, 0, 0},
11258         {0x08, 0, 0, 0, 0},
11259         {0x09, 0, 0, 0, 0},
11260         {0x0A, 0, 0, 0, 0},
11261         {0x0B, 0, 0, 0, 0},
11262         {0x0C, 0, 0, 0, 0},
11263         {0x0D, 0, 0, 0, 0},
11264         {0x0E, 0, 0, 0, 0},
11265         {0x0F, 0, 0, 0, 0},
11266         {0x10, 0, 0, 0, 0},
11267         {0x11, 0, 0, 0, 0},
11268         {0x12, 0, 0, 0, 0},
11269         {0x13, 0, 0, 0, 0},
11270         {0x14, 0, 0, 0, 0},
11271         {0x15, 0, 0, 0, 0},
11272         {0x16, 0, 0, 0, 0},
11273         {0x17, 0, 0, 0, 0},
11274         {0x18, 0, 0, 0, 0},
11275         {0x19, 0, 0, 0, 0},
11276         {0x1A, 0, 0, 0, 0},
11277         {0x1B, 0, 0, 0, 0},
11278         {0x1C, 0, 0, 0, 0},
11279         {0x1D, 0, 0, 0, 0},
11280         {0x1E, 0, 0, 0, 0},
11281         {0x1F, 0, 0, 0, 0},
11282         {0x20, 0x3, 0x3, 0, 0},
11283         {0x21, 0, 0, 0, 0},
11284         {0x22, 0, 0, 0, 0},
11285         {0x23, 0x90, 0x90, 0, 0},
11286         {0x24, 0x55, 0x55, 0, 0},
11287         {0x25, 0x15, 0x15, 0, 0},
11288         {0x26, 0x5, 0x5, 0, 0},
11289         {0x27, 0x15, 0x15, 0, 0},
11290         {0x28, 0x5, 0x5, 0, 0},
11291         {0x29, 0x20, 0x20, 0, 0},
11292         {0x2A, 0x11, 0x11, 0, 0},
11293         {0x2B, 0x90, 0x90, 0, 0},
11294         {0x2C, 0, 0, 0, 0},
11295         {0x2D, 0x88, 0x88, 0, 0},
11296         {0x2E, 0x32, 0x32, 0, 0},
11297         {0x2F, 0x77, 0x77, 0, 0},
11298         {0x30, 0x17, 0x17, 1, 1},
11299         {0x31, 0xff, 0xff, 1, 1},
11300         {0x32, 0x20, 0x20, 0, 0},
11301         {0x33, 0, 0, 0, 0},
11302         {0x34, 0x88, 0x88, 0, 0},
11303         {0x35, 0x32, 0x32, 0, 0},
11304         {0x36, 0x77, 0x77, 0, 0},
11305         {0x37, 0x17, 0x17, 1, 1},
11306         {0x38, 0xf0, 0xf0, 1, 1},
11307         {0x39, 0x20, 0x20, 0, 0},
11308         {0x3A, 0x8, 0x8, 0, 0},
11309         {0x3B, 0x55, 0x55, 1, 1},
11310         {0x3C, 0, 0, 0, 0},
11311         {0x3D, 0x88, 0x88, 1, 1},
11312         {0x3E, 0, 0, 0, 0},
11313         {0x3F, 0x44, 0x44, 0, 0},
11314         {0x40, 0x7, 0x7, 1, 1},
11315         {0x41, 0x6, 0x6, 0, 0},
11316         {0x42, 0x4, 0x4, 0, 0},
11317         {0x43, 0, 0, 0, 0},
11318         {0x44, 0x8, 0x8, 0, 0},
11319         {0x45, 0x55, 0x55, 1, 1},
11320         {0x46, 0, 0, 0, 0},
11321         {0x47, 0x11, 0x11, 0, 0},
11322         {0x48, 0, 0, 0, 0},
11323         {0x49, 0x44, 0x44, 0, 0},
11324         {0x4A, 0x7, 0x7, 0, 0},
11325         {0x4B, 0x6, 0x6, 0, 0},
11326         {0x4C, 0x4, 0x4, 0, 0},
11327         {0x4D, 0, 0, 0, 0},
11328         {0x4E, 0, 0, 0, 0},
11329         {0x4F, 0x26, 0x26, 1, 1},
11330         {0x50, 0x26, 0x26, 1, 1},
11331         {0x51, 0xf, 0xf, 1, 1},
11332         {0x52, 0xf, 0xf, 1, 1},
11333         {0x53, 0x44, 0x44, 0, 0},
11334         {0x54, 0, 0, 0, 0},
11335         {0x55, 0, 0, 0, 0},
11336         {0x56, 0x8, 0x8, 0, 0},
11337         {0x57, 0x8, 0x8, 0, 0},
11338         {0x58, 0x7, 0x7, 0, 0},
11339         {0x59, 0x22, 0x22, 0, 0},
11340         {0x5A, 0x22, 0x22, 0, 0},
11341         {0x5B, 0x2, 0x2, 0, 0},
11342         {0x5C, 0x4, 0x4, 1, 1},
11343         {0x5D, 0x7, 0x7, 0, 0},
11344         {0x5E, 0x55, 0x55, 0, 0},
11345         {0x5F, 0x23, 0x23, 0, 0},
11346         {0x60, 0x41, 0x41, 0, 0},
11347         {0x61, 0x1, 0x1, 0, 0},
11348         {0x62, 0xa, 0xa, 0, 0},
11349         {0x63, 0, 0, 0, 0},
11350         {0x64, 0, 0, 0, 0},
11351         {0x65, 0, 0, 0, 0},
11352         {0x66, 0, 0, 0, 0},
11353         {0x67, 0, 0, 0, 0},
11354         {0x68, 0, 0, 0, 0},
11355         {0x69, 0, 0, 0, 0},
11356         {0x6A, 0, 0, 0, 0},
11357         {0x6B, 0xc, 0xc, 0, 0},
11358         {0x6C, 0, 0, 0, 0},
11359         {0x6D, 0, 0, 0, 0},
11360         {0x6E, 0, 0, 0, 0},
11361         {0x6F, 0, 0, 0, 0},
11362         {0x70, 0, 0, 0, 0},
11363         {0x71, 0, 0, 0, 0},
11364         {0x72, 0x22, 0x22, 0, 0},
11365         {0x73, 0x22, 0x22, 0, 0},
11366         {0x74, 0, 0, 1, 1},
11367         {0x75, 0xa, 0xa, 0, 0},
11368         {0x76, 0x1, 0x1, 0, 0},
11369         {0x77, 0x22, 0x22, 0, 0},
11370         {0x78, 0x30, 0x30, 0, 0},
11371         {0x79, 0, 0, 0, 0},
11372         {0x7A, 0, 0, 0, 0},
11373         {0x7B, 0, 0, 0, 0},
11374         {0x7C, 0, 0, 0, 0},
11375         {0x7D, 0x5, 0x5, 1, 1},
11376         {0x7E, 0, 0, 0, 0},
11377         {0x7F, 0, 0, 0, 0},
11378         {0x80, 0, 0, 0, 0},
11379         {0x81, 0, 0, 0, 0},
11380         {0x82, 0, 0, 0, 0},
11381         {0x83, 0, 0, 0, 0},
11382         {0x84, 0, 0, 0, 0},
11383         {0x85, 0, 0, 0, 0},
11384         {0x86, 0, 0, 0, 0},
11385         {0x87, 0, 0, 0, 0},
11386         {0x88, 0, 0, 0, 0},
11387         {0x89, 0, 0, 0, 0},
11388         {0x8A, 0, 0, 0, 0},
11389         {0x8B, 0, 0, 0, 0},
11390         {0x8C, 0, 0, 0, 0},
11391         {0x8D, 0, 0, 0, 0},
11392         {0x8E, 0, 0, 0, 0},
11393         {0x8F, 0, 0, 0, 0},
11394         {0x90, 0, 0, 0, 0},
11395         {0x91, 0, 0, 0, 0},
11396         {0x92, 0, 0, 0, 0},
11397         {0x93, 0, 0, 0, 0},
11398         {0x94, 0, 0, 0, 0},
11399         {0xFFFF, 0, 0, 0, 0},
11400 };
11401
11402 radio_20xx_regs_t regs_2057_rev4[] = {
11403         {0x00, 0x84, 0},
11404         {0x01, 0, 0},
11405         {0x02, 0x60, 0},
11406         {0x03, 0x1f, 0},
11407         {0x04, 0x4, 0},
11408         {0x05, 0x2, 0},
11409         {0x06, 0x1, 0},
11410         {0x07, 0x1, 0},
11411         {0x08, 0x1, 0},
11412         {0x09, 0x69, 0},
11413         {0x0A, 0x66, 0},
11414         {0x0B, 0x6, 0},
11415         {0x0C, 0x18, 0},
11416         {0x0D, 0x3, 0},
11417         {0x0E, 0x20, 1},
11418         {0x0F, 0x20, 0},
11419         {0x10, 0, 0},
11420         {0x11, 0x7c, 0},
11421         {0x12, 0x42, 0},
11422         {0x13, 0xbd, 0},
11423         {0x14, 0x7, 0},
11424         {0x15, 0xf7, 0},
11425         {0x16, 0x8, 0},
11426         {0x17, 0x17, 0},
11427         {0x18, 0x7, 0},
11428         {0x19, 0, 0},
11429         {0x1A, 0x2, 0},
11430         {0x1B, 0x13, 0},
11431         {0x1C, 0x3e, 0},
11432         {0x1D, 0x3e, 0},
11433         {0x1E, 0x96, 0},
11434         {0x1F, 0x4, 0},
11435         {0x20, 0, 0},
11436         {0x21, 0, 0},
11437         {0x22, 0x17, 0},
11438         {0x23, 0x4, 0},
11439         {0x24, 0x1, 0},
11440         {0x25, 0x6, 0},
11441         {0x26, 0x4, 0},
11442         {0x27, 0xd, 0},
11443         {0x28, 0xd, 0},
11444         {0x29, 0x30, 0},
11445         {0x2A, 0x32, 0},
11446         {0x2B, 0x8, 0},
11447         {0x2C, 0x1c, 0},
11448         {0x2D, 0x2, 0},
11449         {0x2E, 0x4, 0},
11450         {0x2F, 0x7f, 0},
11451         {0x30, 0x27, 0},
11452         {0x31, 0, 1},
11453         {0x32, 0, 1},
11454         {0x33, 0, 1},
11455         {0x34, 0, 0},
11456         {0x35, 0x26, 1},
11457         {0x36, 0x18, 0},
11458         {0x37, 0x7, 0},
11459         {0x38, 0x66, 0},
11460         {0x39, 0x66, 0},
11461         {0x3A, 0x66, 0},
11462         {0x3B, 0x66, 0},
11463         {0x3C, 0xff, 1},
11464         {0x3D, 0xff, 1},
11465         {0x3E, 0xff, 1},
11466         {0x3F, 0xff, 1},
11467         {0x40, 0x16, 0},
11468         {0x41, 0x7, 0},
11469         {0x42, 0x19, 0},
11470         {0x43, 0x7, 0},
11471         {0x44, 0x6, 0},
11472         {0x45, 0x3, 0},
11473         {0x46, 0x1, 0},
11474         {0x47, 0x7, 0},
11475         {0x48, 0x33, 0},
11476         {0x49, 0x5, 0},
11477         {0x4A, 0x77, 0},
11478         {0x4B, 0x66, 0},
11479         {0x4C, 0x66, 0},
11480         {0x4D, 0, 0},
11481         {0x4E, 0x4, 0},
11482         {0x4F, 0xc, 0},
11483         {0x50, 0, 0},
11484         {0x51, 0x75, 0},
11485         {0x56, 0x7, 0},
11486         {0x57, 0, 0},
11487         {0x58, 0, 0},
11488         {0x59, 0xa8, 0},
11489         {0x5A, 0, 0},
11490         {0x5B, 0x1f, 0},
11491         {0x5C, 0x30, 0},
11492         {0x5D, 0x1, 0},
11493         {0x5E, 0x30, 0},
11494         {0x5F, 0x70, 0},
11495         {0x60, 0, 0},
11496         {0x61, 0, 0},
11497         {0x62, 0x33, 1},
11498         {0x63, 0x19, 0},
11499         {0x64, 0x62, 0},
11500         {0x65, 0, 0},
11501         {0x66, 0x11, 0},
11502         {0x69, 0, 0},
11503         {0x6A, 0x7e, 0},
11504         {0x6B, 0x3f, 0},
11505         {0x6C, 0x7f, 0},
11506         {0x6D, 0x78, 0},
11507         {0x6E, 0xc8, 0},
11508         {0x6F, 0x88, 0},
11509         {0x70, 0x8, 0},
11510         {0x71, 0xf, 0},
11511         {0x72, 0xbc, 0},
11512         {0x73, 0x8, 0},
11513         {0x74, 0x60, 0},
11514         {0x75, 0x1e, 0},
11515         {0x76, 0x70, 0},
11516         {0x77, 0, 0},
11517         {0x78, 0, 0},
11518         {0x79, 0, 0},
11519         {0x7A, 0x33, 0},
11520         {0x7B, 0x1e, 0},
11521         {0x7C, 0x62, 0},
11522         {0x7D, 0x11, 0},
11523         {0x80, 0x3c, 0},
11524         {0x81, 0x9c, 0},
11525         {0x82, 0xa, 0},
11526         {0x83, 0x9d, 0},
11527         {0x84, 0xa, 0},
11528         {0x85, 0, 0},
11529         {0x86, 0x40, 0},
11530         {0x87, 0x40, 0},
11531         {0x88, 0x88, 0},
11532         {0x89, 0x10, 0},
11533         {0x8A, 0xf0, 1},
11534         {0x8B, 0x10, 1},
11535         {0x8C, 0xf0, 1},
11536         {0x8D, 0, 0},
11537         {0x8E, 0, 0},
11538         {0x8F, 0x10, 0},
11539         {0x90, 0x55, 0},
11540         {0x91, 0x3f, 1},
11541         {0x92, 0x36, 1},
11542         {0x93, 0, 0},
11543         {0x94, 0, 0},
11544         {0x95, 0, 0},
11545         {0x96, 0x87, 0},
11546         {0x97, 0x11, 0},
11547         {0x98, 0, 0},
11548         {0x99, 0x33, 0},
11549         {0x9A, 0x88, 0},
11550         {0x9B, 0, 0},
11551         {0x9C, 0x87, 0},
11552         {0x9D, 0x11, 0},
11553         {0x9E, 0, 0},
11554         {0x9F, 0x33, 0},
11555         {0xA0, 0x88, 0},
11556         {0xA1, 0xe1, 0},
11557         {0xA2, 0x3f, 0},
11558         {0xA3, 0x44, 0},
11559         {0xA4, 0x8c, 1},
11560         {0xA5, 0x6d, 0},
11561         {0xA6, 0x22, 0},
11562         {0xA7, 0xbe, 0},
11563         {0xA8, 0x55, 1},
11564         {0xA9, 0xc, 0},
11565         {0xAA, 0xc, 0},
11566         {0xAB, 0xaa, 0},
11567         {0xAC, 0x2, 0},
11568         {0xAD, 0, 0},
11569         {0xAE, 0x10, 0},
11570         {0xAF, 0x1, 1},
11571         {0xB0, 0, 0},
11572         {0xB1, 0, 0},
11573         {0xB2, 0x80, 0},
11574         {0xB3, 0x60, 0},
11575         {0xB4, 0x44, 0},
11576         {0xB5, 0x55, 0},
11577         {0xB6, 0x1, 0},
11578         {0xB7, 0x55, 0},
11579         {0xB8, 0x1, 0},
11580         {0xB9, 0x5, 0},
11581         {0xBA, 0x55, 0},
11582         {0xBB, 0x55, 0},
11583         {0xC1, 0, 0},
11584         {0xC2, 0, 0},
11585         {0xC3, 0, 0},
11586         {0xC4, 0, 0},
11587         {0xC5, 0, 0},
11588         {0xC6, 0, 0},
11589         {0xC7, 0, 0},
11590         {0xC8, 0, 0},
11591         {0xC9, 0, 0},
11592         {0xCA, 0, 0},
11593         {0xCB, 0, 0},
11594         {0xCC, 0, 0},
11595         {0xCD, 0, 0},
11596         {0xCE, 0x5e, 0},
11597         {0xCF, 0xc, 0},
11598         {0xD0, 0xc, 0},
11599         {0xD1, 0xc, 0},
11600         {0xD2, 0, 0},
11601         {0xD3, 0x2b, 0},
11602         {0xD4, 0xc, 0},
11603         {0xD5, 0, 0},
11604         {0xD6, 0x75, 0},
11605         {0xDB, 0x7, 0},
11606         {0xDC, 0, 0},
11607         {0xDD, 0, 0},
11608         {0xDE, 0xa8, 0},
11609         {0xDF, 0, 0},
11610         {0xE0, 0x1f, 0},
11611         {0xE1, 0x30, 0},
11612         {0xE2, 0x1, 0},
11613         {0xE3, 0x30, 0},
11614         {0xE4, 0x70, 0},
11615         {0xE5, 0, 0},
11616         {0xE6, 0, 0},
11617         {0xE7, 0x33, 0},
11618         {0xE8, 0x19, 0},
11619         {0xE9, 0x62, 0},
11620         {0xEA, 0, 0},
11621         {0xEB, 0x11, 0},
11622         {0xEE, 0, 0},
11623         {0xEF, 0x7e, 0},
11624         {0xF0, 0x3f, 0},
11625         {0xF1, 0x7f, 0},
11626         {0xF2, 0x78, 0},
11627         {0xF3, 0xc8, 0},
11628         {0xF4, 0x88, 0},
11629         {0xF5, 0x8, 0},
11630         {0xF6, 0xf, 0},
11631         {0xF7, 0xbc, 0},
11632         {0xF8, 0x8, 0},
11633         {0xF9, 0x60, 0},
11634         {0xFA, 0x1e, 0},
11635         {0xFB, 0x70, 0},
11636         {0xFC, 0, 0},
11637         {0xFD, 0, 0},
11638         {0xFE, 0, 0},
11639         {0xFF, 0x33, 0},
11640         {0x100, 0x1e, 0},
11641         {0x101, 0x62, 0},
11642         {0x102, 0x11, 0},
11643         {0x105, 0x3c, 0},
11644         {0x106, 0x9c, 0},
11645         {0x107, 0xa, 0},
11646         {0x108, 0x9d, 0},
11647         {0x109, 0xa, 0},
11648         {0x10A, 0, 0},
11649         {0x10B, 0x40, 0},
11650         {0x10C, 0x40, 0},
11651         {0x10D, 0x88, 0},
11652         {0x10E, 0x10, 0},
11653         {0x10F, 0xf0, 1},
11654         {0x110, 0x10, 1},
11655         {0x111, 0xf0, 1},
11656         {0x112, 0, 0},
11657         {0x113, 0, 0},
11658         {0x114, 0x10, 0},
11659         {0x115, 0x55, 0},
11660         {0x116, 0x3f, 1},
11661         {0x117, 0x36, 1},
11662         {0x118, 0, 0},
11663         {0x119, 0, 0},
11664         {0x11A, 0, 0},
11665         {0x11B, 0x87, 0},
11666         {0x11C, 0x11, 0},
11667         {0x11D, 0, 0},
11668         {0x11E, 0x33, 0},
11669         {0x11F, 0x88, 0},
11670         {0x120, 0, 0},
11671         {0x121, 0x87, 0},
11672         {0x122, 0x11, 0},
11673         {0x123, 0, 0},
11674         {0x124, 0x33, 0},
11675         {0x125, 0x88, 0},
11676         {0x126, 0xe1, 0},
11677         {0x127, 0x3f, 0},
11678         {0x128, 0x44, 0},
11679         {0x129, 0x8c, 1},
11680         {0x12A, 0x6d, 0},
11681         {0x12B, 0x22, 0},
11682         {0x12C, 0xbe, 0},
11683         {0x12D, 0x55, 1},
11684         {0x12E, 0xc, 0},
11685         {0x12F, 0xc, 0},
11686         {0x130, 0xaa, 0},
11687         {0x131, 0x2, 0},
11688         {0x132, 0, 0},
11689         {0x133, 0x10, 0},
11690         {0x134, 0x1, 1},
11691         {0x135, 0, 0},
11692         {0x136, 0, 0},
11693         {0x137, 0x80, 0},
11694         {0x138, 0x60, 0},
11695         {0x139, 0x44, 0},
11696         {0x13A, 0x55, 0},
11697         {0x13B, 0x1, 0},
11698         {0x13C, 0x55, 0},
11699         {0x13D, 0x1, 0},
11700         {0x13E, 0x5, 0},
11701         {0x13F, 0x55, 0},
11702         {0x140, 0x55, 0},
11703         {0x146, 0, 0},
11704         {0x147, 0, 0},
11705         {0x148, 0, 0},
11706         {0x149, 0, 0},
11707         {0x14A, 0, 0},
11708         {0x14B, 0, 0},
11709         {0x14C, 0, 0},
11710         {0x14D, 0, 0},
11711         {0x14E, 0, 0},
11712         {0x14F, 0, 0},
11713         {0x150, 0, 0},
11714         {0x151, 0, 0},
11715         {0x152, 0, 0},
11716         {0x153, 0, 0},
11717         {0x154, 0xc, 0},
11718         {0x155, 0xc, 0},
11719         {0x156, 0xc, 0},
11720         {0x157, 0, 0},
11721         {0x158, 0x2b, 0},
11722         {0x159, 0x84, 0},
11723         {0x15A, 0x15, 0},
11724         {0x15B, 0xf, 0},
11725         {0x15C, 0, 0},
11726         {0x15D, 0, 0},
11727         {0x15E, 0, 1},
11728         {0x15F, 0, 1},
11729         {0x160, 0, 1},
11730         {0x161, 0, 1},
11731         {0x162, 0, 1},
11732         {0x163, 0, 1},
11733         {0x164, 0, 0},
11734         {0x165, 0, 0},
11735         {0x166, 0, 0},
11736         {0x167, 0, 0},
11737         {0x168, 0, 0},
11738         {0x169, 0x2, 1},
11739         {0x16A, 0, 1},
11740         {0x16B, 0, 1},
11741         {0x16C, 0, 1},
11742         {0x16D, 0, 0},
11743         {0x170, 0, 0},
11744         {0x171, 0x77, 0},
11745         {0x172, 0x77, 0},
11746         {0x173, 0x77, 0},
11747         {0x174, 0x77, 0},
11748         {0x175, 0, 0},
11749         {0x176, 0x3, 0},
11750         {0x177, 0x37, 0},
11751         {0x178, 0x3, 0},
11752         {0x179, 0, 0},
11753         {0x17A, 0x21, 0},
11754         {0x17B, 0x21, 0},
11755         {0x17C, 0, 0},
11756         {0x17D, 0xaa, 0},
11757         {0x17E, 0, 0},
11758         {0x17F, 0xaa, 0},
11759         {0x180, 0, 0},
11760         {0x190, 0, 0},
11761         {0x191, 0x77, 0},
11762         {0x192, 0x77, 0},
11763         {0x193, 0x77, 0},
11764         {0x194, 0x77, 0},
11765         {0x195, 0, 0},
11766         {0x196, 0x3, 0},
11767         {0x197, 0x37, 0},
11768         {0x198, 0x3, 0},
11769         {0x199, 0, 0},
11770         {0x19A, 0x21, 0},
11771         {0x19B, 0x21, 0},
11772         {0x19C, 0, 0},
11773         {0x19D, 0xaa, 0},
11774         {0x19E, 0, 0},
11775         {0x19F, 0xaa, 0},
11776         {0x1A0, 0, 0},
11777         {0x1A1, 0x2, 0},
11778         {0x1A2, 0xf, 0},
11779         {0x1A3, 0xf, 0},
11780         {0x1A4, 0, 1},
11781         {0x1A5, 0, 1},
11782         {0x1A6, 0, 1},
11783         {0x1A7, 0x2, 0},
11784         {0x1A8, 0xf, 0},
11785         {0x1A9, 0xf, 0},
11786         {0x1AA, 0, 1},
11787         {0x1AB, 0, 1},
11788         {0x1AC, 0, 1},
11789         {0xFFFF, 0, 0},
11790 };
11791
11792 radio_20xx_regs_t regs_2057_rev5[] = {
11793         {0x00, 0, 1},
11794         {0x01, 0x57, 1},
11795         {0x02, 0x20, 1},
11796         {0x03, 0x1f, 0},
11797         {0x04, 0x4, 0},
11798         {0x05, 0x2, 0},
11799         {0x06, 0x1, 0},
11800         {0x07, 0x1, 0},
11801         {0x08, 0x1, 0},
11802         {0x09, 0x69, 0},
11803         {0x0A, 0x66, 0},
11804         {0x0B, 0x6, 0},
11805         {0x0C, 0x18, 0},
11806         {0x0D, 0x3, 0},
11807         {0x0E, 0x20, 0},
11808         {0x0F, 0x20, 0},
11809         {0x10, 0, 0},
11810         {0x11, 0x7c, 0},
11811         {0x12, 0x42, 0},
11812         {0x13, 0xbd, 0},
11813         {0x14, 0x7, 0},
11814         {0x15, 0x87, 0},
11815         {0x16, 0x8, 0},
11816         {0x17, 0x17, 0},
11817         {0x18, 0x7, 0},
11818         {0x19, 0, 0},
11819         {0x1A, 0x2, 0},
11820         {0x1B, 0x13, 0},
11821         {0x1C, 0x3e, 0},
11822         {0x1D, 0x3e, 0},
11823         {0x1E, 0x96, 0},
11824         {0x1F, 0x4, 0},
11825         {0x20, 0, 0},
11826         {0x21, 0, 0},
11827         {0x22, 0x17, 0},
11828         {0x23, 0x6, 1},
11829         {0x24, 0x1, 0},
11830         {0x25, 0x6, 0},
11831         {0x26, 0x4, 0},
11832         {0x27, 0xd, 0},
11833         {0x28, 0xd, 0},
11834         {0x29, 0x30, 0},
11835         {0x2A, 0x32, 0},
11836         {0x2B, 0x8, 0},
11837         {0x2C, 0x1c, 0},
11838         {0x2D, 0x2, 0},
11839         {0x2E, 0x4, 0},
11840         {0x2F, 0x7f, 0},
11841         {0x30, 0x27, 0},
11842         {0x31, 0, 1},
11843         {0x32, 0, 1},
11844         {0x33, 0, 1},
11845         {0x34, 0, 0},
11846         {0x35, 0x20, 0},
11847         {0x36, 0x18, 0},
11848         {0x37, 0x7, 0},
11849         {0x38, 0x66, 0},
11850         {0x39, 0x66, 0},
11851         {0x3C, 0xff, 0},
11852         {0x3D, 0xff, 0},
11853         {0x40, 0x16, 0},
11854         {0x41, 0x7, 0},
11855         {0x45, 0x3, 0},
11856         {0x46, 0x1, 0},
11857         {0x47, 0x7, 0},
11858         {0x4B, 0x66, 0},
11859         {0x4C, 0x66, 0},
11860         {0x4D, 0, 0},
11861         {0x4E, 0x4, 0},
11862         {0x4F, 0xc, 0},
11863         {0x50, 0, 0},
11864         {0x51, 0x70, 1},
11865         {0x56, 0x7, 0},
11866         {0x57, 0, 0},
11867         {0x58, 0, 0},
11868         {0x59, 0x88, 1},
11869         {0x5A, 0, 0},
11870         {0x5B, 0x1f, 0},
11871         {0x5C, 0x20, 1},
11872         {0x5D, 0x1, 0},
11873         {0x5E, 0x30, 0},
11874         {0x5F, 0x70, 0},
11875         {0x60, 0, 0},
11876         {0x61, 0, 0},
11877         {0x62, 0x33, 1},
11878         {0x63, 0xf, 1},
11879         {0x64, 0xf, 1},
11880         {0x65, 0, 0},
11881         {0x66, 0x11, 0},
11882         {0x80, 0x3c, 0},
11883         {0x81, 0x1, 1},
11884         {0x82, 0xa, 0},
11885         {0x85, 0, 0},
11886         {0x86, 0x40, 0},
11887         {0x87, 0x40, 0},
11888         {0x88, 0x88, 0},
11889         {0x89, 0x10, 0},
11890         {0x8A, 0xf0, 0},
11891         {0x8B, 0x10, 0},
11892         {0x8C, 0xf0, 0},
11893         {0x8F, 0x10, 0},
11894         {0x90, 0x55, 0},
11895         {0x91, 0x3f, 1},
11896         {0x92, 0x36, 1},
11897         {0x93, 0, 0},
11898         {0x94, 0, 0},
11899         {0x95, 0, 0},
11900         {0x96, 0x87, 0},
11901         {0x97, 0x11, 0},
11902         {0x98, 0, 0},
11903         {0x99, 0x33, 0},
11904         {0x9A, 0x88, 0},
11905         {0xA1, 0x20, 1},
11906         {0xA2, 0x3f, 0},
11907         {0xA3, 0x44, 0},
11908         {0xA4, 0x8c, 0},
11909         {0xA5, 0x6c, 0},
11910         {0xA6, 0x22, 0},
11911         {0xA7, 0xbe, 0},
11912         {0xA8, 0x55, 0},
11913         {0xAA, 0xc, 0},
11914         {0xAB, 0xaa, 0},
11915         {0xAC, 0x2, 0},
11916         {0xAD, 0, 0},
11917         {0xAE, 0x10, 0},
11918         {0xAF, 0x1, 0},
11919         {0xB0, 0, 0},
11920         {0xB1, 0, 0},
11921         {0xB2, 0x80, 0},
11922         {0xB3, 0x60, 0},
11923         {0xB4, 0x44, 0},
11924         {0xB5, 0x55, 0},
11925         {0xB6, 0x1, 0},
11926         {0xB7, 0x55, 0},
11927         {0xB8, 0x1, 0},
11928         {0xB9, 0x5, 0},
11929         {0xBA, 0x55, 0},
11930         {0xBB, 0x55, 0},
11931         {0xC3, 0, 0},
11932         {0xC4, 0, 0},
11933         {0xC5, 0, 0},
11934         {0xC6, 0, 0},
11935         {0xC7, 0, 0},
11936         {0xC8, 0, 0},
11937         {0xC9, 0, 0},
11938         {0xCA, 0, 0},
11939         {0xCB, 0, 0},
11940         {0xCD, 0, 0},
11941         {0xCE, 0x5e, 0},
11942         {0xCF, 0xc, 0},
11943         {0xD0, 0xc, 0},
11944         {0xD1, 0xc, 0},
11945         {0xD2, 0, 0},
11946         {0xD3, 0x2b, 0},
11947         {0xD4, 0xc, 0},
11948         {0xD5, 0, 0},
11949         {0xD6, 0x70, 1},
11950         {0xDB, 0x7, 0},
11951         {0xDC, 0, 0},
11952         {0xDD, 0, 0},
11953         {0xDE, 0x88, 1},
11954         {0xDF, 0, 0},
11955         {0xE0, 0x1f, 0},
11956         {0xE1, 0x20, 1},
11957         {0xE2, 0x1, 0},
11958         {0xE3, 0x30, 0},
11959         {0xE4, 0x70, 0},
11960         {0xE5, 0, 0},
11961         {0xE6, 0, 0},
11962         {0xE7, 0x33, 0},
11963         {0xE8, 0xf, 1},
11964         {0xE9, 0xf, 1},
11965         {0xEA, 0, 0},
11966         {0xEB, 0x11, 0},
11967         {0x105, 0x3c, 0},
11968         {0x106, 0x1, 1},
11969         {0x107, 0xa, 0},
11970         {0x10A, 0, 0},
11971         {0x10B, 0x40, 0},
11972         {0x10C, 0x40, 0},
11973         {0x10D, 0x88, 0},
11974         {0x10E, 0x10, 0},
11975         {0x10F, 0xf0, 0},
11976         {0x110, 0x10, 0},
11977         {0x111, 0xf0, 0},
11978         {0x114, 0x10, 0},
11979         {0x115, 0x55, 0},
11980         {0x116, 0x3f, 1},
11981         {0x117, 0x36, 1},
11982         {0x118, 0, 0},
11983         {0x119, 0, 0},
11984         {0x11A, 0, 0},
11985         {0x11B, 0x87, 0},
11986         {0x11C, 0x11, 0},
11987         {0x11D, 0, 0},
11988         {0x11E, 0x33, 0},
11989         {0x11F, 0x88, 0},
11990         {0x126, 0x20, 1},
11991         {0x127, 0x3f, 0},
11992         {0x128, 0x44, 0},
11993         {0x129, 0x8c, 0},
11994         {0x12A, 0x6c, 0},
11995         {0x12B, 0x22, 0},
11996         {0x12C, 0xbe, 0},
11997         {0x12D, 0x55, 0},
11998         {0x12F, 0xc, 0},
11999         {0x130, 0xaa, 0},
12000         {0x131, 0x2, 0},
12001         {0x132, 0, 0},
12002         {0x133, 0x10, 0},
12003         {0x134, 0x1, 0},
12004         {0x135, 0, 0},
12005         {0x136, 0, 0},
12006         {0x137, 0x80, 0},
12007         {0x138, 0x60, 0},
12008         {0x139, 0x44, 0},
12009         {0x13A, 0x55, 0},
12010         {0x13B, 0x1, 0},
12011         {0x13C, 0x55, 0},
12012         {0x13D, 0x1, 0},
12013         {0x13E, 0x5, 0},
12014         {0x13F, 0x55, 0},
12015         {0x140, 0x55, 0},
12016         {0x148, 0, 0},
12017         {0x149, 0, 0},
12018         {0x14A, 0, 0},
12019         {0x14B, 0, 0},
12020         {0x14C, 0, 0},
12021         {0x14D, 0, 0},
12022         {0x14E, 0, 0},
12023         {0x14F, 0, 0},
12024         {0x150, 0, 0},
12025         {0x154, 0xc, 0},
12026         {0x155, 0xc, 0},
12027         {0x156, 0xc, 0},
12028         {0x157, 0, 0},
12029         {0x158, 0x2b, 0},
12030         {0x159, 0x84, 0},
12031         {0x15A, 0x15, 0},
12032         {0x15B, 0xf, 0},
12033         {0x15C, 0, 0},
12034         {0x15D, 0, 0},
12035         {0x15E, 0, 1},
12036         {0x15F, 0, 1},
12037         {0x160, 0, 1},
12038         {0x161, 0, 1},
12039         {0x162, 0, 1},
12040         {0x163, 0, 1},
12041         {0x164, 0, 0},
12042         {0x165, 0, 0},
12043         {0x166, 0, 0},
12044         {0x167, 0, 0},
12045         {0x168, 0, 0},
12046         {0x169, 0, 0},
12047         {0x16A, 0, 1},
12048         {0x16B, 0, 1},
12049         {0x16C, 0, 1},
12050         {0x16D, 0, 0},
12051         {0x170, 0, 0},
12052         {0x171, 0x77, 0},
12053         {0x172, 0x77, 0},
12054         {0x173, 0x77, 0},
12055         {0x174, 0x77, 0},
12056         {0x175, 0, 0},
12057         {0x176, 0x3, 0},
12058         {0x177, 0x37, 0},
12059         {0x178, 0x3, 0},
12060         {0x179, 0, 0},
12061         {0x17B, 0x21, 0},
12062         {0x17C, 0, 0},
12063         {0x17D, 0xaa, 0},
12064         {0x17E, 0, 0},
12065         {0x190, 0, 0},
12066         {0x191, 0x77, 0},
12067         {0x192, 0x77, 0},
12068         {0x193, 0x77, 0},
12069         {0x194, 0x77, 0},
12070         {0x195, 0, 0},
12071         {0x196, 0x3, 0},
12072         {0x197, 0x37, 0},
12073         {0x198, 0x3, 0},
12074         {0x199, 0, 0},
12075         {0x19B, 0x21, 0},
12076         {0x19C, 0, 0},
12077         {0x19D, 0xaa, 0},
12078         {0x19E, 0, 0},
12079         {0x1A1, 0x2, 0},
12080         {0x1A2, 0xf, 0},
12081         {0x1A3, 0xf, 0},
12082         {0x1A4, 0, 1},
12083         {0x1A5, 0, 1},
12084         {0x1A6, 0, 1},
12085         {0x1A7, 0x2, 0},
12086         {0x1A8, 0xf, 0},
12087         {0x1A9, 0xf, 0},
12088         {0x1AA, 0, 1},
12089         {0x1AB, 0, 1},
12090         {0x1AC, 0, 1},
12091         {0x1AD, 0x84, 0},
12092         {0x1AE, 0x60, 0},
12093         {0x1AF, 0x47, 0},
12094         {0x1B0, 0x47, 0},
12095         {0x1B1, 0, 0},
12096         {0x1B2, 0, 0},
12097         {0x1B3, 0, 0},
12098         {0x1B4, 0, 0},
12099         {0x1B5, 0, 0},
12100         {0x1B6, 0, 0},
12101         {0x1B7, 0xc, 1},
12102         {0x1B8, 0, 0},
12103         {0x1B9, 0, 0},
12104         {0x1BA, 0, 0},
12105         {0x1BB, 0, 0},
12106         {0x1BC, 0, 0},
12107         {0x1BD, 0, 0},
12108         {0x1BE, 0, 0},
12109         {0x1BF, 0, 0},
12110         {0x1C0, 0, 0},
12111         {0x1C1, 0x1, 1},
12112         {0x1C2, 0x80, 1},
12113         {0x1C3, 0, 0},
12114         {0x1C4, 0, 0},
12115         {0x1C5, 0, 0},
12116         {0x1C6, 0, 0},
12117         {0x1C7, 0, 0},
12118         {0x1C8, 0, 0},
12119         {0x1C9, 0, 0},
12120         {0x1CA, 0, 0},
12121         {0xFFFF, 0, 0}
12122 };
12123
12124 radio_20xx_regs_t regs_2057_rev5v1[] = {
12125         {0x00, 0x15, 1},
12126         {0x01, 0x57, 1},
12127         {0x02, 0x20, 1},
12128         {0x03, 0x1f, 0},
12129         {0x04, 0x4, 0},
12130         {0x05, 0x2, 0},
12131         {0x06, 0x1, 0},
12132         {0x07, 0x1, 0},
12133         {0x08, 0x1, 0},
12134         {0x09, 0x69, 0},
12135         {0x0A, 0x66, 0},
12136         {0x0B, 0x6, 0},
12137         {0x0C, 0x18, 0},
12138         {0x0D, 0x3, 0},
12139         {0x0E, 0x20, 0},
12140         {0x0F, 0x20, 0},
12141         {0x10, 0, 0},
12142         {0x11, 0x7c, 0},
12143         {0x12, 0x42, 0},
12144         {0x13, 0xbd, 0},
12145         {0x14, 0x7, 0},
12146         {0x15, 0x87, 0},
12147         {0x16, 0x8, 0},
12148         {0x17, 0x17, 0},
12149         {0x18, 0x7, 0},
12150         {0x19, 0, 0},
12151         {0x1A, 0x2, 0},
12152         {0x1B, 0x13, 0},
12153         {0x1C, 0x3e, 0},
12154         {0x1D, 0x3e, 0},
12155         {0x1E, 0x96, 0},
12156         {0x1F, 0x4, 0},
12157         {0x20, 0, 0},
12158         {0x21, 0, 0},
12159         {0x22, 0x17, 0},
12160         {0x23, 0x6, 1},
12161         {0x24, 0x1, 0},
12162         {0x25, 0x6, 0},
12163         {0x26, 0x4, 0},
12164         {0x27, 0xd, 0},
12165         {0x28, 0xd, 0},
12166         {0x29, 0x30, 0},
12167         {0x2A, 0x32, 0},
12168         {0x2B, 0x8, 0},
12169         {0x2C, 0x1c, 0},
12170         {0x2D, 0x2, 0},
12171         {0x2E, 0x4, 0},
12172         {0x2F, 0x7f, 0},
12173         {0x30, 0x27, 0},
12174         {0x31, 0, 1},
12175         {0x32, 0, 1},
12176         {0x33, 0, 1},
12177         {0x34, 0, 0},
12178         {0x35, 0x20, 0},
12179         {0x36, 0x18, 0},
12180         {0x37, 0x7, 0},
12181         {0x38, 0x66, 0},
12182         {0x39, 0x66, 0},
12183         {0x3C, 0xff, 0},
12184         {0x3D, 0xff, 0},
12185         {0x40, 0x16, 0},
12186         {0x41, 0x7, 0},
12187         {0x45, 0x3, 0},
12188         {0x46, 0x1, 0},
12189         {0x47, 0x7, 0},
12190         {0x4B, 0x66, 0},
12191         {0x4C, 0x66, 0},
12192         {0x4D, 0, 0},
12193         {0x4E, 0x4, 0},
12194         {0x4F, 0xc, 0},
12195         {0x50, 0, 0},
12196         {0x51, 0x70, 1},
12197         {0x56, 0x7, 0},
12198         {0x57, 0, 0},
12199         {0x58, 0, 0},
12200         {0x59, 0x88, 1},
12201         {0x5A, 0, 0},
12202         {0x5B, 0x1f, 0},
12203         {0x5C, 0x20, 1},
12204         {0x5D, 0x1, 0},
12205         {0x5E, 0x30, 0},
12206         {0x5F, 0x70, 0},
12207         {0x60, 0, 0},
12208         {0x61, 0, 0},
12209         {0x62, 0x33, 1},
12210         {0x63, 0xf, 1},
12211         {0x64, 0xf, 1},
12212         {0x65, 0, 0},
12213         {0x66, 0x11, 0},
12214         {0x80, 0x3c, 0},
12215         {0x81, 0x1, 1},
12216         {0x82, 0xa, 0},
12217         {0x85, 0, 0},
12218         {0x86, 0x40, 0},
12219         {0x87, 0x40, 0},
12220         {0x88, 0x88, 0},
12221         {0x89, 0x10, 0},
12222         {0x8A, 0xf0, 0},
12223         {0x8B, 0x10, 0},
12224         {0x8C, 0xf0, 0},
12225         {0x8F, 0x10, 0},
12226         {0x90, 0x55, 0},
12227         {0x91, 0x3f, 1},
12228         {0x92, 0x36, 1},
12229         {0x93, 0, 0},
12230         {0x94, 0, 0},
12231         {0x95, 0, 0},
12232         {0x96, 0x87, 0},
12233         {0x97, 0x11, 0},
12234         {0x98, 0, 0},
12235         {0x99, 0x33, 0},
12236         {0x9A, 0x88, 0},
12237         {0xA1, 0x20, 1},
12238         {0xA2, 0x3f, 0},
12239         {0xA3, 0x44, 0},
12240         {0xA4, 0x8c, 0},
12241         {0xA5, 0x6c, 0},
12242         {0xA6, 0x22, 0},
12243         {0xA7, 0xbe, 0},
12244         {0xA8, 0x55, 0},
12245         {0xAA, 0xc, 0},
12246         {0xAB, 0xaa, 0},
12247         {0xAC, 0x2, 0},
12248         {0xAD, 0, 0},
12249         {0xAE, 0x10, 0},
12250         {0xAF, 0x1, 0},
12251         {0xB0, 0, 0},
12252         {0xB1, 0, 0},
12253         {0xB2, 0x80, 0},
12254         {0xB3, 0x60, 0},
12255         {0xB4, 0x44, 0},
12256         {0xB5, 0x55, 0},
12257         {0xB6, 0x1, 0},
12258         {0xB7, 0x55, 0},
12259         {0xB8, 0x1, 0},
12260         {0xB9, 0x5, 0},
12261         {0xBA, 0x55, 0},
12262         {0xBB, 0x55, 0},
12263         {0xC3, 0, 0},
12264         {0xC4, 0, 0},
12265         {0xC5, 0, 0},
12266         {0xC6, 0, 0},
12267         {0xC7, 0, 0},
12268         {0xC8, 0, 0},
12269         {0xC9, 0x1, 1},
12270         {0xCA, 0, 0},
12271         {0xCB, 0, 0},
12272         {0xCD, 0, 0},
12273         {0xCE, 0x5e, 0},
12274         {0xCF, 0xc, 0},
12275         {0xD0, 0xc, 0},
12276         {0xD1, 0xc, 0},
12277         {0xD2, 0, 0},
12278         {0xD3, 0x2b, 0},
12279         {0xD4, 0xc, 0},
12280         {0xD5, 0, 0},
12281         {0xD6, 0x70, 1},
12282         {0xDB, 0x7, 0},
12283         {0xDC, 0, 0},
12284         {0xDD, 0, 0},
12285         {0xDE, 0x88, 1},
12286         {0xDF, 0, 0},
12287         {0xE0, 0x1f, 0},
12288         {0xE1, 0x20, 1},
12289         {0xE2, 0x1, 0},
12290         {0xE3, 0x30, 0},
12291         {0xE4, 0x70, 0},
12292         {0xE5, 0, 0},
12293         {0xE6, 0, 0},
12294         {0xE7, 0x33, 0},
12295         {0xE8, 0xf, 1},
12296         {0xE9, 0xf, 1},
12297         {0xEA, 0, 0},
12298         {0xEB, 0x11, 0},
12299         {0x105, 0x3c, 0},
12300         {0x106, 0x1, 1},
12301         {0x107, 0xa, 0},
12302         {0x10A, 0, 0},
12303         {0x10B, 0x40, 0},
12304         {0x10C, 0x40, 0},
12305         {0x10D, 0x88, 0},
12306         {0x10E, 0x10, 0},
12307         {0x10F, 0xf0, 0},
12308         {0x110, 0x10, 0},
12309         {0x111, 0xf0, 0},
12310         {0x114, 0x10, 0},
12311         {0x115, 0x55, 0},
12312         {0x116, 0x3f, 1},
12313         {0x117, 0x36, 1},
12314         {0x118, 0, 0},
12315         {0x119, 0, 0},
12316         {0x11A, 0, 0},
12317         {0x11B, 0x87, 0},
12318         {0x11C, 0x11, 0},
12319         {0x11D, 0, 0},
12320         {0x11E, 0x33, 0},
12321         {0x11F, 0x88, 0},
12322         {0x126, 0x20, 1},
12323         {0x127, 0x3f, 0},
12324         {0x128, 0x44, 0},
12325         {0x129, 0x8c, 0},
12326         {0x12A, 0x6c, 0},
12327         {0x12B, 0x22, 0},
12328         {0x12C, 0xbe, 0},
12329         {0x12D, 0x55, 0},
12330         {0x12F, 0xc, 0},
12331         {0x130, 0xaa, 0},
12332         {0x131, 0x2, 0},
12333         {0x132, 0, 0},
12334         {0x133, 0x10, 0},
12335         {0x134, 0x1, 0},
12336         {0x135, 0, 0},
12337         {0x136, 0, 0},
12338         {0x137, 0x80, 0},
12339         {0x138, 0x60, 0},
12340         {0x139, 0x44, 0},
12341         {0x13A, 0x55, 0},
12342         {0x13B, 0x1, 0},
12343         {0x13C, 0x55, 0},
12344         {0x13D, 0x1, 0},
12345         {0x13E, 0x5, 0},
12346         {0x13F, 0x55, 0},
12347         {0x140, 0x55, 0},
12348         {0x148, 0, 0},
12349         {0x149, 0, 0},
12350         {0x14A, 0, 0},
12351         {0x14B, 0, 0},
12352         {0x14C, 0, 0},
12353         {0x14D, 0, 0},
12354         {0x14E, 0x1, 1},
12355         {0x14F, 0, 0},
12356         {0x150, 0, 0},
12357         {0x154, 0xc, 0},
12358         {0x155, 0xc, 0},
12359         {0x156, 0xc, 0},
12360         {0x157, 0, 0},
12361         {0x158, 0x2b, 0},
12362         {0x159, 0x84, 0},
12363         {0x15A, 0x15, 0},
12364         {0x15B, 0xf, 0},
12365         {0x15C, 0, 0},
12366         {0x15D, 0, 0},
12367         {0x15E, 0, 1},
12368         {0x15F, 0, 1},
12369         {0x160, 0, 1},
12370         {0x161, 0, 1},
12371         {0x162, 0, 1},
12372         {0x163, 0, 1},
12373         {0x164, 0, 0},
12374         {0x165, 0, 0},
12375         {0x166, 0, 0},
12376         {0x167, 0, 0},
12377         {0x168, 0, 0},
12378         {0x169, 0, 0},
12379         {0x16A, 0, 1},
12380         {0x16B, 0, 1},
12381         {0x16C, 0, 1},
12382         {0x16D, 0, 0},
12383         {0x170, 0, 0},
12384         {0x171, 0x77, 0},
12385         {0x172, 0x77, 0},
12386         {0x173, 0x77, 0},
12387         {0x174, 0x77, 0},
12388         {0x175, 0, 0},
12389         {0x176, 0x3, 0},
12390         {0x177, 0x37, 0},
12391         {0x178, 0x3, 0},
12392         {0x179, 0, 0},
12393         {0x17B, 0x21, 0},
12394         {0x17C, 0, 0},
12395         {0x17D, 0xaa, 0},
12396         {0x17E, 0, 0},
12397         {0x190, 0, 0},
12398         {0x191, 0x77, 0},
12399         {0x192, 0x77, 0},
12400         {0x193, 0x77, 0},
12401         {0x194, 0x77, 0},
12402         {0x195, 0, 0},
12403         {0x196, 0x3, 0},
12404         {0x197, 0x37, 0},
12405         {0x198, 0x3, 0},
12406         {0x199, 0, 0},
12407         {0x19B, 0x21, 0},
12408         {0x19C, 0, 0},
12409         {0x19D, 0xaa, 0},
12410         {0x19E, 0, 0},
12411         {0x1A1, 0x2, 0},
12412         {0x1A2, 0xf, 0},
12413         {0x1A3, 0xf, 0},
12414         {0x1A4, 0, 1},
12415         {0x1A5, 0, 1},
12416         {0x1A6, 0, 1},
12417         {0x1A7, 0x2, 0},
12418         {0x1A8, 0xf, 0},
12419         {0x1A9, 0xf, 0},
12420         {0x1AA, 0, 1},
12421         {0x1AB, 0, 1},
12422         {0x1AC, 0, 1},
12423         {0x1AD, 0x84, 0},
12424         {0x1AE, 0x60, 0},
12425         {0x1AF, 0x47, 0},
12426         {0x1B0, 0x47, 0},
12427         {0x1B1, 0, 0},
12428         {0x1B2, 0, 0},
12429         {0x1B3, 0, 0},
12430         {0x1B4, 0, 0},
12431         {0x1B5, 0, 0},
12432         {0x1B6, 0, 0},
12433         {0x1B7, 0xc, 1},
12434         {0x1B8, 0, 0},
12435         {0x1B9, 0, 0},
12436         {0x1BA, 0, 0},
12437         {0x1BB, 0, 0},
12438         {0x1BC, 0, 0},
12439         {0x1BD, 0, 0},
12440         {0x1BE, 0, 0},
12441         {0x1BF, 0, 0},
12442         {0x1C0, 0, 0},
12443         {0x1C1, 0x1, 1},
12444         {0x1C2, 0x80, 1},
12445         {0x1C3, 0, 0},
12446         {0x1C4, 0, 0},
12447         {0x1C5, 0, 0},
12448         {0x1C6, 0, 0},
12449         {0x1C7, 0, 0},
12450         {0x1C8, 0, 0},
12451         {0x1C9, 0, 0},
12452         {0x1CA, 0, 0},
12453         {0xFFFF, 0, 0}
12454 };
12455
12456 radio_20xx_regs_t regs_2057_rev7[] = {
12457         {0x00, 0, 1},
12458         {0x01, 0x57, 1},
12459         {0x02, 0x20, 1},
12460         {0x03, 0x1f, 0},
12461         {0x04, 0x4, 0},
12462         {0x05, 0x2, 0},
12463         {0x06, 0x1, 0},
12464         {0x07, 0x1, 0},
12465         {0x08, 0x1, 0},
12466         {0x09, 0x69, 0},
12467         {0x0A, 0x66, 0},
12468         {0x0B, 0x6, 0},
12469         {0x0C, 0x18, 0},
12470         {0x0D, 0x3, 0},
12471         {0x0E, 0x20, 0},
12472         {0x0F, 0x20, 0},
12473         {0x10, 0, 0},
12474         {0x11, 0x7c, 0},
12475         {0x12, 0x42, 0},
12476         {0x13, 0xbd, 0},
12477         {0x14, 0x7, 0},
12478         {0x15, 0x87, 0},
12479         {0x16, 0x8, 0},
12480         {0x17, 0x17, 0},
12481         {0x18, 0x7, 0},
12482         {0x19, 0, 0},
12483         {0x1A, 0x2, 0},
12484         {0x1B, 0x13, 0},
12485         {0x1C, 0x3e, 0},
12486         {0x1D, 0x3e, 0},
12487         {0x1E, 0x96, 0},
12488         {0x1F, 0x4, 0},
12489         {0x20, 0, 0},
12490         {0x21, 0, 0},
12491         {0x22, 0x17, 0},
12492         {0x23, 0x6, 0},
12493         {0x24, 0x1, 0},
12494         {0x25, 0x6, 0},
12495         {0x26, 0x4, 0},
12496         {0x27, 0xd, 0},
12497         {0x28, 0xd, 0},
12498         {0x29, 0x30, 0},
12499         {0x2A, 0x32, 0},
12500         {0x2B, 0x8, 0},
12501         {0x2C, 0x1c, 0},
12502         {0x2D, 0x2, 0},
12503         {0x2E, 0x4, 0},
12504         {0x2F, 0x7f, 0},
12505         {0x30, 0x27, 0},
12506         {0x31, 0, 1},
12507         {0x32, 0, 1},
12508         {0x33, 0, 1},
12509         {0x34, 0, 0},
12510         {0x35, 0x20, 0},
12511         {0x36, 0x18, 0},
12512         {0x37, 0x7, 0},
12513         {0x38, 0x66, 0},
12514         {0x39, 0x66, 0},
12515         {0x3A, 0x66, 0},
12516         {0x3B, 0x66, 0},
12517         {0x3C, 0xff, 0},
12518         {0x3D, 0xff, 0},
12519         {0x3E, 0xff, 0},
12520         {0x3F, 0xff, 0},
12521         {0x40, 0x16, 0},
12522         {0x41, 0x7, 0},
12523         {0x42, 0x19, 0},
12524         {0x43, 0x7, 0},
12525         {0x44, 0x6, 0},
12526         {0x45, 0x3, 0},
12527         {0x46, 0x1, 0},
12528         {0x47, 0x7, 0},
12529         {0x48, 0x33, 0},
12530         {0x49, 0x5, 0},
12531         {0x4A, 0x77, 0},
12532         {0x4B, 0x66, 0},
12533         {0x4C, 0x66, 0},
12534         {0x4D, 0, 0},
12535         {0x4E, 0x4, 0},
12536         {0x4F, 0xc, 0},
12537         {0x50, 0, 0},
12538         {0x51, 0x70, 1},
12539         {0x56, 0x7, 0},
12540         {0x57, 0, 0},
12541         {0x58, 0, 0},
12542         {0x59, 0x88, 1},
12543         {0x5A, 0, 0},
12544         {0x5B, 0x1f, 0},
12545         {0x5C, 0x20, 1},
12546         {0x5D, 0x1, 0},
12547         {0x5E, 0x30, 0},
12548         {0x5F, 0x70, 0},
12549         {0x60, 0, 0},
12550         {0x61, 0, 0},
12551         {0x62, 0x33, 1},
12552         {0x63, 0xf, 1},
12553         {0x64, 0x13, 1},
12554         {0x65, 0, 0},
12555         {0x66, 0xee, 1},
12556         {0x69, 0, 0},
12557         {0x6A, 0x7e, 0},
12558         {0x6B, 0x3f, 0},
12559         {0x6C, 0x7f, 0},
12560         {0x6D, 0x78, 0},
12561         {0x6E, 0x58, 1},
12562         {0x6F, 0x88, 0},
12563         {0x70, 0x8, 0},
12564         {0x71, 0xf, 0},
12565         {0x72, 0xbc, 0},
12566         {0x73, 0x8, 0},
12567         {0x74, 0x60, 0},
12568         {0x75, 0x13, 1},
12569         {0x76, 0x70, 0},
12570         {0x77, 0, 0},
12571         {0x78, 0, 0},
12572         {0x79, 0, 0},
12573         {0x7A, 0x33, 0},
12574         {0x7B, 0x13, 1},
12575         {0x7C, 0x14, 1},
12576         {0x7D, 0xee, 1},
12577         {0x80, 0x3c, 0},
12578         {0x81, 0x1, 1},
12579         {0x82, 0xa, 0},
12580         {0x83, 0x9d, 0},
12581         {0x84, 0xa, 0},
12582         {0x85, 0, 0},
12583         {0x86, 0x40, 0},
12584         {0x87, 0x40, 0},
12585         {0x88, 0x88, 0},
12586         {0x89, 0x10, 0},
12587         {0x8A, 0xf0, 0},
12588         {0x8B, 0x10, 0},
12589         {0x8C, 0xf0, 0},
12590         {0x8D, 0, 0},
12591         {0x8E, 0, 0},
12592         {0x8F, 0x10, 0},
12593         {0x90, 0x55, 0},
12594         {0x91, 0x3f, 1},
12595         {0x92, 0x36, 1},
12596         {0x93, 0, 0},
12597         {0x94, 0, 0},
12598         {0x95, 0, 0},
12599         {0x96, 0x87, 0},
12600         {0x97, 0x11, 0},
12601         {0x98, 0, 0},
12602         {0x99, 0x33, 0},
12603         {0x9A, 0x88, 0},
12604         {0x9B, 0, 0},
12605         {0x9C, 0x87, 0},
12606         {0x9D, 0x11, 0},
12607         {0x9E, 0, 0},
12608         {0x9F, 0x33, 0},
12609         {0xA0, 0x88, 0},
12610         {0xA1, 0x20, 1},
12611         {0xA2, 0x3f, 0},
12612         {0xA3, 0x44, 0},
12613         {0xA4, 0x8c, 0},
12614         {0xA5, 0x6c, 0},
12615         {0xA6, 0x22, 0},
12616         {0xA7, 0xbe, 0},
12617         {0xA8, 0x55, 0},
12618         {0xAA, 0xc, 0},
12619         {0xAB, 0xaa, 0},
12620         {0xAC, 0x2, 0},
12621         {0xAD, 0, 0},
12622         {0xAE, 0x10, 0},
12623         {0xAF, 0x1, 0},
12624         {0xB0, 0, 0},
12625         {0xB1, 0, 0},
12626         {0xB2, 0x80, 0},
12627         {0xB3, 0x60, 0},
12628         {0xB4, 0x44, 0},
12629         {0xB5, 0x55, 0},
12630         {0xB6, 0x1, 0},
12631         {0xB7, 0x55, 0},
12632         {0xB8, 0x1, 0},
12633         {0xB9, 0x5, 0},
12634         {0xBA, 0x55, 0},
12635         {0xBB, 0x55, 0},
12636         {0xC1, 0, 0},
12637         {0xC2, 0, 0},
12638         {0xC3, 0, 0},
12639         {0xC4, 0, 0},
12640         {0xC5, 0, 0},
12641         {0xC6, 0, 0},
12642         {0xC7, 0, 0},
12643         {0xC8, 0, 0},
12644         {0xC9, 0, 0},
12645         {0xCA, 0, 0},
12646         {0xCB, 0, 0},
12647         {0xCC, 0, 0},
12648         {0xCD, 0, 0},
12649         {0xCE, 0x5e, 0},
12650         {0xCF, 0xc, 0},
12651         {0xD0, 0xc, 0},
12652         {0xD1, 0xc, 0},
12653         {0xD2, 0, 0},
12654         {0xD3, 0x2b, 0},
12655         {0xD4, 0xc, 0},
12656         {0xD5, 0, 0},
12657         {0xD6, 0x70, 1},
12658         {0xDB, 0x7, 0},
12659         {0xDC, 0, 0},
12660         {0xDD, 0, 0},
12661         {0xDE, 0x88, 1},
12662         {0xDF, 0, 0},
12663         {0xE0, 0x1f, 0},
12664         {0xE1, 0x20, 1},
12665         {0xE2, 0x1, 0},
12666         {0xE3, 0x30, 0},
12667         {0xE4, 0x70, 0},
12668         {0xE5, 0, 0},
12669         {0xE6, 0, 0},
12670         {0xE7, 0x33, 0},
12671         {0xE8, 0xf, 1},
12672         {0xE9, 0x13, 1},
12673         {0xEA, 0, 0},
12674         {0xEB, 0xee, 1},
12675         {0xEE, 0, 0},
12676         {0xEF, 0x7e, 0},
12677         {0xF0, 0x3f, 0},
12678         {0xF1, 0x7f, 0},
12679         {0xF2, 0x78, 0},
12680         {0xF3, 0x58, 1},
12681         {0xF4, 0x88, 0},
12682         {0xF5, 0x8, 0},
12683         {0xF6, 0xf, 0},
12684         {0xF7, 0xbc, 0},
12685         {0xF8, 0x8, 0},
12686         {0xF9, 0x60, 0},
12687         {0xFA, 0x13, 1},
12688         {0xFB, 0x70, 0},
12689         {0xFC, 0, 0},
12690         {0xFD, 0, 0},
12691         {0xFE, 0, 0},
12692         {0xFF, 0x33, 0},
12693         {0x100, 0x13, 1},
12694         {0x101, 0x14, 1},
12695         {0x102, 0xee, 1},
12696         {0x105, 0x3c, 0},
12697         {0x106, 0x1, 1},
12698         {0x107, 0xa, 0},
12699         {0x108, 0x9d, 0},
12700         {0x109, 0xa, 0},
12701         {0x10A, 0, 0},
12702         {0x10B, 0x40, 0},
12703         {0x10C, 0x40, 0},
12704         {0x10D, 0x88, 0},
12705         {0x10E, 0x10, 0},
12706         {0x10F, 0xf0, 0},
12707         {0x110, 0x10, 0},
12708         {0x111, 0xf0, 0},
12709         {0x112, 0, 0},
12710         {0x113, 0, 0},
12711         {0x114, 0x10, 0},
12712         {0x115, 0x55, 0},
12713         {0x116, 0x3f, 1},
12714         {0x117, 0x36, 1},
12715         {0x118, 0, 0},
12716         {0x119, 0, 0},
12717         {0x11A, 0, 0},
12718         {0x11B, 0x87, 0},
12719         {0x11C, 0x11, 0},
12720         {0x11D, 0, 0},
12721         {0x11E, 0x33, 0},
12722         {0x11F, 0x88, 0},
12723         {0x120, 0, 0},
12724         {0x121, 0x87, 0},
12725         {0x122, 0x11, 0},
12726         {0x123, 0, 0},
12727         {0x124, 0x33, 0},
12728         {0x125, 0x88, 0},
12729         {0x126, 0x20, 1},
12730         {0x127, 0x3f, 0},
12731         {0x128, 0x44, 0},
12732         {0x129, 0x8c, 0},
12733         {0x12A, 0x6c, 0},
12734         {0x12B, 0x22, 0},
12735         {0x12C, 0xbe, 0},
12736         {0x12D, 0x55, 0},
12737         {0x12F, 0xc, 0},
12738         {0x130, 0xaa, 0},
12739         {0x131, 0x2, 0},
12740         {0x132, 0, 0},
12741         {0x133, 0x10, 0},
12742         {0x134, 0x1, 0},
12743         {0x135, 0, 0},
12744         {0x136, 0, 0},
12745         {0x137, 0x80, 0},
12746         {0x138, 0x60, 0},
12747         {0x139, 0x44, 0},
12748         {0x13A, 0x55, 0},
12749         {0x13B, 0x1, 0},
12750         {0x13C, 0x55, 0},
12751         {0x13D, 0x1, 0},
12752         {0x13E, 0x5, 0},
12753         {0x13F, 0x55, 0},
12754         {0x140, 0x55, 0},
12755         {0x146, 0, 0},
12756         {0x147, 0, 0},
12757         {0x148, 0, 0},
12758         {0x149, 0, 0},
12759         {0x14A, 0, 0},
12760         {0x14B, 0, 0},
12761         {0x14C, 0, 0},
12762         {0x14D, 0, 0},
12763         {0x14E, 0, 0},
12764         {0x14F, 0, 0},
12765         {0x150, 0, 0},
12766         {0x151, 0, 0},
12767         {0x154, 0xc, 0},
12768         {0x155, 0xc, 0},
12769         {0x156, 0xc, 0},
12770         {0x157, 0, 0},
12771         {0x158, 0x2b, 0},
12772         {0x159, 0x84, 0},
12773         {0x15A, 0x15, 0},
12774         {0x15B, 0xf, 0},
12775         {0x15C, 0, 0},
12776         {0x15D, 0, 0},
12777         {0x15E, 0, 1},
12778         {0x15F, 0, 1},
12779         {0x160, 0, 1},
12780         {0x161, 0, 1},
12781         {0x162, 0, 1},
12782         {0x163, 0, 1},
12783         {0x164, 0, 0},
12784         {0x165, 0, 0},
12785         {0x166, 0, 0},
12786         {0x167, 0, 0},
12787         {0x168, 0, 0},
12788         {0x169, 0, 0},
12789         {0x16A, 0, 1},
12790         {0x16B, 0, 1},
12791         {0x16C, 0, 1},
12792         {0x16D, 0, 0},
12793         {0x170, 0, 0},
12794         {0x171, 0x77, 0},
12795         {0x172, 0x77, 0},
12796         {0x173, 0x77, 0},
12797         {0x174, 0x77, 0},
12798         {0x175, 0, 0},
12799         {0x176, 0x3, 0},
12800         {0x177, 0x37, 0},
12801         {0x178, 0x3, 0},
12802         {0x179, 0, 0},
12803         {0x17A, 0x21, 0},
12804         {0x17B, 0x21, 0},
12805         {0x17C, 0, 0},
12806         {0x17D, 0xaa, 0},
12807         {0x17E, 0, 0},
12808         {0x17F, 0xaa, 0},
12809         {0x180, 0, 0},
12810         {0x190, 0, 0},
12811         {0x191, 0x77, 0},
12812         {0x192, 0x77, 0},
12813         {0x193, 0x77, 0},
12814         {0x194, 0x77, 0},
12815         {0x195, 0, 0},
12816         {0x196, 0x3, 0},
12817         {0x197, 0x37, 0},
12818         {0x198, 0x3, 0},
12819         {0x199, 0, 0},
12820         {0x19A, 0x21, 0},
12821         {0x19B, 0x21, 0},
12822         {0x19C, 0, 0},
12823         {0x19D, 0xaa, 0},
12824         {0x19E, 0, 0},
12825         {0x19F, 0xaa, 0},
12826         {0x1A0, 0, 0},
12827         {0x1A1, 0x2, 0},
12828         {0x1A2, 0xf, 0},
12829         {0x1A3, 0xf, 0},
12830         {0x1A4, 0, 1},
12831         {0x1A5, 0, 1},
12832         {0x1A6, 0, 1},
12833         {0x1A7, 0x2, 0},
12834         {0x1A8, 0xf, 0},
12835         {0x1A9, 0xf, 0},
12836         {0x1AA, 0, 1},
12837         {0x1AB, 0, 1},
12838         {0x1AC, 0, 1},
12839         {0x1AD, 0x84, 0},
12840         {0x1AE, 0x60, 0},
12841         {0x1AF, 0x47, 0},
12842         {0x1B0, 0x47, 0},
12843         {0x1B1, 0, 0},
12844         {0x1B2, 0, 0},
12845         {0x1B3, 0, 0},
12846         {0x1B4, 0, 0},
12847         {0x1B5, 0, 0},
12848         {0x1B6, 0, 0},
12849         {0x1B7, 0x5, 1},
12850         {0x1B8, 0, 0},
12851         {0x1B9, 0, 0},
12852         {0x1BA, 0, 0},
12853         {0x1BB, 0, 0},
12854         {0x1BC, 0, 0},
12855         {0x1BD, 0, 0},
12856         {0x1BE, 0, 0},
12857         {0x1BF, 0, 0},
12858         {0x1C0, 0, 0},
12859         {0x1C1, 0, 0},
12860         {0x1C2, 0xa0, 1},
12861         {0x1C3, 0, 0},
12862         {0x1C4, 0, 0},
12863         {0x1C5, 0, 0},
12864         {0x1C6, 0, 0},
12865         {0x1C7, 0, 0},
12866         {0x1C8, 0, 0},
12867         {0x1C9, 0, 0},
12868         {0x1CA, 0, 0},
12869         {0xFFFF, 0, 0}
12870 };
12871
12872 radio_20xx_regs_t regs_2057_rev8[] = {
12873         {0x00, 0x8, 1},
12874         {0x01, 0x57, 1},
12875         {0x02, 0x20, 1},
12876         {0x03, 0x1f, 0},
12877         {0x04, 0x4, 0},
12878         {0x05, 0x2, 0},
12879         {0x06, 0x1, 0},
12880         {0x07, 0x1, 0},
12881         {0x08, 0x1, 0},
12882         {0x09, 0x69, 0},
12883         {0x0A, 0x66, 0},
12884         {0x0B, 0x6, 0},
12885         {0x0C, 0x18, 0},
12886         {0x0D, 0x3, 0},
12887         {0x0E, 0x20, 0},
12888         {0x0F, 0x20, 0},
12889         {0x10, 0, 0},
12890         {0x11, 0x7c, 0},
12891         {0x12, 0x42, 0},
12892         {0x13, 0xbd, 0},
12893         {0x14, 0x7, 0},
12894         {0x15, 0x87, 0},
12895         {0x16, 0x8, 0},
12896         {0x17, 0x17, 0},
12897         {0x18, 0x7, 0},
12898         {0x19, 0, 0},
12899         {0x1A, 0x2, 0},
12900         {0x1B, 0x13, 0},
12901         {0x1C, 0x3e, 0},
12902         {0x1D, 0x3e, 0},
12903         {0x1E, 0x96, 0},
12904         {0x1F, 0x4, 0},
12905         {0x20, 0, 0},
12906         {0x21, 0, 0},
12907         {0x22, 0x17, 0},
12908         {0x23, 0x6, 0},
12909         {0x24, 0x1, 0},
12910         {0x25, 0x6, 0},
12911         {0x26, 0x4, 0},
12912         {0x27, 0xd, 0},
12913         {0x28, 0xd, 0},
12914         {0x29, 0x30, 0},
12915         {0x2A, 0x32, 0},
12916         {0x2B, 0x8, 0},
12917         {0x2C, 0x1c, 0},
12918         {0x2D, 0x2, 0},
12919         {0x2E, 0x4, 0},
12920         {0x2F, 0x7f, 0},
12921         {0x30, 0x27, 0},
12922         {0x31, 0, 1},
12923         {0x32, 0, 1},
12924         {0x33, 0, 1},
12925         {0x34, 0, 0},
12926         {0x35, 0x20, 0},
12927         {0x36, 0x18, 0},
12928         {0x37, 0x7, 0},
12929         {0x38, 0x66, 0},
12930         {0x39, 0x66, 0},
12931         {0x3A, 0x66, 0},
12932         {0x3B, 0x66, 0},
12933         {0x3C, 0xff, 0},
12934         {0x3D, 0xff, 0},
12935         {0x3E, 0xff, 0},
12936         {0x3F, 0xff, 0},
12937         {0x40, 0x16, 0},
12938         {0x41, 0x7, 0},
12939         {0x42, 0x19, 0},
12940         {0x43, 0x7, 0},
12941         {0x44, 0x6, 0},
12942         {0x45, 0x3, 0},
12943         {0x46, 0x1, 0},
12944         {0x47, 0x7, 0},
12945         {0x48, 0x33, 0},
12946         {0x49, 0x5, 0},
12947         {0x4A, 0x77, 0},
12948         {0x4B, 0x66, 0},
12949         {0x4C, 0x66, 0},
12950         {0x4D, 0, 0},
12951         {0x4E, 0x4, 0},
12952         {0x4F, 0xc, 0},
12953         {0x50, 0, 0},
12954         {0x51, 0x70, 1},
12955         {0x56, 0x7, 0},
12956         {0x57, 0, 0},
12957         {0x58, 0, 0},
12958         {0x59, 0x88, 1},
12959         {0x5A, 0, 0},
12960         {0x5B, 0x1f, 0},
12961         {0x5C, 0x20, 1},
12962         {0x5D, 0x1, 0},
12963         {0x5E, 0x30, 0},
12964         {0x5F, 0x70, 0},
12965         {0x60, 0, 0},
12966         {0x61, 0, 0},
12967         {0x62, 0x33, 1},
12968         {0x63, 0xf, 1},
12969         {0x64, 0xf, 1},
12970         {0x65, 0, 0},
12971         {0x66, 0x11, 0},
12972         {0x69, 0, 0},
12973         {0x6A, 0x7e, 0},
12974         {0x6B, 0x3f, 0},
12975         {0x6C, 0x7f, 0},
12976         {0x6D, 0x78, 0},
12977         {0x6E, 0x58, 1},
12978         {0x6F, 0x88, 0},
12979         {0x70, 0x8, 0},
12980         {0x71, 0xf, 0},
12981         {0x72, 0xbc, 0},
12982         {0x73, 0x8, 0},
12983         {0x74, 0x60, 0},
12984         {0x75, 0x13, 1},
12985         {0x76, 0x70, 0},
12986         {0x77, 0, 0},
12987         {0x78, 0, 0},
12988         {0x79, 0, 0},
12989         {0x7A, 0x33, 0},
12990         {0x7B, 0x13, 1},
12991         {0x7C, 0xf, 1},
12992         {0x7D, 0xee, 1},
12993         {0x80, 0x3c, 0},
12994         {0x81, 0x1, 1},
12995         {0x82, 0xa, 0},
12996         {0x83, 0x9d, 0},
12997         {0x84, 0xa, 0},
12998         {0x85, 0, 0},
12999         {0x86, 0x40, 0},
13000         {0x87, 0x40, 0},
13001         {0x88, 0x88, 0},
13002         {0x89, 0x10, 0},
13003         {0x8A, 0xf0, 0},
13004         {0x8B, 0x10, 0},
13005         {0x8C, 0xf0, 0},
13006         {0x8D, 0, 0},
13007         {0x8E, 0, 0},
13008         {0x8F, 0x10, 0},
13009         {0x90, 0x55, 0},
13010         {0x91, 0x3f, 1},
13011         {0x92, 0x36, 1},
13012         {0x93, 0, 0},
13013         {0x94, 0, 0},
13014         {0x95, 0, 0},
13015         {0x96, 0x87, 0},
13016         {0x97, 0x11, 0},
13017         {0x98, 0, 0},
13018         {0x99, 0x33, 0},
13019         {0x9A, 0x88, 0},
13020         {0x9B, 0, 0},
13021         {0x9C, 0x87, 0},
13022         {0x9D, 0x11, 0},
13023         {0x9E, 0, 0},
13024         {0x9F, 0x33, 0},
13025         {0xA0, 0x88, 0},
13026         {0xA1, 0x20, 1},
13027         {0xA2, 0x3f, 0},
13028         {0xA3, 0x44, 0},
13029         {0xA4, 0x8c, 0},
13030         {0xA5, 0x6c, 0},
13031         {0xA6, 0x22, 0},
13032         {0xA7, 0xbe, 0},
13033         {0xA8, 0x55, 0},
13034         {0xAA, 0xc, 0},
13035         {0xAB, 0xaa, 0},
13036         {0xAC, 0x2, 0},
13037         {0xAD, 0, 0},
13038         {0xAE, 0x10, 0},
13039         {0xAF, 0x1, 0},
13040         {0xB0, 0, 0},
13041         {0xB1, 0, 0},
13042         {0xB2, 0x80, 0},
13043         {0xB3, 0x60, 0},
13044         {0xB4, 0x44, 0},
13045         {0xB5, 0x55, 0},
13046         {0xB6, 0x1, 0},
13047         {0xB7, 0x55, 0},
13048         {0xB8, 0x1, 0},
13049         {0xB9, 0x5, 0},
13050         {0xBA, 0x55, 0},
13051         {0xBB, 0x55, 0},
13052         {0xC1, 0, 0},
13053         {0xC2, 0, 0},
13054         {0xC3, 0, 0},
13055         {0xC4, 0, 0},
13056         {0xC5, 0, 0},
13057         {0xC6, 0, 0},
13058         {0xC7, 0, 0},
13059         {0xC8, 0, 0},
13060         {0xC9, 0x1, 1},
13061         {0xCA, 0, 0},
13062         {0xCB, 0, 0},
13063         {0xCC, 0, 0},
13064         {0xCD, 0, 0},
13065         {0xCE, 0x5e, 0},
13066         {0xCF, 0xc, 0},
13067         {0xD0, 0xc, 0},
13068         {0xD1, 0xc, 0},
13069         {0xD2, 0, 0},
13070         {0xD3, 0x2b, 0},
13071         {0xD4, 0xc, 0},
13072         {0xD5, 0, 0},
13073         {0xD6, 0x70, 1},
13074         {0xDB, 0x7, 0},
13075         {0xDC, 0, 0},
13076         {0xDD, 0, 0},
13077         {0xDE, 0x88, 1},
13078         {0xDF, 0, 0},
13079         {0xE0, 0x1f, 0},
13080         {0xE1, 0x20, 1},
13081         {0xE2, 0x1, 0},
13082         {0xE3, 0x30, 0},
13083         {0xE4, 0x70, 0},
13084         {0xE5, 0, 0},
13085         {0xE6, 0, 0},
13086         {0xE7, 0x33, 0},
13087         {0xE8, 0xf, 1},
13088         {0xE9, 0xf, 1},
13089         {0xEA, 0, 0},
13090         {0xEB, 0x11, 0},
13091         {0xEE, 0, 0},
13092         {0xEF, 0x7e, 0},
13093         {0xF0, 0x3f, 0},
13094         {0xF1, 0x7f, 0},
13095         {0xF2, 0x78, 0},
13096         {0xF3, 0x58, 1},
13097         {0xF4, 0x88, 0},
13098         {0xF5, 0x8, 0},
13099         {0xF6, 0xf, 0},
13100         {0xF7, 0xbc, 0},
13101         {0xF8, 0x8, 0},
13102         {0xF9, 0x60, 0},
13103         {0xFA, 0x13, 1},
13104         {0xFB, 0x70, 0},
13105         {0xFC, 0, 0},
13106         {0xFD, 0, 0},
13107         {0xFE, 0, 0},
13108         {0xFF, 0x33, 0},
13109         {0x100, 0x13, 1},
13110         {0x101, 0xf, 1},
13111         {0x102, 0xee, 1},
13112         {0x105, 0x3c, 0},
13113         {0x106, 0x1, 1},
13114         {0x107, 0xa, 0},
13115         {0x108, 0x9d, 0},
13116         {0x109, 0xa, 0},
13117         {0x10A, 0, 0},
13118         {0x10B, 0x40, 0},
13119         {0x10C, 0x40, 0},
13120         {0x10D, 0x88, 0},
13121         {0x10E, 0x10, 0},
13122         {0x10F, 0xf0, 0},
13123         {0x110, 0x10, 0},
13124         {0x111, 0xf0, 0},
13125         {0x112, 0, 0},
13126         {0x113, 0, 0},
13127         {0x114, 0x10, 0},
13128         {0x115, 0x55, 0},
13129         {0x116, 0x3f, 1},
13130         {0x117, 0x36, 1},
13131         {0x118, 0, 0},
13132         {0x119, 0, 0},
13133         {0x11A, 0, 0},
13134         {0x11B, 0x87, 0},
13135         {0x11C, 0x11, 0},
13136         {0x11D, 0, 0},
13137         {0x11E, 0x33, 0},
13138         {0x11F, 0x88, 0},
13139         {0x120, 0, 0},
13140         {0x121, 0x87, 0},
13141         {0x122, 0x11, 0},
13142         {0x123, 0, 0},
13143         {0x124, 0x33, 0},
13144         {0x125, 0x88, 0},
13145         {0x126, 0x20, 1},
13146         {0x127, 0x3f, 0},
13147         {0x128, 0x44, 0},
13148         {0x129, 0x8c, 0},
13149         {0x12A, 0x6c, 0},
13150         {0x12B, 0x22, 0},
13151         {0x12C, 0xbe, 0},
13152         {0x12D, 0x55, 0},
13153         {0x12F, 0xc, 0},
13154         {0x130, 0xaa, 0},
13155         {0x131, 0x2, 0},
13156         {0x132, 0, 0},
13157         {0x133, 0x10, 0},
13158         {0x134, 0x1, 0},
13159         {0x135, 0, 0},
13160         {0x136, 0, 0},
13161         {0x137, 0x80, 0},
13162         {0x138, 0x60, 0},
13163         {0x139, 0x44, 0},
13164         {0x13A, 0x55, 0},
13165         {0x13B, 0x1, 0},
13166         {0x13C, 0x55, 0},
13167         {0x13D, 0x1, 0},
13168         {0x13E, 0x5, 0},
13169         {0x13F, 0x55, 0},
13170         {0x140, 0x55, 0},
13171         {0x146, 0, 0},
13172         {0x147, 0, 0},
13173         {0x148, 0, 0},
13174         {0x149, 0, 0},
13175         {0x14A, 0, 0},
13176         {0x14B, 0, 0},
13177         {0x14C, 0, 0},
13178         {0x14D, 0, 0},
13179         {0x14E, 0x1, 1},
13180         {0x14F, 0, 0},
13181         {0x150, 0, 0},
13182         {0x151, 0, 0},
13183         {0x154, 0xc, 0},
13184         {0x155, 0xc, 0},
13185         {0x156, 0xc, 0},
13186         {0x157, 0, 0},
13187         {0x158, 0x2b, 0},
13188         {0x159, 0x84, 0},
13189         {0x15A, 0x15, 0},
13190         {0x15B, 0xf, 0},
13191         {0x15C, 0, 0},
13192         {0x15D, 0, 0},
13193         {0x15E, 0, 1},
13194         {0x15F, 0, 1},
13195         {0x160, 0, 1},
13196         {0x161, 0, 1},
13197         {0x162, 0, 1},
13198         {0x163, 0, 1},
13199         {0x164, 0, 0},
13200         {0x165, 0, 0},
13201         {0x166, 0, 0},
13202         {0x167, 0, 0},
13203         {0x168, 0, 0},
13204         {0x169, 0, 0},
13205         {0x16A, 0, 1},
13206         {0x16B, 0, 1},
13207         {0x16C, 0, 1},
13208         {0x16D, 0, 0},
13209         {0x170, 0, 0},
13210         {0x171, 0x77, 0},
13211         {0x172, 0x77, 0},
13212         {0x173, 0x77, 0},
13213         {0x174, 0x77, 0},
13214         {0x175, 0, 0},
13215         {0x176, 0x3, 0},
13216         {0x177, 0x37, 0},
13217         {0x178, 0x3, 0},
13218         {0x179, 0, 0},
13219         {0x17A, 0x21, 0},
13220         {0x17B, 0x21, 0},
13221         {0x17C, 0, 0},
13222         {0x17D, 0xaa, 0},
13223         {0x17E, 0, 0},
13224         {0x17F, 0xaa, 0},
13225         {0x180, 0, 0},
13226         {0x190, 0, 0},
13227         {0x191, 0x77, 0},
13228         {0x192, 0x77, 0},
13229         {0x193, 0x77, 0},
13230         {0x194, 0x77, 0},
13231         {0x195, 0, 0},
13232         {0x196, 0x3, 0},
13233         {0x197, 0x37, 0},
13234         {0x198, 0x3, 0},
13235         {0x199, 0, 0},
13236         {0x19A, 0x21, 0},
13237         {0x19B, 0x21, 0},
13238         {0x19C, 0, 0},
13239         {0x19D, 0xaa, 0},
13240         {0x19E, 0, 0},
13241         {0x19F, 0xaa, 0},
13242         {0x1A0, 0, 0},
13243         {0x1A1, 0x2, 0},
13244         {0x1A2, 0xf, 0},
13245         {0x1A3, 0xf, 0},
13246         {0x1A4, 0, 1},
13247         {0x1A5, 0, 1},
13248         {0x1A6, 0, 1},
13249         {0x1A7, 0x2, 0},
13250         {0x1A8, 0xf, 0},
13251         {0x1A9, 0xf, 0},
13252         {0x1AA, 0, 1},
13253         {0x1AB, 0, 1},
13254         {0x1AC, 0, 1},
13255         {0x1AD, 0x84, 0},
13256         {0x1AE, 0x60, 0},
13257         {0x1AF, 0x47, 0},
13258         {0x1B0, 0x47, 0},
13259         {0x1B1, 0, 0},
13260         {0x1B2, 0, 0},
13261         {0x1B3, 0, 0},
13262         {0x1B4, 0, 0},
13263         {0x1B5, 0, 0},
13264         {0x1B6, 0, 0},
13265         {0x1B7, 0x5, 1},
13266         {0x1B8, 0, 0},
13267         {0x1B9, 0, 0},
13268         {0x1BA, 0, 0},
13269         {0x1BB, 0, 0},
13270         {0x1BC, 0, 0},
13271         {0x1BD, 0, 0},
13272         {0x1BE, 0, 0},
13273         {0x1BF, 0, 0},
13274         {0x1C0, 0, 0},
13275         {0x1C1, 0, 0},
13276         {0x1C2, 0xa0, 1},
13277         {0x1C3, 0, 0},
13278         {0x1C4, 0, 0},
13279         {0x1C5, 0, 0},
13280         {0x1C6, 0, 0},
13281         {0x1C7, 0, 0},
13282         {0x1C8, 0, 0},
13283         {0x1C9, 0, 0},
13284         {0x1CA, 0, 0},
13285         {0xFFFF, 0, 0}
13286 };
13287
13288 static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13289
13290 static s32 nphy_lnagain_est0[] = { -315, 40370 };
13291 static s32 nphy_lnagain_est1[] = { -224, 23242 };
13292
13293 static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13294         {
13295          {0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13296          {0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13297          {0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13298          {0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13299          {0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13300          {0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13301          {0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13302          {0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13303          {0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13304          },
13305         {
13306          {0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13307          {0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13308          {0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13309          {0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13310          {0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13311          {0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13312          {0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13313          {0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13314          {0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13315          }
13316 };
13317
13318 static const u32 nphy_tpc_txgain[] = {
13319         0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13320         0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13321         0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13322         0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13323         0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13324         0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13325         0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13326         0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13327         0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13328         0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13329         0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13330         0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13331         0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13332         0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13333         0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13334         0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13335         0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13336         0x03902942, 0x03902844, 0x03902842, 0x03902744,
13337         0x03902742, 0x03902644, 0x03902642, 0x03902544,
13338         0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13339         0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13340         0x03802842, 0x03802744, 0x03802742, 0x03802644,
13341         0x03802642, 0x03802544, 0x03802542, 0x03802444,
13342         0x03802442, 0x03802344, 0x03802342, 0x03802244,
13343         0x03802242, 0x03802144, 0x03802142, 0x03802044,
13344         0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13345         0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13346         0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13347         0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13348         0x03801842, 0x03801744, 0x03801742, 0x03801644,
13349         0x03801642, 0x03801544, 0x03801542, 0x03801444,
13350         0x03801442, 0x03801344, 0x03801342, 0x00002b00
13351 };
13352
13353 static const u16 nphy_tpc_loscale[] = {
13354         256, 256, 271, 271, 287, 256, 256, 271,
13355         271, 287, 287, 304, 304, 256, 256, 271,
13356         271, 287, 287, 304, 304, 322, 322, 341,
13357         341, 362, 362, 383, 383, 256, 256, 271,
13358         271, 287, 287, 304, 304, 322, 322, 256,
13359         256, 271, 271, 287, 287, 304, 304, 322,
13360         322, 341, 341, 362, 362, 256, 256, 271,
13361         271, 287, 287, 304, 304, 322, 322, 256,
13362         256, 271, 271, 287, 287, 304, 304, 322,
13363         322, 341, 341, 362, 362, 256, 256, 271,
13364         271, 287, 287, 304, 304, 322, 322, 341,
13365         341, 362, 362, 383, 383, 406, 406, 430,
13366         430, 455, 455, 482, 482, 511, 511, 541,
13367         541, 573, 573, 607, 607, 643, 643, 681,
13368         681, 722, 722, 764, 764, 810, 810, 858,
13369         858, 908, 908, 962, 962, 1019, 1019, 256
13370 };
13371
13372 static u32 nphy_tpc_txgain_ipa[] = {
13373         0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13374         0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13375         0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13376         0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13377         0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13378         0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13379         0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13380         0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13381         0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13382         0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13383         0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13384         0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13385         0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13386         0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13387         0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13388         0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13389         0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13390         0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13391         0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13392         0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13393         0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13394         0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13395         0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13396         0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13397         0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13398         0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13399         0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13400         0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13401         0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13402         0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13403         0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13404         0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13405 };
13406
13407 static u32 nphy_tpc_txgain_ipa_rev5[] = {
13408         0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13409         0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13410         0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13411         0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13412         0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13413         0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13414         0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13415         0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13416         0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13417         0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13418         0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13419         0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13420         0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13421         0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13422         0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13423         0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13424         0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13425         0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13426         0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13427         0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13428         0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13429         0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13430         0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13431         0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13432         0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13433         0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13434         0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13435         0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13436         0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13437         0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13438         0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13439         0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13440 };
13441
13442 static u32 nphy_tpc_txgain_ipa_rev6[] = {
13443         0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13444         0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13445         0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13446         0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13447         0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13448         0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13449         0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13450         0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13451         0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13452         0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13453         0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13454         0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13455         0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13456         0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13457         0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13458         0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13459         0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13460         0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13461         0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13462         0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13463         0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13464         0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13465         0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13466         0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13467         0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13468         0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13469         0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13470         0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13471         0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13472         0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13473         0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13474         0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13475 };
13476
13477 static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13478         0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13479         0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13480         0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13481         0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13482         0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13483         0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13484         0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13485         0x70470028, 0x70470026, 0x70470024, 0x70470022,
13486         0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13487         0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13488         0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13489         0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13490         0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13491         0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13492         0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13493         0x70170019, 0x70170018, 0x70170016, 0x70170015,
13494         0x70170014, 0x70170013, 0x70170012, 0x70170010,
13495         0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13496         0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13497         0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13498         0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13499         0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13500         0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13501         0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13502         0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13503         0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13504         0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13505         0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13506         0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13507         0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13508         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13509         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13510 };
13511
13512 static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13513         0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13514         0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13515         0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13516         0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13517         0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13518         0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13519         0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13520         0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13521         0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13522         0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13523         0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13524         0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13525         0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13526         0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13527         0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13528         0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13529         0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13530         0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13531         0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13532         0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13533         0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13534         0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13535         0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13536         0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13537         0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13538         0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13539         0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13540         0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13541         0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13542         0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13543         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13544         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13545 };
13546
13547 static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13548         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13549         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13550         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13551         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13552         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13553         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13554         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13555         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13556         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13557         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13558         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13559         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13560         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13561         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13562         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13563         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13564         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13565         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13566         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
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         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13580 };
13581
13582 static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13583         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13584         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13585         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13586         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13587         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13588         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13589         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13590         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13591         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13592         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13593         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13594         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13595         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13596         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13597         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13598         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13599         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13600         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13601         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
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         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13615 };
13616
13617 static u32 nphy_tpc_txgain_ipa_5g[] = {
13618         0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13619         0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13620         0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13621         0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13622         0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13623         0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13624         0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13625         0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13626         0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13627         0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13628         0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13629         0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13630         0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13631         0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13632         0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13633         0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13634         0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13635         0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13636         0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13637         0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13638         0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13639         0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13640         0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13641         0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13642         0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13643         0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13644         0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13645         0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13646         0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13647         0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13648         0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13649         0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13650 };
13651
13652 static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13653         0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13654         0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13655         0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13656         0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13657         0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13658         0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13659         0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13660         0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13661         0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13662         0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13663         0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13664         0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13665         0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13666         0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13667         0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13668         0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13669         0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13670         0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13671         0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13672         0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13673         0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13674         0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13675         0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13676         0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13677         0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13678         0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13679         0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13680         0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13681         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13682         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13683         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13684         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13685 };
13686
13687 static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13688         0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13689         0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13690         0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13691         0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13692         0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13693         0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13694         0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13695         0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13696         0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13697         0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13698         0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13699         0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13700         0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13701         0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13702         0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13703         0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13704         0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13705         0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13706         0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13707         0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13708         0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13709         0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13710         0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13711         0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13712         0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13713         0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13714         0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13715         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13716         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13717         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13718         0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13719         0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13720 };
13721
13722 static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13723         -114, -108, -98, -91, -84, -78, -70, -62,
13724         -54, -46, -39, -31, -23, -15, -8, 0
13725 };
13726
13727 static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13728         -100, -95, -89, -83, -77, -70, -63, -56,
13729         -48, -41, -33, -25, -19, -12, -6, 0
13730 };
13731
13732 static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13733         -159, -113, -86, -72, -62, -54, -48, -43,
13734         -39, -35, -31, -28, -25, -23, -20, -18,
13735         -17, -15, -13, -11, -10, -8, -7, -6,
13736         -5, -4, -3, -3, -2, -1, -1, 0
13737 };
13738
13739 static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13740         -109, -109, -82, -68, -58, -50, -44, -39,
13741         -35, -31, -28, -26, -23, -21, -19, -17,
13742         -16, -14, -13, -11, -10, -9, -8, -7,
13743         -5, -5, -4, -3, -2, -1, -1, 0
13744 };
13745
13746 static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13747         -122, -122, -95, -80, -69, -61, -54, -49,
13748         -43, -39, -35, -32, -28, -26, -23, -21,
13749         -18, -16, -15, -13, -11, -10, -8, -7,
13750         -6, -5, -4, -3, -2, -1, -1, 0
13751 };
13752
13753 static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13754         -107, -101, -92, -85, -78, -71, -62, -55,
13755         -47, -39, -32, -24, -19, -12, -6, 0
13756 };
13757
13758 static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13759         -110, -104, -95, -88, -81, -74, -66, -58,
13760         -50, -44, -36, -28, -23, -15, -8, 0
13761 };
13762
13763 static u8 pad_gain_codes_used_2057rev5[] = {
13764         20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13765         10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13766 };
13767
13768 static u8 pad_gain_codes_used_2057rev7[] = {
13769         15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13770         5, 4, 3, 2, 1
13771 };
13772
13773 static u8 pad_all_gain_codes_2057[] = {
13774         31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13775         21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13776         11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13777         1, 0
13778 };
13779
13780 static u8 pga_all_gain_codes_2057[] = {
13781         15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13782 };
13783
13784 static u32 nphy_papd_scaltbl[] = {
13785         0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13786         0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13787         0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13788         0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13789         0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13790         0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13791         0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13792         0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13793         0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13794         0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13795         0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13796         0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13797         0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13798         0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13799         0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13800         0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13801 };
13802
13803 static u32 nphy_tpc_txgain_rev3[] = {
13804         0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13805         0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13806         0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13807         0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13808         0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13809         0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13810         0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13811         0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13812         0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13813         0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13814         0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13815         0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13816         0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13817         0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13818         0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13819         0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13820         0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13821         0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13822         0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13823         0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13824         0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13825         0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13826         0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13827         0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13828         0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13829         0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13830         0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13831         0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13832         0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13833         0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13834         0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13835         0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13836 };
13837
13838 static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13839         0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13840         0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13841         0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13842         0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13843         0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13844         0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13845         0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13846         0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13847         0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13848         0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13849         0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13850         0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13851         0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13852         0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13853         0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13854         0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13855         0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13856         0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13857         0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13858         0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13859         0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13860         0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13861         0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13862         0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13863         0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13864         0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13865         0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13866         0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13867         0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13868         0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13869         0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13870         0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13871 };
13872
13873 static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13874         0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13875         0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13876         0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13877         0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13878         0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13879         0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13880         0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13881         0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13882         0x80290031, 0x80210039, 0x80210036, 0x80210033,
13883         0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13884         0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13885         0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13886         0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13887         0x80110027, 0x80110024, 0x80110022, 0x80110020,
13888         0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13889         0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13890         0x80090029, 0x80090027, 0x80090025, 0x80090023,
13891         0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13892         0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13893         0x8009061d, 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         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d
13906 };
13907
13908 static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13909         0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13910         0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13911         0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13912         0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13913         0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13914         0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13915         0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13916         0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13917         0x10290031, 0x10210039, 0x10210036, 0x10210033,
13918         0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13919         0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13920         0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13921         0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13922         0x10110027, 0x10110024, 0x10110022, 0x10110020,
13923         0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13924         0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13925         0x10090029, 0x10090027, 0x10090025, 0x10090023,
13926         0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13927         0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13928         0x10090015, 0x10090013, 0x10090012, 0x10090011,
13929         0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13930         0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13931         0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13932         0x10090008, 0x10090008, 0x10090007, 0x10090007,
13933         0x10090007, 0x10090006, 0x10090006, 0x10090005,
13934         0x10090005, 0x10090005, 0x10090005, 0x10090004,
13935         0x10090004, 0x10090004, 0x10090004, 0x10090003,
13936         0x10090003, 0x10090003, 0x10090003, 0x10090003,
13937         0x10090003, 0x10090002, 0x10090002, 0x10090002,
13938         0x10090002, 0x10090002, 0x10090002, 0x10090002,
13939         0x10090002, 0x10090002, 0x10090001, 0x10090001,
13940         0x10090001, 0x10090001, 0x10090001, 0x10090001
13941 };
13942
13943 static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13944         0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13945         0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13946         0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13947         0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13948         0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13949         0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13950         0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13951         0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13952         0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13953         0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13954         0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13955         0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13956         0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13957         0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13958         0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13959         0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13960         0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13961         0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13962         0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13963         0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13964         0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13965         0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13966         0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13967         0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13968         0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13969         0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
13970         0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
13971         0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
13972         0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
13973         0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
13974         0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
13975         0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
13976 };
13977
13978 static u32 nphy_tpc_5GHz_txgain_rev4[] = {
13979         0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
13980         0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
13981         0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
13982         0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
13983         0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
13984         0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
13985         0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
13986         0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
13987         0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
13988         0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
13989         0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
13990         0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
13991         0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
13992         0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
13993         0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
13994         0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
13995         0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
13996         0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
13997         0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
13998         0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
13999         0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
14000         0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
14001         0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
14002         0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
14003         0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
14004         0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
14005         0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14006         0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14007         0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14008         0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14009         0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14010         0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14011 };
14012
14013 static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14014         0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14015         0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14016         0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14017         0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14018         0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14019         0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14020         0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14021         0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14022         0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14023         0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14024         0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14025         0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14026         0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14027         0x09620039, 0x09620037, 0x09620035, 0x09620033,
14028         0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14029         0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14030         0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14031         0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14032         0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14033         0x06620039, 0x06620037, 0x06620035, 0x06620033,
14034         0x05620046, 0x05620044, 0x05620042, 0x05620040,
14035         0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14036         0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14037         0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14038         0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14039         0x03620038, 0x03620037, 0x03620035, 0x03620033,
14040         0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14041         0x02620046, 0x02620044, 0x02620043, 0x02620042,
14042         0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14043         0x01620043, 0x01620042, 0x01620041, 0x01620040,
14044         0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14045         0x0062003b, 0x00620039, 0x00620037, 0x00620035
14046 };
14047
14048 static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14049         0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14050         0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14051         0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14052         0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14053         0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14054         0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14055         0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14056         0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14057         0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14058         0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14059         0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14060         0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14061         0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14062         0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14063         0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14064         0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14065         0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14066         0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14067         0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14068         0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14069         0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14070         0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14071         0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14072         0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14073         0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14074         0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14075         0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14076         0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14077         0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14078         0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14079         0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14080         0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14081 };
14082
14083 static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14084 static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14085 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14086         0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a };
14087 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14088         0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16 };
14089
14090 static bool wlc_phy_chan2freq_nphy(phy_info_t *pi, uint channel, int *f,
14091                                    chan_info_nphy_radio2057_t **t0,
14092                                    chan_info_nphy_radio205x_t **t1,
14093                                    chan_info_nphy_radio2057_rev5_t **t2,
14094                                    chan_info_nphy_2055_t **t3);
14095 static void wlc_phy_chanspec_nphy_setup(phy_info_t *pi, chanspec_t chans,
14096                                         const nphy_sfo_cfg_t *c);
14097
14098 static void wlc_phy_adjust_rx_analpfbw_nphy(phy_info_t *pi,
14099                                             u16 reduction_factr);
14100 static void wlc_phy_adjust_min_noisevar_nphy(phy_info_t *pi, int ntones, int *,
14101                                              u32 *buf);
14102 static void wlc_phy_adjust_crsminpwr_nphy(phy_info_t *pi, u8 minpwr);
14103 static void wlc_phy_txlpfbw_nphy(phy_info_t *pi);
14104 static void wlc_phy_spurwar_nphy(phy_info_t *pi);
14105
14106 static void wlc_phy_radio_preinit_2055(phy_info_t *pi);
14107 static void wlc_phy_radio_init_2055(phy_info_t *pi);
14108 static void wlc_phy_radio_postinit_2055(phy_info_t *pi);
14109 static void wlc_phy_radio_preinit_205x(phy_info_t *pi);
14110 static void wlc_phy_radio_init_2056(phy_info_t *pi);
14111 static void wlc_phy_radio_postinit_2056(phy_info_t *pi);
14112 static void wlc_phy_radio_init_2057(phy_info_t *pi);
14113 static void wlc_phy_radio_postinit_2057(phy_info_t *pi);
14114 static void wlc_phy_workarounds_nphy(phy_info_t *pi);
14115 static void wlc_phy_workarounds_nphy_gainctrl(phy_info_t *pi);
14116 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(phy_info_t *pi);
14117 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(phy_info_t *pi);
14118 static void wlc_phy_adjust_lnagaintbl_nphy(phy_info_t *pi);
14119
14120 static void wlc_phy_restore_rssical_nphy(phy_info_t *pi);
14121 static void wlc_phy_reapply_txcal_coeffs_nphy(phy_info_t *pi);
14122 static void wlc_phy_tx_iq_war_nphy(phy_info_t *pi);
14123 static int wlc_phy_cal_rxiq_nphy_rev3(phy_info_t *pi, nphy_txgains_t tg,
14124                                       u8 type, bool d);
14125 static void wlc_phy_rxcal_gainctrl_nphy_rev5(phy_info_t *pi, u8 rxcore,
14126                                              u16 *rg, u8 type);
14127 static void wlc_phy_update_mimoconfig_nphy(phy_info_t *pi, s32 preamble);
14128 static void wlc_phy_savecal_nphy(phy_info_t *pi);
14129 static void wlc_phy_restorecal_nphy(phy_info_t *pi);
14130 static void wlc_phy_resetcca_nphy(phy_info_t *pi);
14131
14132 static void wlc_phy_txpwrctrl_config_nphy(phy_info_t *pi);
14133 static void wlc_phy_internal_cal_txgain_nphy(phy_info_t *pi);
14134 static void wlc_phy_precal_txgain_nphy(phy_info_t *pi);
14135 static void wlc_phy_update_txcal_ladder_nphy(phy_info_t *pi, u16 core);
14136
14137 static void wlc_phy_extpa_set_tx_digi_filts_nphy(phy_info_t *pi);
14138 static void wlc_phy_ipa_set_tx_digi_filts_nphy(phy_info_t *pi);
14139 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(phy_info_t *pi);
14140 static u16 wlc_phy_ipa_get_bbmult_nphy(phy_info_t *pi);
14141 static void wlc_phy_ipa_set_bbmult_nphy(phy_info_t *pi, u8 m0, u8 m1);
14142 static u32 *wlc_phy_get_ipa_gaintbl_nphy(phy_info_t *pi);
14143
14144 static void wlc_phy_a1_nphy(phy_info_t *pi, u8 core, u32 winsz, u32,
14145                             u32 e);
14146 static u8 wlc_phy_a3_nphy(phy_info_t *pi, u8 start_gain, u8 core);
14147 static void wlc_phy_a2_nphy(phy_info_t *pi, nphy_ipa_txcalgains_t *,
14148                             phy_cal_mode_t, u8);
14149 static void wlc_phy_papd_cal_cleanup_nphy(phy_info_t *pi,
14150                                           nphy_papd_restore_state *state);
14151 static void wlc_phy_papd_cal_setup_nphy(phy_info_t *pi,
14152                                         nphy_papd_restore_state *state, u8);
14153
14154 static void wlc_phy_clip_det_nphy(phy_info_t *pi, u8 write, u16 *vals);
14155
14156 static void wlc_phy_set_rfseq_nphy(phy_info_t *pi, u8 cmd, u8 *evts,
14157                                    u8 *dlys, u8 len);
14158
14159 static u16 wlc_phy_read_lpf_bw_ctl_nphy(phy_info_t *pi, u16 offset);
14160
14161 static void
14162 wlc_phy_rfctrl_override_nphy_rev7(phy_info_t *pi, u16 field, u16 value,
14163                                   u8 core_mask, u8 off,
14164                                   u8 override_id);
14165
14166 static void wlc_phy_rssi_cal_nphy_rev2(phy_info_t *pi, u8 rssi_type);
14167 static void wlc_phy_rssi_cal_nphy_rev3(phy_info_t *pi);
14168
14169 static bool wlc_phy_txpwr_srom_read_nphy(phy_info_t *pi);
14170 static void wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max,
14171                                             u16 *pwr_offset,
14172                                             u8 tmp_max_pwr, u8 rate_start,
14173                                             u8 rate_end);
14174
14175 static void wlc_phy_txpwr_limit_to_tbl_nphy(phy_info_t *pi);
14176 static void wlc_phy_txpwrctrl_coeff_setup_nphy(phy_info_t *pi);
14177 static void wlc_phy_txpwrctrl_idle_tssi_nphy(phy_info_t *pi);
14178 static void wlc_phy_txpwrctrl_pwr_setup_nphy(phy_info_t *pi);
14179
14180 static bool wlc_phy_txpwr_ison_nphy(phy_info_t *pi);
14181 static u8 wlc_phy_txpwr_idx_cur_get_nphy(phy_info_t *pi, u8 core);
14182 static void wlc_phy_txpwr_idx_cur_set_nphy(phy_info_t *pi, u8 idx0,
14183                                            u8 idx1);
14184 static void wlc_phy_a4(phy_info_t *pi, bool full_cal);
14185
14186 static u16 wlc_phy_radio205x_rcal(phy_info_t *pi);
14187
14188 static u16 wlc_phy_radio2057_rccal(phy_info_t *pi);
14189
14190 static u16 wlc_phy_gen_load_samples_nphy(phy_info_t *pi, u32 f_kHz,
14191                                             u16 max_val,
14192                                             u8 dac_test_mode);
14193 static void wlc_phy_loadsampletable_nphy(phy_info_t *pi, cs32 *tone_buf,
14194                                          u16 num_samps);
14195 static void wlc_phy_runsamples_nphy(phy_info_t *pi, u16 n, u16 lps,
14196                                     u16 wait, u8 iq, u8 dac_test_mode,
14197                                     bool modify_bbmult);
14198
14199 bool wlc_phy_bist_check_phy(wlc_phy_t *pih)
14200 {
14201         phy_info_t *pi = (phy_info_t *) pih;
14202         u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14203
14204         if (NREV_GE(pi->pubpi.phy_rev, 16))
14205                 return true;
14206
14207         phybist0 = read_phy_reg(pi, 0x0e);
14208         phybist1 = read_phy_reg(pi, 0x0f);
14209         phybist2 = read_phy_reg(pi, 0xea);
14210         phybist3 = read_phy_reg(pi, 0xeb);
14211         phybist4 = read_phy_reg(pi, 0x156);
14212
14213         if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14214             (phybist3 == 0) && (phybist4 == 0)) {
14215                 return true;
14216         }
14217
14218         return false;
14219 }
14220
14221 static void WLBANDINITFN(wlc_phy_bphy_init_nphy) (phy_info_t *pi)
14222 {
14223         u16 addr, val;
14224
14225         val = 0x1e1f;
14226         for (addr = (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT);
14227              addr <= (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT_END); addr++) {
14228                 write_phy_reg(pi, addr, val);
14229                 if (addr == (NPHY_TO_BPHY_OFF + 0x97))
14230                         val = 0x3e3f;
14231                 else
14232                         val -= 0x0202;
14233         }
14234
14235         if (NORADIO_ENAB(pi->pubpi)) {
14236
14237                 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_PHYCRSTH, 0x3206);
14238
14239                 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_RSSI_TRESH, 0x281e);
14240
14241                 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_LNA_GAIN_RANGE, 0x1a);
14242
14243         } else {
14244
14245                 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_STEP, 0x668);
14246         }
14247 }
14248
14249 void
14250 wlc_phy_table_write_nphy(phy_info_t *pi, u32 id, u32 len, u32 offset,
14251                          u32 width, const void *data)
14252 {
14253         mimophytbl_info_t tbl;
14254
14255         tbl.tbl_id = id;
14256         tbl.tbl_len = len;
14257         tbl.tbl_offset = offset;
14258         tbl.tbl_width = width;
14259         tbl.tbl_ptr = data;
14260         wlc_phy_write_table_nphy(pi, &tbl);
14261 }
14262
14263 void
14264 wlc_phy_table_read_nphy(phy_info_t *pi, u32 id, u32 len, u32 offset,
14265                         u32 width, void *data)
14266 {
14267         mimophytbl_info_t tbl;
14268
14269         tbl.tbl_id = id;
14270         tbl.tbl_len = len;
14271         tbl.tbl_offset = offset;
14272         tbl.tbl_width = width;
14273         tbl.tbl_ptr = data;
14274         wlc_phy_read_table_nphy(pi, &tbl);
14275 }
14276
14277 static void WLBANDINITFN(wlc_phy_static_table_download_nphy) (phy_info_t *pi)
14278 {
14279         uint idx;
14280
14281         if (NREV_GE(pi->pubpi.phy_rev, 16)) {
14282                 for (idx = 0; idx < mimophytbl_info_sz_rev16; idx++)
14283                         wlc_phy_write_table_nphy(pi,
14284                                                  &mimophytbl_info_rev16[idx]);
14285         } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14286                 for (idx = 0; idx < mimophytbl_info_sz_rev7; idx++)
14287                         wlc_phy_write_table_nphy(pi,
14288                                                  &mimophytbl_info_rev7[idx]);
14289         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14290                 for (idx = 0; idx < mimophytbl_info_sz_rev3; idx++)
14291                         wlc_phy_write_table_nphy(pi,
14292                                                  &mimophytbl_info_rev3[idx]);
14293         } else {
14294                 for (idx = 0; idx < mimophytbl_info_sz_rev0; idx++)
14295                         wlc_phy_write_table_nphy(pi,
14296                                                  &mimophytbl_info_rev0[idx]);
14297         }
14298 }
14299
14300 static void WLBANDINITFN(wlc_phy_tbl_init_nphy) (phy_info_t *pi)
14301 {
14302         uint idx = 0;
14303         u8 antswctrllut;
14304
14305         if (pi->phy_init_por)
14306                 wlc_phy_static_table_download_nphy(pi);
14307
14308         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14309
14310                 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14311                     pi->srom_fem2g.antswctrllut : pi->srom_fem5g.antswctrllut;
14312
14313                 switch (antswctrllut) {
14314                 case 0:
14315
14316                         break;
14317
14318                 case 1:
14319
14320                         if (pi->aa2g == 7) {
14321
14322                                 wlc_phy_table_write_nphy(pi,
14323                                                          NPHY_TBL_ID_ANTSWCTRLLUT,
14324                                                          2, 0x21, 8,
14325                                                          &ant_sw_ctrl_tbl_rev8_2o3
14326                                                          [0]);
14327                         } else {
14328                                 wlc_phy_table_write_nphy(pi,
14329                                                          NPHY_TBL_ID_ANTSWCTRLLUT,
14330                                                          2, 0x21, 8,
14331                                                          &ant_sw_ctrl_tbl_rev8
14332                                                          [0]);
14333                         }
14334                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14335                                                  2, 0x25, 8,
14336                                                  &ant_sw_ctrl_tbl_rev8[2]);
14337                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14338                                                  2, 0x29, 8,
14339                                                  &ant_sw_ctrl_tbl_rev8[4]);
14340                         break;
14341
14342                 case 2:
14343
14344                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14345                                                  2, 0x1, 8,
14346                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core0
14347                                                  [0]);
14348                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14349                                                  2, 0x5, 8,
14350                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core0
14351                                                  [2]);
14352                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14353                                                  2, 0x9, 8,
14354                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core0
14355                                                  [4]);
14356
14357                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14358                                                  2, 0x21, 8,
14359                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core1
14360                                                  [0]);
14361                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14362                                                  2, 0x25, 8,
14363                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core1
14364                                                  [2]);
14365                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14366                                                  2, 0x29, 8,
14367                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core1
14368                                                  [4]);
14369                         break;
14370
14371                 default:
14372                         break;
14373                 }
14374
14375         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14376                 for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14377
14378                         if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14379                                 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14380                                     pi->srom_fem2g.antswctrllut : pi->
14381                                     srom_fem5g.antswctrllut;
14382                                 switch (antswctrllut) {
14383                                 case 0:
14384                                         wlc_phy_write_table_nphy(pi,
14385                                                                  &mimophytbl_info_rev3_volatile
14386                                                                  [idx]);
14387                                         break;
14388                                 case 1:
14389                                         wlc_phy_write_table_nphy(pi,
14390                                                                  &mimophytbl_info_rev3_volatile1
14391                                                                  [idx]);
14392                                         break;
14393                                 case 2:
14394                                         wlc_phy_write_table_nphy(pi,
14395                                                                  &mimophytbl_info_rev3_volatile2
14396                                                                  [idx]);
14397                                         break;
14398                                 case 3:
14399                                         wlc_phy_write_table_nphy(pi,
14400                                                                  &mimophytbl_info_rev3_volatile3
14401                                                                  [idx]);
14402                                         break;
14403                                 default:
14404                                         break;
14405                                 }
14406                         } else {
14407                                 wlc_phy_write_table_nphy(pi,
14408                                                          &mimophytbl_info_rev3_volatile
14409                                                          [idx]);
14410                         }
14411                 }
14412         } else {
14413                 for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++) {
14414                         wlc_phy_write_table_nphy(pi,
14415                                                  &mimophytbl_info_rev0_volatile
14416                                                  [idx]);
14417                 }
14418         }
14419 }
14420
14421 static void
14422 wlc_phy_write_txmacreg_nphy(phy_info_t *pi, u16 holdoff, u16 delay)
14423 {
14424         write_phy_reg(pi, 0x77, holdoff);
14425         write_phy_reg(pi, 0xb4, delay);
14426 }
14427
14428 void wlc_phy_nphy_tkip_rifs_war(phy_info_t *pi, u8 rifs)
14429 {
14430         u16 holdoff, delay;
14431
14432         if (rifs) {
14433
14434                 holdoff = 0x10;
14435                 delay = 0x258;
14436         } else {
14437
14438                 holdoff = 0x15;
14439                 delay = 0x320;
14440         }
14441
14442         wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14443
14444         if (pi && pi->sh && (pi->sh->_rifs_phy != rifs)) {
14445                 pi->sh->_rifs_phy = rifs;
14446         }
14447 }
14448
14449 bool wlc_phy_attach_nphy(phy_info_t *pi)
14450 {
14451         uint i;
14452
14453         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6)) {
14454                 pi->phyhang_avoid = true;
14455         }
14456
14457         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14458
14459                 pi->nphy_gband_spurwar_en = true;
14460
14461                 if (pi->sh->boardflags2 & BFL2_SPUR_WAR) {
14462                         pi->nphy_aband_spurwar_en = true;
14463                 }
14464         }
14465         if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14466
14467                 if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR) {
14468                         pi->nphy_gband_spurwar2_en = true;
14469                 }
14470         }
14471
14472         pi->n_preamble_override = AUTO;
14473         if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14474                 pi->n_preamble_override = WLC_N_PREAMBLE_MIXEDMODE;
14475
14476         pi->nphy_txrx_chain = AUTO;
14477         pi->phy_scraminit = AUTO;
14478
14479         pi->nphy_rxcalparams = 0x010100B5;
14480
14481         pi->nphy_perical = PHY_PERICAL_MPHASE;
14482         pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14483         pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14484
14485         pi->nphy_gain_boost = true;
14486         pi->nphy_elna_gain_config = false;
14487         pi->radio_is_on = false;
14488
14489         for (i = 0; i < pi->pubpi.phy_corenum; i++) {
14490                 pi->nphy_txpwrindex[i].index = AUTO;
14491         }
14492
14493         wlc_phy_txpwrctrl_config_nphy(pi);
14494         if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14495                 pi->hwpwrctrl_capable = true;
14496
14497         pi->pi_fptr.init = wlc_phy_init_nphy;
14498         pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14499         pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14500         pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14501
14502         if (!wlc_phy_txpwr_srom_read_nphy(pi))
14503                 return false;
14504
14505         return true;
14506 }
14507
14508 static void wlc_phy_txpwrctrl_config_nphy(phy_info_t *pi)
14509 {
14510
14511         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14512                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14513                 pi->phy_5g_pwrgain = true;
14514                 return;
14515         }
14516
14517         pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14518         pi->phy_5g_pwrgain = false;
14519
14520         if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14521             NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14522                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14523         else if ((pi->sh->sromrev >= 4)
14524                  && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14525                 pi->phy_5g_pwrgain = true;
14526 }
14527
14528 void WLBANDINITFN(wlc_phy_init_nphy) (phy_info_t *pi)
14529 {
14530         u16 val;
14531         u16 clip1_ths[2];
14532         nphy_txgains_t target_gain;
14533         u8 tx_pwr_ctrl_state;
14534         bool do_nphy_cal = false;
14535         uint core;
14536         uint origidx, intr_val;
14537         d11regs_t *regs;
14538         u32 d11_clk_ctl_st;
14539
14540         core = 0;
14541
14542         if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN)) {
14543                 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
14544         }
14545
14546         if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
14547             ((pi->sh->chippkg == BCM4717_PKG_ID) ||
14548              (pi->sh->chippkg == BCM4718_PKG_ID))) {
14549                 if ((pi->sh->boardflags & BFL_EXTLNA) &&
14550                     (CHSPEC_IS2G(pi->radio_chanspec))) {
14551                         ai_corereg(pi->sh->sih, SI_CC_IDX,
14552                                    offsetof(chipcregs_t, chipcontrol), 0x40,
14553                                    0x40);
14554                 }
14555         }
14556
14557         if ((!PHY_IPA(pi)) && (pi->sh->chip == BCM5357_CHIP_ID)) {
14558                 si_pmu_chipcontrol(pi->sh->sih, 1, CCTRL5357_EXTPA,
14559                                    CCTRL5357_EXTPA);
14560         }
14561
14562         if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
14563             CHSPEC_IS40(pi->radio_chanspec)) {
14564
14565                 regs = (d11regs_t *) ai_switch_core(pi->sh->sih, D11_CORE_ID,
14566                                                     &origidx, &intr_val);
14567                 d11_clk_ctl_st = R_REG(&regs->clk_ctl_st);
14568                 AND_REG(&regs->clk_ctl_st,
14569                         ~(CCS_FORCEHT | CCS_HTAREQ));
14570
14571                 W_REG(&regs->clk_ctl_st, d11_clk_ctl_st);
14572
14573                 ai_restore_core(pi->sh->sih, origidx, intr_val);
14574         }
14575
14576         pi->use_int_tx_iqlo_cal_nphy =
14577             (PHY_IPA(pi) ||
14578              (NREV_GE(pi->pubpi.phy_rev, 7) ||
14579               (NREV_GE(pi->pubpi.phy_rev, 5)
14580                && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
14581
14582         pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
14583
14584         pi->nphy_deaf_count = 0;
14585
14586         wlc_phy_tbl_init_nphy(pi);
14587
14588         pi->nphy_crsminpwr_adjusted = false;
14589         pi->nphy_noisevars_adjusted = false;
14590
14591         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14592                 write_phy_reg(pi, 0xe7, 0);
14593                 write_phy_reg(pi, 0xec, 0);
14594                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14595                         write_phy_reg(pi, 0x342, 0);
14596                         write_phy_reg(pi, 0x343, 0);
14597                         write_phy_reg(pi, 0x346, 0);
14598                         write_phy_reg(pi, 0x347, 0);
14599                 }
14600                 write_phy_reg(pi, 0xe5, 0);
14601                 write_phy_reg(pi, 0xe6, 0);
14602         } else {
14603                 write_phy_reg(pi, 0xec, 0);
14604         }
14605
14606         write_phy_reg(pi, 0x91, 0);
14607         write_phy_reg(pi, 0x92, 0);
14608         if (NREV_LT(pi->pubpi.phy_rev, 6)) {
14609                 write_phy_reg(pi, 0x93, 0);
14610                 write_phy_reg(pi, 0x94, 0);
14611         }
14612
14613         and_phy_reg(pi, 0xa1, ~3);
14614
14615         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14616                 write_phy_reg(pi, 0x8f, 0);
14617                 write_phy_reg(pi, 0xa5, 0);
14618         } else {
14619                 write_phy_reg(pi, 0xa5, 0);
14620         }
14621
14622         if (NREV_IS(pi->pubpi.phy_rev, 2))
14623                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
14624         else if (NREV_LT(pi->pubpi.phy_rev, 2))
14625                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
14626
14627         write_phy_reg(pi, 0x203, 32);
14628         write_phy_reg(pi, 0x201, 32);
14629
14630         if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
14631                 write_phy_reg(pi, 0x20d, 160);
14632         else
14633                 write_phy_reg(pi, 0x20d, 184);
14634
14635         write_phy_reg(pi, 0x13a, 200);
14636
14637         write_phy_reg(pi, 0x70, 80);
14638
14639         write_phy_reg(pi, 0x1ff, 48);
14640
14641         if (NREV_LT(pi->pubpi.phy_rev, 8)) {
14642                 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
14643         }
14644
14645         wlc_phy_stf_chain_upd_nphy(pi);
14646
14647         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
14648                 write_phy_reg(pi, 0x180, 0xaa8);
14649                 write_phy_reg(pi, 0x181, 0x9a4);
14650         }
14651
14652         if (PHY_IPA(pi)) {
14653                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
14654
14655                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
14656                                     0x29b, (0x1 << 0), (1) << 0);
14657
14658                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
14659                                     0x29c, (0x1ff << 7),
14660                                     (pi->nphy_papd_epsilon_offset[core]) << 7);
14661
14662                 }
14663
14664                 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
14665         } else {
14666
14667                 if (NREV_GE(pi->pubpi.phy_rev, 5)) {
14668                         wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
14669                 }
14670         }
14671
14672         wlc_phy_workarounds_nphy(pi);
14673
14674         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
14675
14676         val = read_phy_reg(pi, 0x01);
14677         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
14678         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
14679         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
14680
14681         wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
14682
14683         wlc_phy_pa_override_nphy(pi, OFF);
14684         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
14685         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
14686         wlc_phy_pa_override_nphy(pi, ON);
14687
14688         wlc_phy_classifier_nphy(pi, 0, 0);
14689         wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
14690
14691         if (CHSPEC_IS2G(pi->radio_chanspec))
14692                 wlc_phy_bphy_init_nphy(pi);
14693
14694         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
14695         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
14696
14697         wlc_phy_txpwr_fixpower_nphy(pi);
14698
14699         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
14700
14701         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
14702
14703         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14704                 u32 *tx_pwrctrl_tbl = NULL;
14705                 u16 idx;
14706                 s16 pga_gn = 0;
14707                 s16 pad_gn = 0;
14708                 s32 rfpwr_offset = 0;
14709
14710                 if (PHY_IPA(pi)) {
14711                         tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
14712                 } else {
14713                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
14714                                 if NREV_IS
14715                                         (pi->pubpi.phy_rev, 3) {
14716                                         tx_pwrctrl_tbl =
14717                                             nphy_tpc_5GHz_txgain_rev3;
14718                                 } else if NREV_IS
14719                                         (pi->pubpi.phy_rev, 4) {
14720                                         tx_pwrctrl_tbl =
14721                                             (pi->srom_fem5g.extpagain == 3) ?
14722                                             nphy_tpc_5GHz_txgain_HiPwrEPA :
14723                                             nphy_tpc_5GHz_txgain_rev4;
14724                                 } else {
14725                                         tx_pwrctrl_tbl =
14726                                             nphy_tpc_5GHz_txgain_rev5;
14727                                 }
14728
14729                         } else {
14730                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14731                                         if (pi->pubpi.radiorev == 5) {
14732                                                 tx_pwrctrl_tbl =
14733                                                     nphy_tpc_txgain_epa_2057rev5;
14734                                         } else if (pi->pubpi.radiorev == 3) {
14735                                                 tx_pwrctrl_tbl =
14736                                                     nphy_tpc_txgain_epa_2057rev3;
14737                                         }
14738
14739                                 } else {
14740                                         if (NREV_GE(pi->pubpi.phy_rev, 5) &&
14741                                             (pi->srom_fem2g.extpagain == 3)) {
14742                                                 tx_pwrctrl_tbl =
14743                                                     nphy_tpc_txgain_HiPwrEPA;
14744                                         } else {
14745                                                 tx_pwrctrl_tbl =
14746                                                     nphy_tpc_txgain_rev3;
14747                                         }
14748                                 }
14749                         }
14750                 }
14751
14752                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
14753                                          192, 32, tx_pwrctrl_tbl);
14754                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
14755                                          192, 32, tx_pwrctrl_tbl);
14756
14757                 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
14758
14759                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14760
14761                         for (idx = 0; idx < 128; idx++) {
14762                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
14763                                 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
14764
14765                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
14766                                         if ((pi->pubpi.radiorev == 3) ||
14767                                             (pi->pubpi.radiorev == 4) ||
14768                                             (pi->pubpi.radiorev == 6)) {
14769                                                 rfpwr_offset = (s16)
14770                                                     nphy_papd_padgain_dlt_2g_2057rev3n4
14771                                                     [pad_gn];
14772                                         } else if (pi->pubpi.radiorev == 5) {
14773                                                 rfpwr_offset = (s16)
14774                                                     nphy_papd_padgain_dlt_2g_2057rev5
14775                                                     [pad_gn];
14776                                         } else if ((pi->pubpi.radiorev == 7)
14777                                                    || (pi->pubpi.radiorev ==
14778                                                        8)) {
14779                                                 rfpwr_offset = (s16)
14780                                                     nphy_papd_padgain_dlt_2g_2057rev7
14781                                                     [pad_gn];
14782                                         }
14783                                 } else {
14784                                         if ((pi->pubpi.radiorev == 3) ||
14785                                             (pi->pubpi.radiorev == 4) ||
14786                                             (pi->pubpi.radiorev == 6)) {
14787                                                 rfpwr_offset = (s16)
14788                                                     nphy_papd_pgagain_dlt_5g_2057
14789                                                     [pga_gn];
14790                                         } else if ((pi->pubpi.radiorev == 7)
14791                                                    || (pi->pubpi.radiorev ==
14792                                                        8)) {
14793                                                 rfpwr_offset = (s16)
14794                                                     nphy_papd_pgagain_dlt_5g_2057rev7
14795                                                     [pga_gn];
14796                                         }
14797                                 }
14798                                 wlc_phy_table_write_nphy(pi,
14799                                                          NPHY_TBL_ID_CORE1TXPWRCTL,
14800                                                          1, 576 + idx, 32,
14801                                                          &rfpwr_offset);
14802                                 wlc_phy_table_write_nphy(pi,
14803                                                          NPHY_TBL_ID_CORE2TXPWRCTL,
14804                                                          1, 576 + idx, 32,
14805                                                          &rfpwr_offset);
14806                         }
14807                 } else {
14808
14809                         for (idx = 0; idx < 128; idx++) {
14810                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
14811                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
14812                                         rfpwr_offset = (s16)
14813                                             nphy_papd_pga_gain_delta_ipa_2g
14814                                             [pga_gn];
14815                                 } else {
14816                                         rfpwr_offset = (s16)
14817                                             nphy_papd_pga_gain_delta_ipa_5g
14818                                             [pga_gn];
14819                                 }
14820
14821                                 wlc_phy_table_write_nphy(pi,
14822                                                          NPHY_TBL_ID_CORE1TXPWRCTL,
14823                                                          1, 576 + idx, 32,
14824                                                          &rfpwr_offset);
14825                                 wlc_phy_table_write_nphy(pi,
14826                                                          NPHY_TBL_ID_CORE2TXPWRCTL,
14827                                                          1, 576 + idx, 32,
14828                                                          &rfpwr_offset);
14829                         }
14830
14831                 }
14832         } else {
14833
14834                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
14835                                          192, 32, nphy_tpc_txgain);
14836                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
14837                                          192, 32, nphy_tpc_txgain);
14838         }
14839
14840         if (pi->sh->phyrxchain != 0x3) {
14841                 wlc_phy_rxcore_setstate_nphy((wlc_phy_t *) pi,
14842                                              pi->sh->phyrxchain);
14843         }
14844
14845         if (PHY_PERICAL_MPHASE_PENDING(pi)) {
14846                 wlc_phy_cal_perical_mphase_restart(pi);
14847         }
14848
14849         if (!NORADIO_ENAB(pi->pubpi)) {
14850                 bool do_rssi_cal = false;
14851
14852                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14853                         do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
14854                             (pi->nphy_rssical_chanspec_2G == 0) :
14855                             (pi->nphy_rssical_chanspec_5G == 0);
14856
14857                         if (do_rssi_cal) {
14858                                 wlc_phy_rssi_cal_nphy(pi);
14859                         } else {
14860                                 wlc_phy_restore_rssical_nphy(pi);
14861                         }
14862                 } else {
14863                         wlc_phy_rssi_cal_nphy(pi);
14864                 }
14865
14866                 if (!SCAN_RM_IN_PROGRESS(pi)) {
14867                         do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
14868                             (pi->nphy_iqcal_chanspec_2G == 0) :
14869                             (pi->nphy_iqcal_chanspec_5G == 0);
14870                 }
14871
14872                 if (!pi->do_initcal)
14873                         do_nphy_cal = false;
14874
14875                 if (do_nphy_cal) {
14876
14877                         target_gain = wlc_phy_get_tx_gain_nphy(pi);
14878
14879                         if (pi->antsel_type == ANTSEL_2x3)
14880                                 wlc_phy_antsel_init((wlc_phy_t *) pi, true);
14881
14882                         if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
14883                                 wlc_phy_rssi_cal_nphy(pi);
14884
14885                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14886                                         pi->nphy_cal_orig_pwr_idx[0] =
14887                                             pi->nphy_txpwrindex[PHY_CORE_0].
14888                                             index_internal;
14889                                         pi->nphy_cal_orig_pwr_idx[1] =
14890                                             pi->nphy_txpwrindex[PHY_CORE_1].
14891                                             index_internal;
14892
14893                                         wlc_phy_precal_txgain_nphy(pi);
14894                                         target_gain =
14895                                             wlc_phy_get_tx_gain_nphy(pi);
14896                                 }
14897
14898                                 if (wlc_phy_cal_txiqlo_nphy
14899                                     (pi, target_gain, true, false) == 0) {
14900                                         if (wlc_phy_cal_rxiq_nphy
14901                                             (pi, target_gain, 2,
14902                                              false) == 0) {
14903                                                 wlc_phy_savecal_nphy(pi);
14904
14905                                         }
14906                                 }
14907                         } else if (pi->mphase_cal_phase_id ==
14908                                    MPHASE_CAL_STATE_IDLE) {
14909
14910                                 wlc_phy_cal_perical((wlc_phy_t *) pi,
14911                                                     PHY_PERICAL_PHYINIT);
14912                         }
14913                 } else {
14914                         wlc_phy_restorecal_nphy(pi);
14915                 }
14916         }
14917
14918         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
14919
14920         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
14921
14922         wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
14923
14924         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
14925
14926                 write_phy_reg(pi, 0x70, 50);
14927
14928         wlc_phy_txlpfbw_nphy(pi);
14929
14930         wlc_phy_spurwar_nphy(pi);
14931
14932 }
14933
14934 static void wlc_phy_update_mimoconfig_nphy(phy_info_t *pi, s32 preamble)
14935 {
14936         bool gf_preamble = false;
14937         u16 val;
14938
14939         if (preamble == WLC_N_PREAMBLE_GF) {
14940                 gf_preamble = true;
14941         }
14942
14943         val = read_phy_reg(pi, 0xed);
14944
14945         val |= RX_GF_MM_AUTO;
14946         val &= ~RX_GF_OR_MM;
14947         if (gf_preamble)
14948                 val |= RX_GF_OR_MM;
14949
14950         write_phy_reg(pi, 0xed, val);
14951 }
14952
14953 static void wlc_phy_resetcca_nphy(phy_info_t *pi)
14954 {
14955         u16 val;
14956
14957         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
14958
14959         val = read_phy_reg(pi, 0x01);
14960         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
14961         udelay(1);
14962         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
14963
14964         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
14965
14966         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
14967 }
14968
14969 void wlc_phy_pa_override_nphy(phy_info_t *pi, bool en)
14970 {
14971         u16 rfctrlintc_override_val;
14972
14973         if (!en) {
14974
14975                 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
14976                 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
14977
14978                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14979                         rfctrlintc_override_val = 0x1480;
14980                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14981                         rfctrlintc_override_val =
14982                             CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
14983                 } else {
14984                         rfctrlintc_override_val =
14985                             CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
14986                 }
14987
14988                 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
14989                 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
14990         } else {
14991
14992                 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
14993                 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
14994         }
14995
14996 }
14997
14998 void wlc_phy_stf_chain_upd_nphy(phy_info_t *pi)
14999 {
15000
15001         u16 txrx_chain =
15002             (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
15003         bool CoreActv_override = false;
15004
15005         if (pi->nphy_txrx_chain == WLC_N_TXRX_CHAIN0) {
15006                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
15007                 CoreActv_override = true;
15008
15009                 if (NREV_LE(pi->pubpi.phy_rev, 2)) {
15010                         and_phy_reg(pi, 0xa0, ~0x20);
15011                 }
15012         } else if (pi->nphy_txrx_chain == WLC_N_TXRX_CHAIN1) {
15013                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
15014                 CoreActv_override = true;
15015
15016                 if (NREV_LE(pi->pubpi.phy_rev, 2)) {
15017                         or_phy_reg(pi, 0xa0, 0x20);
15018                 }
15019         }
15020
15021         mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
15022
15023         if (CoreActv_override) {
15024
15025                 pi->nphy_perical = PHY_PERICAL_DISABLE;
15026                 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
15027         } else {
15028                 pi->nphy_perical = PHY_PERICAL_MPHASE;
15029                 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
15030         }
15031 }
15032
15033 void wlc_phy_rxcore_setstate_nphy(wlc_phy_t *pih, u8 rxcore_bitmask)
15034 {
15035         u16 regval;
15036         u16 tbl_buf[16];
15037         uint i;
15038         phy_info_t *pi = (phy_info_t *) pih;
15039         u16 tbl_opcode;
15040         bool suspend;
15041
15042         pi->sh->phyrxchain = rxcore_bitmask;
15043
15044         if (!pi->sh->clk)
15045                 return;
15046
15047         suspend =
15048             (0 == (R_REG(&pi->regs->maccontrol) & MCTL_EN_MAC));
15049         if (!suspend)
15050                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
15051
15052         if (pi->phyhang_avoid)
15053                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15054
15055         regval = read_phy_reg(pi, 0xa2);
15056         regval &= ~(0xf << 4);
15057         regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
15058         write_phy_reg(pi, 0xa2, regval);
15059
15060         if ((rxcore_bitmask & 0x3) != 0x3) {
15061
15062                 write_phy_reg(pi, 0x20e, 1);
15063
15064                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15065                         if (pi->rx2tx_biasentry == -1) {
15066                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
15067                                                         ARRAY_SIZE(tbl_buf), 80,
15068                                                         16, tbl_buf);
15069
15070                                 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
15071                                         if (tbl_buf[i] ==
15072                                             NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
15073
15074                                                 pi->rx2tx_biasentry = (u8) i;
15075                                                 tbl_opcode =
15076                                                     NPHY_REV3_RFSEQ_CMD_NOP;
15077                                                 wlc_phy_table_write_nphy(pi,
15078                                                                          NPHY_TBL_ID_RFSEQ,
15079                                                                          1, i,
15080                                                                          16,
15081                                                                          &tbl_opcode);
15082                                                 break;
15083                                         } else if (tbl_buf[i] ==
15084                                                    NPHY_REV3_RFSEQ_CMD_END) {
15085                                                 break;
15086                                         }
15087                                 }
15088                         }
15089                 }
15090         } else {
15091
15092                 write_phy_reg(pi, 0x20e, 30);
15093
15094                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15095                         if (pi->rx2tx_biasentry != -1) {
15096                                 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
15097                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15098                                                          1, pi->rx2tx_biasentry,
15099                                                          16, &tbl_opcode);
15100                                 pi->rx2tx_biasentry = -1;
15101                         }
15102                 }
15103         }
15104
15105         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
15106
15107         if (pi->phyhang_avoid)
15108                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
15109
15110         if (!suspend)
15111                 wlapi_enable_mac(pi->sh->physhim);
15112 }
15113
15114 u8 wlc_phy_rxcore_getstate_nphy(wlc_phy_t *pih)
15115 {
15116         u16 regval, rxen_bits;
15117         phy_info_t *pi = (phy_info_t *) pih;
15118
15119         regval = read_phy_reg(pi, 0xa2);
15120         rxen_bits = (regval >> 4) & 0xf;
15121
15122         return (u8) rxen_bits;
15123 }
15124
15125 bool wlc_phy_n_txpower_ipa_ison(phy_info_t *pi)
15126 {
15127         return PHY_IPA(pi);
15128 }
15129
15130 static void wlc_phy_txpwr_limit_to_tbl_nphy(phy_info_t *pi)
15131 {
15132         u8 idx, idx2, i, delta_ind;
15133
15134         for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++) {
15135                 pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
15136         }
15137
15138         for (i = 0; i < 4; i++) {
15139                 idx2 = 0;
15140
15141                 delta_ind = 0;
15142
15143                 switch (i) {
15144                 case 0:
15145
15146                         if (CHSPEC_IS40(pi->radio_chanspec)
15147                             && NPHY_IS_SROM_REINTERPRET) {
15148                                 idx = TXP_FIRST_MCS_40_SISO;
15149                         } else {
15150                                 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15151                                     TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
15152                                 delta_ind = 1;
15153                         }
15154                         break;
15155
15156                 case 1:
15157
15158                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15159                             TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
15160                         break;
15161
15162                 case 2:
15163
15164                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15165                             TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
15166                         break;
15167
15168                 case 3:
15169
15170                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15171                             TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
15172                         break;
15173                 }
15174
15175                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15176                     pi->tx_power_offset[idx];
15177                 idx = idx + delta_ind;
15178                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15179                     pi->tx_power_offset[idx];
15180                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15181                     pi->tx_power_offset[idx];
15182                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15183                     pi->tx_power_offset[idx++];
15184
15185                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15186                     pi->tx_power_offset[idx++];
15187                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15188                     pi->tx_power_offset[idx];
15189                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15190                     pi->tx_power_offset[idx];
15191                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15192                     pi->tx_power_offset[idx++];
15193
15194                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15195                     pi->tx_power_offset[idx++];
15196                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15197                     pi->tx_power_offset[idx];
15198                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15199                     pi->tx_power_offset[idx];
15200                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15201                     pi->tx_power_offset[idx++];
15202
15203                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15204                     pi->tx_power_offset[idx];
15205                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15206                     pi->tx_power_offset[idx++];
15207                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15208                     pi->tx_power_offset[idx];
15209                 idx = idx + 1 - delta_ind;
15210                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15211                     pi->tx_power_offset[idx];
15212
15213                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15214                     pi->tx_power_offset[idx];
15215                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15216                     pi->tx_power_offset[idx];
15217                 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         }
15222 }
15223
15224 void wlc_phy_cal_init_nphy(phy_info_t *pi)
15225 {
15226 }
15227
15228 static void wlc_phy_war_force_trsw_to_R_cliplo_nphy(phy_info_t *pi, u8 core)
15229 {
15230         if (core == PHY_CORE_0) {
15231                 write_phy_reg(pi, 0x38, 0x4);
15232                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
15233                         write_phy_reg(pi, 0x37, 0x0060);
15234                 } else {
15235                         write_phy_reg(pi, 0x37, 0x1080);
15236                 }
15237         } else if (core == PHY_CORE_1) {
15238                 write_phy_reg(pi, 0x2ae, 0x4);
15239                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
15240                         write_phy_reg(pi, 0x2ad, 0x0060);
15241                 } else {
15242                         write_phy_reg(pi, 0x2ad, 0x1080);
15243                 }
15244         }
15245 }
15246
15247 static void wlc_phy_war_txchain_upd_nphy(phy_info_t *pi, u8 txchain)
15248 {
15249         u8 txchain0, txchain1;
15250
15251         txchain0 = txchain & 0x1;
15252         txchain1 = (txchain & 0x2) >> 1;
15253         if (!txchain0) {
15254                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15255         }
15256
15257         if (!txchain1) {
15258                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15259         }
15260 }
15261
15262 static void wlc_phy_workarounds_nphy(phy_info_t *pi)
15263 {
15264         u8 rfseq_rx2tx_events[] = {
15265                 NPHY_RFSEQ_CMD_NOP,
15266                 NPHY_RFSEQ_CMD_RXG_FBW,
15267                 NPHY_RFSEQ_CMD_TR_SWITCH,
15268                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15269                 NPHY_RFSEQ_CMD_RXPD_TXPD,
15270                 NPHY_RFSEQ_CMD_TX_GAIN,
15271                 NPHY_RFSEQ_CMD_EXT_PA
15272         };
15273         u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
15274         u8 rfseq_tx2rx_events[] = {
15275                 NPHY_RFSEQ_CMD_NOP,
15276                 NPHY_RFSEQ_CMD_EXT_PA,
15277                 NPHY_RFSEQ_CMD_TX_GAIN,
15278                 NPHY_RFSEQ_CMD_RXPD_TXPD,
15279                 NPHY_RFSEQ_CMD_TR_SWITCH,
15280                 NPHY_RFSEQ_CMD_RXG_FBW,
15281                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
15282         };
15283         u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
15284         u8 rfseq_tx2rx_events_rev3[] = {
15285                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
15286                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
15287                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
15288                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
15289                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
15290                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
15291                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
15292                 NPHY_REV3_RFSEQ_CMD_END
15293         };
15294         u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
15295         u8 rfseq_rx2tx_events_rev3[] = {
15296                 NPHY_REV3_RFSEQ_CMD_NOP,
15297                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
15298                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
15299                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
15300                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
15301                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
15302                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
15303                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
15304                 NPHY_REV3_RFSEQ_CMD_END
15305         };
15306         u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
15307
15308         u8 rfseq_rx2tx_events_rev3_ipa[] = {
15309                 NPHY_REV3_RFSEQ_CMD_NOP,
15310                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
15311                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
15312                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
15313                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
15314                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
15315                 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
15316                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
15317                 NPHY_REV3_RFSEQ_CMD_END
15318         };
15319         u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
15320         u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
15321
15322         s16 alpha0, alpha1, alpha2;
15323         s16 beta0, beta1, beta2;
15324         u32 leg_data_weights, ht_data_weights, nss1_data_weights,
15325             stbc_data_weights;
15326         u8 chan_freq_range = 0;
15327         u16 dac_control = 0x0002;
15328         u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
15329         u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
15330         u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
15331         u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
15332         u16 *aux_adc_vmid;
15333         u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
15334         u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
15335         u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
15336         u16 *aux_adc_gain;
15337         u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
15338         u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
15339         s32 min_nvar_val = 0x18d;
15340         s32 min_nvar_offset_6mbps = 20;
15341         u8 pdetrange;
15342         u8 triso;
15343         u16 regval;
15344         u16 afectrl_adc_ctrl1_rev7 = 0x20;
15345         u16 afectrl_adc_ctrl2_rev7 = 0x0;
15346         u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
15347         u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
15348         u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
15349         u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
15350         u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
15351         u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
15352         u16 ipalvlshift_3p3_war_en = 0;
15353         u16 rccal_bcap_val, rccal_scap_val;
15354         u16 rccal_tx20_11b_bcap = 0;
15355         u16 rccal_tx20_11b_scap = 0;
15356         u16 rccal_tx20_11n_bcap = 0;
15357         u16 rccal_tx20_11n_scap = 0;
15358         u16 rccal_tx40_11n_bcap = 0;
15359         u16 rccal_tx40_11n_scap = 0;
15360         u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
15361         u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
15362         u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
15363         u16 tx_lpf_bw_ofdm_20mhz = 0;
15364         u16 tx_lpf_bw_ofdm_40mhz = 0;
15365         u16 tx_lpf_bw_11b = 0;
15366         u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
15367         u16 txgm_idac_bleed = 0;
15368         bool rccal_ovrd = false;
15369         u16 freq;
15370         int coreNum;
15371
15372         if (CHSPEC_IS5G(pi->radio_chanspec)) {
15373                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
15374         } else {
15375                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
15376         }
15377
15378         if (pi->phyhang_avoid)
15379                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15380
15381         if (!ISSIM_ENAB(pi->sh->sih)) {
15382                 or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
15383         }
15384
15385         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15386
15387                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
15388                         mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
15389
15390                         mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
15391                         mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
15392                         mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
15393                         mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
15394                         mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
15395                         mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
15396                         mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
15397                         mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
15398                         mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
15399                         mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
15400                         mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
15401                         mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
15402                         mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
15403                         mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
15404                         mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
15405                         mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
15406                 }
15407
15408                 if (NREV_LE(pi->pubpi.phy_rev, 8)) {
15409                         write_phy_reg(pi, 0x23f, 0x1b0);
15410                         write_phy_reg(pi, 0x240, 0x1b0);
15411                 }
15412
15413                 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
15414                         mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
15415                 }
15416
15417                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
15418                                          &dac_control);
15419                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
15420                                          &dac_control);
15421
15422                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15423                                         1, 0, 32, &leg_data_weights);
15424                 leg_data_weights = leg_data_weights & 0xffffff;
15425                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15426                                          1, 0, 32, &leg_data_weights);
15427
15428                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15429                                          2, 0x15e, 16,
15430                                          rfseq_rx2tx_dacbufpu_rev7);
15431                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
15432                                          rfseq_rx2tx_dacbufpu_rev7);
15433
15434                 if (PHY_IPA(pi)) {
15435                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
15436                                                rfseq_rx2tx_events_rev3_ipa,
15437                                                rfseq_rx2tx_dlys_rev3_ipa,
15438                                                sizeof
15439                                                (rfseq_rx2tx_events_rev3_ipa) /
15440                                                sizeof
15441                                                (rfseq_rx2tx_events_rev3_ipa
15442                                                 [0]));
15443                 }
15444
15445                 mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
15446                 mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
15447
15448                 tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
15449                 tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
15450                 tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
15451
15452                 if (PHY_IPA(pi)) {
15453
15454                         if (((pi->pubpi.radiorev == 5)
15455                              && (CHSPEC_IS40(pi->radio_chanspec) == 1))
15456                             || (pi->pubpi.radiorev == 7)
15457                             || (pi->pubpi.radiorev == 8)) {
15458
15459                                 rccal_bcap_val =
15460                                     read_radio_reg(pi,
15461                                                    RADIO_2057_RCCAL_BCAP_VAL);
15462                                 rccal_scap_val =
15463                                     read_radio_reg(pi,
15464                                                    RADIO_2057_RCCAL_SCAP_VAL);
15465
15466                                 rccal_tx20_11b_bcap = rccal_bcap_val;
15467                                 rccal_tx20_11b_scap = rccal_scap_val;
15468
15469                                 if ((pi->pubpi.radiorev == 5) &&
15470                                     (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
15471
15472                                         rccal_tx20_11n_bcap = rccal_bcap_val;
15473                                         rccal_tx20_11n_scap = rccal_scap_val;
15474                                         rccal_tx40_11n_bcap = 0xc;
15475                                         rccal_tx40_11n_scap = 0xc;
15476
15477                                         rccal_ovrd = true;
15478
15479                                 } else if ((pi->pubpi.radiorev == 7)
15480                                            || (pi->pubpi.radiorev == 8)) {
15481
15482                                         tx_lpf_bw_ofdm_20mhz = 4;
15483                                         tx_lpf_bw_11b = 1;
15484
15485                                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
15486                                                 rccal_tx20_11n_bcap = 0xc;
15487                                                 rccal_tx20_11n_scap = 0xc;
15488                                                 rccal_tx40_11n_bcap = 0xa;
15489                                                 rccal_tx40_11n_scap = 0xa;
15490                                         } else {
15491                                                 rccal_tx20_11n_bcap = 0x14;
15492                                                 rccal_tx20_11n_scap = 0x14;
15493                                                 rccal_tx40_11n_bcap = 0xf;
15494                                                 rccal_tx40_11n_scap = 0xf;
15495                                         }
15496
15497                                         rccal_ovrd = true;
15498                                 }
15499                         }
15500
15501                 } else {
15502
15503                         if (pi->pubpi.radiorev == 5) {
15504
15505                                 tx_lpf_bw_ofdm_20mhz = 1;
15506                                 tx_lpf_bw_ofdm_40mhz = 3;
15507
15508                                 rccal_bcap_val =
15509                                     read_radio_reg(pi,
15510                                                    RADIO_2057_RCCAL_BCAP_VAL);
15511                                 rccal_scap_val =
15512                                     read_radio_reg(pi,
15513                                                    RADIO_2057_RCCAL_SCAP_VAL);
15514
15515                                 rccal_tx20_11b_bcap = rccal_bcap_val;
15516                                 rccal_tx20_11b_scap = rccal_scap_val;
15517
15518                                 rccal_tx20_11n_bcap = 0x13;
15519                                 rccal_tx20_11n_scap = 0x11;
15520                                 rccal_tx40_11n_bcap = 0x13;
15521                                 rccal_tx40_11n_scap = 0x11;
15522
15523                                 rccal_ovrd = true;
15524                         }
15525                 }
15526
15527                 if (rccal_ovrd) {
15528
15529                         rx2tx_lpf_rc_lut_tx20_11b = (rccal_tx20_11b_bcap << 8) |
15530                             (rccal_tx20_11b_scap << 3) | tx_lpf_bw_11b;
15531                         rx2tx_lpf_rc_lut_tx20_11n = (rccal_tx20_11n_bcap << 8) |
15532                             (rccal_tx20_11n_scap << 3) | tx_lpf_bw_ofdm_20mhz;
15533                         rx2tx_lpf_rc_lut_tx40_11n = (rccal_tx40_11n_bcap << 8) |
15534                             (rccal_tx40_11n_scap << 3) | tx_lpf_bw_ofdm_40mhz;
15535
15536                         for (coreNum = 0; coreNum <= 1; coreNum++) {
15537                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15538                                                          1,
15539                                                          0x152 + coreNum * 0x10,
15540                                                          16,
15541                                                          &rx2tx_lpf_rc_lut_tx20_11b);
15542                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15543                                                          1,
15544                                                          0x153 + coreNum * 0x10,
15545                                                          16,
15546                                                          &rx2tx_lpf_rc_lut_tx20_11n);
15547                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15548                                                          1,
15549                                                          0x154 + coreNum * 0x10,
15550                                                          16,
15551                                                          &rx2tx_lpf_rc_lut_tx20_11n);
15552                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15553                                                          1,
15554                                                          0x155 + coreNum * 0x10,
15555                                                          16,
15556                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15557                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15558                                                          1,
15559                                                          0x156 + coreNum * 0x10,
15560                                                          16,
15561                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15562                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15563                                                          1,
15564                                                          0x157 + coreNum * 0x10,
15565                                                          16,
15566                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15567                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15568                                                          1,
15569                                                          0x158 + coreNum * 0x10,
15570                                                          16,
15571                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15572                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15573                                                          1,
15574                                                          0x159 + coreNum * 0x10,
15575                                                          16,
15576                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15577                         }
15578
15579                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4),
15580                                                           1, 0x3, 0,
15581                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
15582                 }
15583
15584                 if (!NORADIO_ENAB(pi->pubpi)) {
15585                         write_phy_reg(pi, 0x32f, 0x3);
15586                 }
15587
15588                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6)) {
15589                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
15590                                                           1, 0x3, 0,
15591                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
15592                 }
15593
15594                 if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
15595                     (pi->pubpi.radiorev == 6)) {
15596                         if ((pi->sh->sromrev >= 8)
15597                             && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
15598                                 ipalvlshift_3p3_war_en = 1;
15599
15600                         if (ipalvlshift_3p3_war_en) {
15601                                 write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG,
15602                                                 0x5);
15603                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL1,
15604                                                 0x30);
15605                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
15606                                 or_radio_reg(pi,
15607                                              RADIO_2057_RXTXBIAS_CONFIG_CORE0,
15608                                              0x1);
15609                                 or_radio_reg(pi,
15610                                              RADIO_2057_RXTXBIAS_CONFIG_CORE1,
15611                                              0x1);
15612
15613                                 ipa2g_mainbias = 0x1f;
15614
15615                                 ipa2g_casconv = 0x6f;
15616
15617                                 ipa2g_biasfilt = 0xaa;
15618                         } else {
15619
15620                                 ipa2g_mainbias = 0x2b;
15621
15622                                 ipa2g_casconv = 0x7f;
15623
15624                                 ipa2g_biasfilt = 0xee;
15625                         }
15626
15627                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
15628                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
15629                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15630                                                          coreNum, IPA2G_IMAIN,
15631                                                          ipa2g_mainbias);
15632                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15633                                                          coreNum, IPA2G_CASCONV,
15634                                                          ipa2g_casconv);
15635                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15636                                                          coreNum,
15637                                                          IPA2G_BIAS_FILTER,
15638                                                          ipa2g_biasfilt);
15639                                 }
15640                         }
15641                 }
15642
15643                 if (PHY_IPA(pi)) {
15644                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
15645                                 if ((pi->pubpi.radiorev == 3)
15646                                     || (pi->pubpi.radiorev == 4)
15647                                     || (pi->pubpi.radiorev == 6)) {
15648
15649                                         txgm_idac_bleed = 0x7f;
15650                                 }
15651
15652                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
15653                                         if (txgm_idac_bleed != 0)
15654                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15655                                                                  CORE, coreNum,
15656                                                                  TXGM_IDAC_BLEED,
15657                                                                  txgm_idac_bleed);
15658                                 }
15659
15660                                 if (pi->pubpi.radiorev == 5) {
15661
15662                                         for (coreNum = 0; coreNum <= 1;
15663                                              coreNum++) {
15664                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15665                                                                  CORE, coreNum,
15666                                                                  IPA2G_CASCONV,
15667                                                                  0x13);
15668                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15669                                                                  CORE, coreNum,
15670                                                                  IPA2G_IMAIN,
15671                                                                  0x1f);
15672                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15673                                                                  CORE, coreNum,
15674                                                                  IPA2G_BIAS_FILTER,
15675                                                                  0xee);
15676                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15677                                                                  CORE, coreNum,
15678                                                                  PAD2G_IDACS,
15679                                                                  0x8a);
15680                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15681                                                                  CORE, coreNum,
15682                                                                  PAD_BIAS_FILTER_BWS,
15683                                                                  0x3e);
15684                                         }
15685
15686                                 } else if ((pi->pubpi.radiorev == 7)
15687                                            || (pi->pubpi.radiorev == 8)) {
15688
15689                                         if (CHSPEC_IS40(pi->radio_chanspec) ==
15690                                             0) {
15691                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15692                                                                  CORE, 0,
15693                                                                  IPA2G_IMAIN,
15694                                                                  0x14);
15695                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15696                                                                  CORE, 1,
15697                                                                  IPA2G_IMAIN,
15698                                                                  0x12);
15699                                         } else {
15700                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15701                                                                  CORE, 0,
15702                                                                  IPA2G_IMAIN,
15703                                                                  0x16);
15704                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15705                                                                  CORE, 1,
15706                                                                  IPA2G_IMAIN,
15707                                                                  0x16);
15708                                         }
15709                                 }
15710
15711                         } else {
15712                                 freq =
15713                                     CHAN5G_FREQ(CHSPEC_CHANNEL
15714                                                 (pi->radio_chanspec));
15715                                 if (((freq >= 5180) && (freq <= 5230))
15716                                     || ((freq >= 5745) && (freq <= 5805))) {
15717                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15718                                                          0, IPA5G_BIAS_FILTER,
15719                                                          0xff);
15720                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15721                                                          1, IPA5G_BIAS_FILTER,
15722                                                          0xff);
15723                                 }
15724                         }
15725                 } else {
15726
15727                         if (pi->pubpi.radiorev != 5) {
15728                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
15729                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15730                                                          coreNum,
15731                                                          TXMIX2G_TUNE_BOOST_PU,
15732                                                          0x61);
15733                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15734                                                          coreNum,
15735                                                          TXGM_IDAC_BLEED, 0x70);
15736                                 }
15737                         }
15738                 }
15739
15740                 if (pi->pubpi.radiorev == 4) {
15741                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15742                                                  0x05, 16,
15743                                                  &afectrl_adc_ctrl1_rev7);
15744                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15745                                                  0x15, 16,
15746                                                  &afectrl_adc_ctrl1_rev7);
15747
15748                         for (coreNum = 0; coreNum <= 1; coreNum++) {
15749                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
15750                                                  AFE_VCM_CAL_MASTER, 0x0);
15751                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
15752                                                  AFE_SET_VCM_I, 0x3f);
15753                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
15754                                                  AFE_SET_VCM_Q, 0x3f);
15755                         }
15756                 } else {
15757                         mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
15758                         mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
15759                         mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
15760                         mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
15761
15762                         mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
15763                         mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
15764                         mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
15765                         mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
15766
15767                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15768                                                  0x05, 16,
15769                                                  &afectrl_adc_ctrl2_rev7);
15770                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15771                                                  0x15, 16,
15772                                                  &afectrl_adc_ctrl2_rev7);
15773
15774                         mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
15775                         mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
15776                         mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
15777                         mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
15778                 }
15779
15780                 write_phy_reg(pi, 0x6a, 0x2);
15781
15782                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
15783                                          &min_nvar_offset_6mbps);
15784
15785                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
15786                                          &rfseq_pktgn_lpf_hpc_rev7);
15787
15788                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
15789                                          &rfseq_pktgn_lpf_h_hpc_rev7);
15790
15791                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
15792                                          &rfseq_htpktgn_lpf_hpc_rev7);
15793
15794                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
15795                                          &rfseq_cckpktgn_lpf_hpc_rev7);
15796
15797                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
15798                                          &rfseq_tx2rx_lpf_h_hpc_rev7);
15799
15800                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
15801                                          &rfseq_rx2tx_lpf_h_hpc_rev7);
15802
15803                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
15804                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15805                                                  32, &min_nvar_val);
15806                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15807                                                  127, 32, &min_nvar_val);
15808                 } else {
15809                         min_nvar_val = noise_var_tbl_rev7[3];
15810                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15811                                                  32, &min_nvar_val);
15812
15813                         min_nvar_val = noise_var_tbl_rev7[127];
15814                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15815                                                  127, 32, &min_nvar_val);
15816                 }
15817
15818                 wlc_phy_workarounds_nphy_gainctrl(pi);
15819
15820                 pdetrange =
15821                     (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
15822                     pdetrange : pi->srom_fem2g.pdetrange;
15823
15824                 if (pdetrange == 0) {
15825                         chan_freq_range =
15826                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
15827                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
15828                                 aux_adc_vmid_rev7_core0[3] = 0x70;
15829                                 aux_adc_vmid_rev7_core1[3] = 0x70;
15830                                 aux_adc_gain_rev7[3] = 2;
15831                         } else {
15832                                 aux_adc_vmid_rev7_core0[3] = 0x80;
15833                                 aux_adc_vmid_rev7_core1[3] = 0x80;
15834                                 aux_adc_gain_rev7[3] = 3;
15835                         }
15836                 } else if (pdetrange == 1) {
15837                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
15838                                 aux_adc_vmid_rev7_core0[3] = 0x7c;
15839                                 aux_adc_vmid_rev7_core1[3] = 0x7c;
15840                                 aux_adc_gain_rev7[3] = 2;
15841                         } else {
15842                                 aux_adc_vmid_rev7_core0[3] = 0x8c;
15843                                 aux_adc_vmid_rev7_core1[3] = 0x8c;
15844                                 aux_adc_gain_rev7[3] = 1;
15845                         }
15846                 } else if (pdetrange == 2) {
15847                         if (pi->pubpi.radioid == BCM2057_ID) {
15848                                 if ((pi->pubpi.radiorev == 5)
15849                                     || (pi->pubpi.radiorev == 7)
15850                                     || (pi->pubpi.radiorev == 8)) {
15851                                         if (chan_freq_range ==
15852                                             WL_CHAN_FREQ_RANGE_2G) {
15853                                                 aux_adc_vmid_rev7_core0[3] =
15854                                                     0x8c;
15855                                                 aux_adc_vmid_rev7_core1[3] =
15856                                                     0x8c;
15857                                                 aux_adc_gain_rev7[3] = 0;
15858                                         } else {
15859                                                 aux_adc_vmid_rev7_core0[3] =
15860                                                     0x96;
15861                                                 aux_adc_vmid_rev7_core1[3] =
15862                                                     0x96;
15863                                                 aux_adc_gain_rev7[3] = 0;
15864                                         }
15865                                 }
15866                         }
15867
15868                 } else if (pdetrange == 3) {
15869                         if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
15870                                 aux_adc_vmid_rev7_core0[3] = 0x89;
15871                                 aux_adc_vmid_rev7_core1[3] = 0x89;
15872                                 aux_adc_gain_rev7[3] = 0;
15873                         }
15874
15875                 } else if (pdetrange == 5) {
15876
15877                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
15878                                 aux_adc_vmid_rev7_core0[3] = 0x80;
15879                                 aux_adc_vmid_rev7_core1[3] = 0x80;
15880                                 aux_adc_gain_rev7[3] = 3;
15881                         } else {
15882                                 aux_adc_vmid_rev7_core0[3] = 0x70;
15883                                 aux_adc_vmid_rev7_core1[3] = 0x70;
15884                                 aux_adc_gain_rev7[3] = 2;
15885                         }
15886                 }
15887
15888                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
15889                                          &aux_adc_vmid_rev7_core0);
15890                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
15891                                          &aux_adc_vmid_rev7_core1);
15892                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
15893                                          &aux_adc_gain_rev7);
15894                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
15895                                          &aux_adc_gain_rev7);
15896
15897         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15898
15899                 write_phy_reg(pi, 0x23f, 0x1f8);
15900                 write_phy_reg(pi, 0x240, 0x1f8);
15901
15902                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15903                                         1, 0, 32, &leg_data_weights);
15904                 leg_data_weights = leg_data_weights & 0xffffff;
15905                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15906                                          1, 0, 32, &leg_data_weights);
15907
15908                 alpha0 = 293;
15909                 alpha1 = 435;
15910                 alpha2 = 261;
15911                 beta0 = 366;
15912                 beta1 = 205;
15913                 beta2 = 32;
15914                 write_phy_reg(pi, 0x145, alpha0);
15915                 write_phy_reg(pi, 0x146, alpha1);
15916                 write_phy_reg(pi, 0x147, alpha2);
15917                 write_phy_reg(pi, 0x148, beta0);
15918                 write_phy_reg(pi, 0x149, beta1);
15919                 write_phy_reg(pi, 0x14a, beta2);
15920
15921                 write_phy_reg(pi, 0x38, 0xC);
15922                 write_phy_reg(pi, 0x2ae, 0xC);
15923
15924                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
15925                                        rfseq_tx2rx_events_rev3,
15926                                        rfseq_tx2rx_dlys_rev3,
15927                                        sizeof(rfseq_tx2rx_events_rev3) /
15928                                        sizeof(rfseq_tx2rx_events_rev3[0]));
15929
15930                 if (PHY_IPA(pi)) {
15931                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
15932                                                rfseq_rx2tx_events_rev3_ipa,
15933                                                rfseq_rx2tx_dlys_rev3_ipa,
15934                                                sizeof
15935                                                (rfseq_rx2tx_events_rev3_ipa) /
15936                                                sizeof
15937                                                (rfseq_rx2tx_events_rev3_ipa
15938                                                 [0]));
15939                 }
15940
15941                 if ((pi->sh->hw_phyrxchain != 0x3) &&
15942                     (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
15943
15944                         if (PHY_IPA(pi)) {
15945                                 rfseq_rx2tx_dlys_rev3[5] = 59;
15946                                 rfseq_rx2tx_dlys_rev3[6] = 1;
15947                                 rfseq_rx2tx_events_rev3[7] =
15948                                     NPHY_REV3_RFSEQ_CMD_END;
15949                         }
15950
15951                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
15952                                                rfseq_rx2tx_events_rev3,
15953                                                rfseq_rx2tx_dlys_rev3,
15954                                                sizeof(rfseq_rx2tx_events_rev3) /
15955                                                sizeof(rfseq_rx2tx_events_rev3
15956                                                       [0]));
15957                 }
15958
15959                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
15960                         write_phy_reg(pi, 0x6a, 0x2);
15961                 } else {
15962                         write_phy_reg(pi, 0x6a, 0x9c40);
15963                 }
15964
15965                 mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
15966
15967                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
15968                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15969                                                  32, &min_nvar_val);
15970                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15971                                                  127, 32, &min_nvar_val);
15972                 } else {
15973                         min_nvar_val = noise_var_tbl_rev3[3];
15974                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15975                                                  32, &min_nvar_val);
15976
15977                         min_nvar_val = noise_var_tbl_rev3[127];
15978                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15979                                                  127, 32, &min_nvar_val);
15980                 }
15981
15982                 wlc_phy_workarounds_nphy_gainctrl(pi);
15983
15984                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
15985                                          &dac_control);
15986                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
15987                                          &dac_control);
15988
15989                 pdetrange =
15990                     (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
15991                     pdetrange : pi->srom_fem2g.pdetrange;
15992
15993                 if (pdetrange == 0) {
15994                         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
15995                                 aux_adc_vmid = aux_adc_vmid_rev4;
15996                                 aux_adc_gain = aux_adc_gain_rev4;
15997                         } else {
15998                                 aux_adc_vmid = aux_adc_vmid_rev3;
15999                                 aux_adc_gain = aux_adc_gain_rev3;
16000                         }
16001                         chan_freq_range =
16002                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
16003                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16004                                 switch (chan_freq_range) {
16005                                 case WL_CHAN_FREQ_RANGE_5GL:
16006                                         aux_adc_vmid[3] = 0x89;
16007                                         aux_adc_gain[3] = 0;
16008                                         break;
16009                                 case WL_CHAN_FREQ_RANGE_5GM:
16010                                         aux_adc_vmid[3] = 0x89;
16011                                         aux_adc_gain[3] = 0;
16012                                         break;
16013                                 case WL_CHAN_FREQ_RANGE_5GH:
16014                                         aux_adc_vmid[3] = 0x89;
16015                                         aux_adc_gain[3] = 0;
16016                                         break;
16017                                 default:
16018                                         break;
16019                                 }
16020                         }
16021                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16022                                                  0x08, 16, aux_adc_vmid);
16023                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16024                                                  0x18, 16, aux_adc_vmid);
16025                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16026                                                  0x0c, 16, aux_adc_gain);
16027                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16028                                                  0x1c, 16, aux_adc_gain);
16029                 } else if (pdetrange == 1) {
16030                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16031                                                  0x08, 16, sk_adc_vmid);
16032                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16033                                                  0x18, 16, sk_adc_vmid);
16034                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16035                                                  0x0c, 16, sk_adc_gain);
16036                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16037                                                  0x1c, 16, sk_adc_gain);
16038                 } else if (pdetrange == 2) {
16039
16040                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16041                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16042
16043                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16044                                 chan_freq_range =
16045                                     wlc_phy_get_chan_freq_range_nphy(pi, 0);
16046                                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16047                                         bcm_adc_vmid[3] = 0x8e;
16048                                         bcm_adc_gain[3] = 0x03;
16049                                 } else {
16050                                         bcm_adc_vmid[3] = 0x94;
16051                                         bcm_adc_gain[3] = 0x03;
16052                                 }
16053                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16054                                 bcm_adc_vmid[3] = 0x84;
16055                                 bcm_adc_gain[3] = 0x02;
16056                         }
16057
16058                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16059                                                  0x08, 16, bcm_adc_vmid);
16060                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16061                                                  0x18, 16, bcm_adc_vmid);
16062                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16063                                                  0x0c, 16, bcm_adc_gain);
16064                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16065                                                  0x1c, 16, bcm_adc_gain);
16066                 } else if (pdetrange == 3) {
16067                         chan_freq_range =
16068                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
16069                         if ((NREV_GE(pi->pubpi.phy_rev, 4))
16070                             && (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16071
16072                                 u16 auxadc_vmid[] = {
16073                                         0xa2, 0xb4, 0xb4, 0x270 };
16074                                 u16 auxadc_gain[] = {
16075                                         0x02, 0x02, 0x02, 0x00 };
16076
16077                                 wlc_phy_table_write_nphy(pi,
16078                                                          NPHY_TBL_ID_AFECTRL, 4,
16079                                                          0x08, 16, auxadc_vmid);
16080                                 wlc_phy_table_write_nphy(pi,
16081                                                          NPHY_TBL_ID_AFECTRL, 4,
16082                                                          0x18, 16, auxadc_vmid);
16083                                 wlc_phy_table_write_nphy(pi,
16084                                                          NPHY_TBL_ID_AFECTRL, 4,
16085                                                          0x0c, 16, auxadc_gain);
16086                                 wlc_phy_table_write_nphy(pi,
16087                                                          NPHY_TBL_ID_AFECTRL, 4,
16088                                                          0x1c, 16, auxadc_gain);
16089                         }
16090                 } else if ((pdetrange == 4) || (pdetrange == 5)) {
16091                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
16092                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
16093                         u16 Vmid[2], Av[2];
16094
16095                         chan_freq_range =
16096                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
16097                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16098                                 Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
16099                                 Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
16100                                 Av[0] = (pdetrange == 4) ? 2 : 0;
16101                                 Av[1] = (pdetrange == 4) ? 2 : 0;
16102                         } else {
16103                                 Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
16104                                 Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
16105                                 Av[0] = (pdetrange == 4) ? 2 : 0;
16106                                 Av[1] = (pdetrange == 4) ? 2 : 0;
16107                         }
16108
16109                         bcm_adc_vmid[3] = Vmid[0];
16110                         bcm_adc_gain[3] = Av[0];
16111                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16112                                                  0x08, 16, bcm_adc_vmid);
16113                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16114                                                  0x0c, 16, bcm_adc_gain);
16115
16116                         bcm_adc_vmid[3] = Vmid[1];
16117                         bcm_adc_gain[3] = Av[1];
16118                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16119                                                  0x18, 16, bcm_adc_vmid);
16120                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16121                                                  0x1c, 16, bcm_adc_gain);
16122                 }
16123
16124                 write_radio_reg(pi,
16125                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0),
16126                                 0x0);
16127                 write_radio_reg(pi,
16128                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1),
16129                                 0x0);
16130
16131                 write_radio_reg(pi,
16132                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0),
16133                                 0x6);
16134                 write_radio_reg(pi,
16135                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1),
16136                                 0x6);
16137
16138                 write_radio_reg(pi,
16139                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0),
16140                                 0x7);
16141                 write_radio_reg(pi,
16142                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1),
16143                                 0x7);
16144
16145                 write_radio_reg(pi,
16146                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0),
16147                                 0x88);
16148                 write_radio_reg(pi,
16149                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1),
16150                                 0x88);
16151
16152                 write_radio_reg(pi,
16153                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0),
16154                                 0x0);
16155                 write_radio_reg(pi,
16156                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1),
16157                                 0x0);
16158
16159                 write_radio_reg(pi,
16160                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0),
16161                                 0x0);
16162                 write_radio_reg(pi,
16163                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1),
16164                                 0x0);
16165
16166                 triso =
16167                     (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16168                     triso : pi->srom_fem2g.triso;
16169                 if (triso == 7) {
16170                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
16171                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
16172                 }
16173
16174                 wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
16175
16176                 if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
16177                      (CHSPEC_IS5G(pi->radio_chanspec))) ||
16178                     (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
16179                       (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
16180                      (CHSPEC_IS2G(pi->radio_chanspec)))) {
16181                         nss1_data_weights = 0x00088888;
16182                         ht_data_weights = 0x00088888;
16183                         stbc_data_weights = 0x00088888;
16184                 } else {
16185                         nss1_data_weights = 0x88888888;
16186                         ht_data_weights = 0x88888888;
16187                         stbc_data_weights = 0x88888888;
16188                 }
16189                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16190                                          1, 1, 32, &nss1_data_weights);
16191                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16192                                          1, 2, 32, &ht_data_weights);
16193                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16194                                          1, 3, 32, &stbc_data_weights);
16195
16196                 if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16197                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
16198                                 write_radio_reg(pi,
16199                                                 RADIO_2056_TX_GMBB_IDAC |
16200                                                 RADIO_2056_TX0, 0x70);
16201                                 write_radio_reg(pi,
16202                                                 RADIO_2056_TX_GMBB_IDAC |
16203                                                 RADIO_2056_TX1, 0x70);
16204                         }
16205                 }
16206
16207                 if (!pi->edcrs_threshold_lock) {
16208                         write_phy_reg(pi, 0x224, 0x3eb);
16209                         write_phy_reg(pi, 0x225, 0x3eb);
16210                         write_phy_reg(pi, 0x226, 0x341);
16211                         write_phy_reg(pi, 0x227, 0x341);
16212                         write_phy_reg(pi, 0x228, 0x42b);
16213                         write_phy_reg(pi, 0x229, 0x42b);
16214                         write_phy_reg(pi, 0x22a, 0x381);
16215                         write_phy_reg(pi, 0x22b, 0x381);
16216                         write_phy_reg(pi, 0x22c, 0x42b);
16217                         write_phy_reg(pi, 0x22d, 0x42b);
16218                         write_phy_reg(pi, 0x22e, 0x381);
16219                         write_phy_reg(pi, 0x22f, 0x381);
16220                 }
16221
16222                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16223
16224                         if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK) {
16225                                 wlapi_bmac_mhf(pi->sh->physhim, MHF4,
16226                                                MHF4_BPHY_TXCORE0,
16227                                                MHF4_BPHY_TXCORE0, WLC_BAND_ALL);
16228                         }
16229                 }
16230         } else {
16231
16232                 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
16233                     (pi->sh->boardtype == 0x8b)) {
16234                         uint i;
16235                         u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
16236                         for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
16237                                 rfseq_rx2tx_dlys[i] = war_dlys[i];
16238                 }
16239
16240                 if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
16241                         and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
16242                         and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
16243                 } else {
16244                         or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
16245                         or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
16246                 }
16247
16248                 regval = 0x000a;
16249                 wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
16250                 wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
16251
16252                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
16253                         regval = 0xcdaa;
16254                         wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
16255                         wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
16256                 }
16257
16258                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16259                         regval = 0x0000;
16260                         wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
16261                         wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
16262
16263                         regval = 0x7aab;
16264                         wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
16265                         wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
16266
16267                         regval = 0x0800;
16268                         wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
16269                         wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
16270                 }
16271
16272                 write_phy_reg(pi, 0xf8, 0x02d8);
16273                 write_phy_reg(pi, 0xf9, 0x0301);
16274                 write_phy_reg(pi, 0xfa, 0x02d8);
16275                 write_phy_reg(pi, 0xfb, 0x0301);
16276
16277                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
16278                                        rfseq_rx2tx_dlys,
16279                                        sizeof(rfseq_rx2tx_events) /
16280                                        sizeof(rfseq_rx2tx_events[0]));
16281
16282                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
16283                                        rfseq_tx2rx_dlys,
16284                                        sizeof(rfseq_tx2rx_events) /
16285                                        sizeof(rfseq_tx2rx_events[0]));
16286
16287                 wlc_phy_workarounds_nphy_gainctrl(pi);
16288
16289                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16290
16291                         if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
16292                                 wlapi_bmac_mhf(pi->sh->physhim, MHF3,
16293                                                MHF3_NPHY_MLADV_WAR,
16294                                                MHF3_NPHY_MLADV_WAR,
16295                                                WLC_BAND_ALL);
16296
16297                 } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16298                         write_phy_reg(pi, 0x1e3, 0x0);
16299                         write_phy_reg(pi, 0x1e4, 0x0);
16300                 }
16301
16302                 if (NREV_LT(pi->pubpi.phy_rev, 2))
16303                         mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
16304
16305                 alpha0 = 293;
16306                 alpha1 = 435;
16307                 alpha2 = 261;
16308                 beta0 = 366;
16309                 beta1 = 205;
16310                 beta2 = 32;
16311                 write_phy_reg(pi, 0x145, alpha0);
16312                 write_phy_reg(pi, 0x146, alpha1);
16313                 write_phy_reg(pi, 0x147, alpha2);
16314                 write_phy_reg(pi, 0x148, beta0);
16315                 write_phy_reg(pi, 0x149, beta1);
16316                 write_phy_reg(pi, 0x14a, beta2);
16317
16318                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
16319                         mod_phy_reg(pi, 0x142, (0xf << 12), 0);
16320
16321                         write_phy_reg(pi, 0x192, 0xb5);
16322                         write_phy_reg(pi, 0x193, 0xa4);
16323                         write_phy_reg(pi, 0x194, 0x0);
16324                 }
16325
16326                 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16327                         mod_phy_reg(pi, 0x221,
16328                                     NPHY_FORCESIG_DECODEGATEDCLKS,
16329                                     NPHY_FORCESIG_DECODEGATEDCLKS);
16330                 }
16331         }
16332
16333         if (pi->phyhang_avoid)
16334                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
16335 }
16336
16337 static void wlc_phy_workarounds_nphy_gainctrl(phy_info_t *pi)
16338 {
16339         u16 w1th, hpf_code, currband;
16340         int ctr;
16341         u8 rfseq_updategainu_events[] = {
16342                 NPHY_RFSEQ_CMD_RX_GAIN,
16343                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16344                 NPHY_RFSEQ_CMD_SET_HPF_BW
16345         };
16346         u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
16347         s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
16348         s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
16349         s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
16350         s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
16351         s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
16352         s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
16353         s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
16354         s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
16355         s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
16356         s8 *lna1_gain_db = NULL;
16357         s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
16358         s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
16359         s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
16360         s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
16361         s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
16362         s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
16363         s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
16364         s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
16365         s8 *lna2_gain_db = NULL;
16366         s8 tiaG_gain_db[] = {
16367                 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
16368         s8 tiaA_gain_db[] = {
16369                 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
16370         s8 tiaA_gain_db_rev4[] = {
16371                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
16372         s8 tiaA_gain_db_rev5[] = {
16373                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
16374         s8 tiaA_gain_db_rev6[] = {
16375                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
16376         s8 *tia_gain_db;
16377         s8 tiaG_gainbits[] = {
16378                 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
16379         s8 tiaA_gainbits[] = {
16380                 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
16381         s8 tiaA_gainbits_rev4[] = {
16382                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
16383         s8 tiaA_gainbits_rev5[] = {
16384                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
16385         s8 tiaA_gainbits_rev6[] = {
16386                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
16387         s8 *tia_gainbits;
16388         s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
16389         s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
16390         u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
16391         u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
16392         u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
16393         u16 rfseqG_init_gain_rev5_elna[] = {
16394                 0x013f, 0x013f, 0x013f, 0x013f };
16395         u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
16396         u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
16397         u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
16398         u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
16399         u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
16400         u16 rfseqA_init_gain_rev4_elna[] = {
16401                 0x314f, 0x314f, 0x314f, 0x314f };
16402         u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
16403         u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
16404         u16 *rfseq_init_gain;
16405         u16 initG_gaincode = 0x627e;
16406         u16 initG_gaincode_rev4 = 0x527e;
16407         u16 initG_gaincode_rev5 = 0x427e;
16408         u16 initG_gaincode_rev5_elna = 0x027e;
16409         u16 initG_gaincode_rev6 = 0x527e;
16410         u16 initG_gaincode_rev6_224B0 = 0x427e;
16411         u16 initG_gaincode_rev6_elna = 0x127e;
16412         u16 initA_gaincode = 0x52de;
16413         u16 initA_gaincode_rev4 = 0x629e;
16414         u16 initA_gaincode_rev4_elna = 0x329e;
16415         u16 initA_gaincode_rev5 = 0x729e;
16416         u16 initA_gaincode_rev6 = 0x729e;
16417         u16 init_gaincode;
16418         u16 clip1hiG_gaincode = 0x107e;
16419         u16 clip1hiG_gaincode_rev4 = 0x007e;
16420         u16 clip1hiG_gaincode_rev5 = 0x1076;
16421         u16 clip1hiG_gaincode_rev6 = 0x007e;
16422         u16 clip1hiA_gaincode = 0x00de;
16423         u16 clip1hiA_gaincode_rev4 = 0x029e;
16424         u16 clip1hiA_gaincode_rev5 = 0x029e;
16425         u16 clip1hiA_gaincode_rev6 = 0x029e;
16426         u16 clip1hi_gaincode;
16427         u16 clip1mdG_gaincode = 0x0066;
16428         u16 clip1mdA_gaincode = 0x00ca;
16429         u16 clip1mdA_gaincode_rev4 = 0x1084;
16430         u16 clip1mdA_gaincode_rev5 = 0x2084;
16431         u16 clip1mdA_gaincode_rev6 = 0x2084;
16432         u16 clip1md_gaincode = 0;
16433         u16 clip1loG_gaincode = 0x0074;
16434         u16 clip1loG_gaincode_rev5[] = {
16435                 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
16436         };
16437         u16 clip1loG_gaincode_rev6[] = {
16438                 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
16439         };
16440         u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
16441         u16 clip1loA_gaincode = 0x00cc;
16442         u16 clip1loA_gaincode_rev4 = 0x0086;
16443         u16 clip1loA_gaincode_rev5 = 0x2086;
16444         u16 clip1loA_gaincode_rev6 = 0x2086;
16445         u16 clip1lo_gaincode;
16446         u8 crsminG_th = 0x18;
16447         u8 crsminG_th_rev5 = 0x18;
16448         u8 crsminG_th_rev6 = 0x18;
16449         u8 crsminA_th = 0x1e;
16450         u8 crsminA_th_rev4 = 0x24;
16451         u8 crsminA_th_rev5 = 0x24;
16452         u8 crsminA_th_rev6 = 0x24;
16453         u8 crsmin_th;
16454         u8 crsminlG_th = 0x18;
16455         u8 crsminlG_th_rev5 = 0x18;
16456         u8 crsminlG_th_rev6 = 0x18;
16457         u8 crsminlA_th = 0x1e;
16458         u8 crsminlA_th_rev4 = 0x24;
16459         u8 crsminlA_th_rev5 = 0x24;
16460         u8 crsminlA_th_rev6 = 0x24;
16461         u8 crsminl_th = 0;
16462         u8 crsminuG_th = 0x18;
16463         u8 crsminuG_th_rev5 = 0x18;
16464         u8 crsminuG_th_rev6 = 0x18;
16465         u8 crsminuA_th = 0x1e;
16466         u8 crsminuA_th_rev4 = 0x24;
16467         u8 crsminuA_th_rev5 = 0x24;
16468         u8 crsminuA_th_rev6 = 0x24;
16469         u8 crsminuA_th_rev6_224B0 = 0x2d;
16470         u8 crsminu_th;
16471         u16 nbclipG_th = 0x20d;
16472         u16 nbclipG_th_rev4 = 0x1a1;
16473         u16 nbclipG_th_rev5 = 0x1d0;
16474         u16 nbclipG_th_rev6 = 0x1d0;
16475         u16 nbclipA_th = 0x1a1;
16476         u16 nbclipA_th_rev4 = 0x107;
16477         u16 nbclipA_th_rev5 = 0x0a9;
16478         u16 nbclipA_th_rev6 = 0x0f0;
16479         u16 nbclip_th = 0;
16480         u8 w1clipG_th = 5;
16481         u8 w1clipG_th_rev5 = 9;
16482         u8 w1clipG_th_rev6 = 5;
16483         u8 w1clipA_th = 25, w1clip_th;
16484         u8 rssi_gain_default = 0x50;
16485         u8 rssiG_gain_rev6_224B0 = 0x50;
16486         u8 rssiA_gain_rev5 = 0x90;
16487         u8 rssiA_gain_rev6 = 0x90;
16488         u8 rssi_gain;
16489         u16 regval[21];
16490         u8 triso;
16491
16492         triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
16493             pi->srom_fem2g.triso;
16494
16495         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
16496                 if (pi->pubpi.radiorev == 5) {
16497
16498                         wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
16499                 } else if (pi->pubpi.radiorev == 7) {
16500                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
16501
16502                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
16503                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
16504
16505                 } else if ((pi->pubpi.radiorev == 3)
16506                            || (pi->pubpi.radiorev == 8)) {
16507                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
16508
16509                         if (pi->pubpi.radiorev == 8) {
16510                                 mod_phy_reg(pi, 0x283,
16511                                             (0xff << 0), (0x44 << 0));
16512                                 mod_phy_reg(pi, 0x280,
16513                                             (0xff << 0), (0x44 << 0));
16514                         }
16515                 } else {
16516                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
16517                 }
16518         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
16519
16520                 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
16521
16522                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16523                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16524
16525                 currband =
16526                     read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
16527                 if (currband == 0) {
16528                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16529                                 if (pi->pubpi.radiorev == 11) {
16530                                         lna1_gain_db = lna1G_gain_db_rev6_224B0;
16531                                         lna2_gain_db = lna2G_gain_db_rev6_224B0;
16532                                         rfseq_init_gain =
16533                                             rfseqG_init_gain_rev6_224B0;
16534                                         init_gaincode =
16535                                             initG_gaincode_rev6_224B0;
16536                                         clip1hi_gaincode =
16537                                             clip1hiG_gaincode_rev6;
16538                                         clip1lo_gaincode =
16539                                             clip1loG_gaincode_rev6_224B0;
16540                                         nbclip_th = nbclipG_th_rev6;
16541                                         w1clip_th = w1clipG_th_rev6;
16542                                         crsmin_th = crsminG_th_rev6;
16543                                         crsminl_th = crsminlG_th_rev6;
16544                                         crsminu_th = crsminuG_th_rev6;
16545                                         rssi_gain = rssiG_gain_rev6_224B0;
16546                                 } else {
16547                                         lna1_gain_db = lna1G_gain_db_rev6;
16548                                         lna2_gain_db = lna2G_gain_db_rev6;
16549                                         if (pi->sh->boardflags & BFL_EXTLNA) {
16550
16551                                                 rfseq_init_gain =
16552                                                     rfseqG_init_gain_rev6_elna;
16553                                                 init_gaincode =
16554                                                     initG_gaincode_rev6_elna;
16555                                         } else {
16556                                                 rfseq_init_gain =
16557                                                     rfseqG_init_gain_rev6;
16558                                                 init_gaincode =
16559                                                     initG_gaincode_rev6;
16560                                         }
16561                                         clip1hi_gaincode =
16562                                             clip1hiG_gaincode_rev6;
16563                                         switch (triso) {
16564                                         case 0:
16565                                                 clip1lo_gaincode =
16566                                                     clip1loG_gaincode_rev6[0];
16567                                                 break;
16568                                         case 1:
16569                                                 clip1lo_gaincode =
16570                                                     clip1loG_gaincode_rev6[1];
16571                                                 break;
16572                                         case 2:
16573                                                 clip1lo_gaincode =
16574                                                     clip1loG_gaincode_rev6[2];
16575                                                 break;
16576                                         case 3:
16577                                         default:
16578
16579                                                 clip1lo_gaincode =
16580                                                     clip1loG_gaincode_rev6[3];
16581                                                 break;
16582                                         case 4:
16583                                                 clip1lo_gaincode =
16584                                                     clip1loG_gaincode_rev6[4];
16585                                                 break;
16586                                         case 5:
16587                                                 clip1lo_gaincode =
16588                                                     clip1loG_gaincode_rev6[5];
16589                                                 break;
16590                                         case 6:
16591                                                 clip1lo_gaincode =
16592                                                     clip1loG_gaincode_rev6[6];
16593                                                 break;
16594                                         case 7:
16595                                                 clip1lo_gaincode =
16596                                                     clip1loG_gaincode_rev6[7];
16597                                                 break;
16598                                         }
16599                                         nbclip_th = nbclipG_th_rev6;
16600                                         w1clip_th = w1clipG_th_rev6;
16601                                         crsmin_th = crsminG_th_rev6;
16602                                         crsminl_th = crsminlG_th_rev6;
16603                                         crsminu_th = crsminuG_th_rev6;
16604                                         rssi_gain = rssi_gain_default;
16605                                 }
16606                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16607                                 lna1_gain_db = lna1G_gain_db_rev5;
16608                                 lna2_gain_db = lna2G_gain_db_rev5;
16609                                 if (pi->sh->boardflags & BFL_EXTLNA) {
16610
16611                                         rfseq_init_gain =
16612                                             rfseqG_init_gain_rev5_elna;
16613                                         init_gaincode =
16614                                             initG_gaincode_rev5_elna;
16615                                 } else {
16616                                         rfseq_init_gain = rfseqG_init_gain_rev5;
16617                                         init_gaincode = initG_gaincode_rev5;
16618                                 }
16619                                 clip1hi_gaincode = clip1hiG_gaincode_rev5;
16620                                 switch (triso) {
16621                                 case 0:
16622                                         clip1lo_gaincode =
16623                                             clip1loG_gaincode_rev5[0];
16624                                         break;
16625                                 case 1:
16626                                         clip1lo_gaincode =
16627                                             clip1loG_gaincode_rev5[1];
16628                                         break;
16629                                 case 2:
16630                                         clip1lo_gaincode =
16631                                             clip1loG_gaincode_rev5[2];
16632                                         break;
16633                                 case 3:
16634
16635                                         clip1lo_gaincode =
16636                                             clip1loG_gaincode_rev5[3];
16637                                         break;
16638                                 case 4:
16639                                         clip1lo_gaincode =
16640                                             clip1loG_gaincode_rev5[4];
16641                                         break;
16642                                 case 5:
16643                                         clip1lo_gaincode =
16644                                             clip1loG_gaincode_rev5[5];
16645                                         break;
16646                                 case 6:
16647                                         clip1lo_gaincode =
16648                                             clip1loG_gaincode_rev5[6];
16649                                         break;
16650                                 case 7:
16651                                         clip1lo_gaincode =
16652                                             clip1loG_gaincode_rev5[7];
16653                                         break;
16654                                 default:
16655                                         clip1lo_gaincode =
16656                                             clip1loG_gaincode_rev5[3];
16657                                         break;
16658                                 }
16659                                 nbclip_th = nbclipG_th_rev5;
16660                                 w1clip_th = w1clipG_th_rev5;
16661                                 crsmin_th = crsminG_th_rev5;
16662                                 crsminl_th = crsminlG_th_rev5;
16663                                 crsminu_th = crsminuG_th_rev5;
16664                                 rssi_gain = rssi_gain_default;
16665                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16666                                 lna1_gain_db = lna1G_gain_db_rev4;
16667                                 lna2_gain_db = lna2G_gain_db;
16668                                 rfseq_init_gain = rfseqG_init_gain_rev4;
16669                                 init_gaincode = initG_gaincode_rev4;
16670                                 clip1hi_gaincode = clip1hiG_gaincode_rev4;
16671                                 clip1lo_gaincode = clip1loG_gaincode;
16672                                 nbclip_th = nbclipG_th_rev4;
16673                                 w1clip_th = w1clipG_th;
16674                                 crsmin_th = crsminG_th;
16675                                 crsminl_th = crsminlG_th;
16676                                 crsminu_th = crsminuG_th;
16677                                 rssi_gain = rssi_gain_default;
16678                         } else {
16679                                 lna1_gain_db = lna1G_gain_db;
16680                                 lna2_gain_db = lna2G_gain_db;
16681                                 rfseq_init_gain = rfseqG_init_gain;
16682                                 init_gaincode = initG_gaincode;
16683                                 clip1hi_gaincode = clip1hiG_gaincode;
16684                                 clip1lo_gaincode = clip1loG_gaincode;
16685                                 nbclip_th = nbclipG_th;
16686                                 w1clip_th = w1clipG_th;
16687                                 crsmin_th = crsminG_th;
16688                                 crsminl_th = crsminlG_th;
16689                                 crsminu_th = crsminuG_th;
16690                                 rssi_gain = rssi_gain_default;
16691                         }
16692                         tia_gain_db = tiaG_gain_db;
16693                         tia_gainbits = tiaG_gainbits;
16694                         clip1md_gaincode = clip1mdG_gaincode;
16695                 } else {
16696                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16697                                 lna1_gain_db = lna1A_gain_db_rev6;
16698                                 lna2_gain_db = lna2A_gain_db_rev6;
16699                                 tia_gain_db = tiaA_gain_db_rev6;
16700                                 tia_gainbits = tiaA_gainbits_rev6;
16701                                 rfseq_init_gain = rfseqA_init_gain_rev6;
16702                                 init_gaincode = initA_gaincode_rev6;
16703                                 clip1hi_gaincode = clip1hiA_gaincode_rev6;
16704                                 clip1md_gaincode = clip1mdA_gaincode_rev6;
16705                                 clip1lo_gaincode = clip1loA_gaincode_rev6;
16706                                 crsmin_th = crsminA_th_rev6;
16707                                 crsminl_th = crsminlA_th_rev6;
16708                                 if ((pi->pubpi.radiorev == 11) &&
16709                                     (CHSPEC_IS40(pi->radio_chanspec) == 0)) {
16710                                         crsminu_th = crsminuA_th_rev6_224B0;
16711                                 } else {
16712                                         crsminu_th = crsminuA_th_rev6;
16713                                 }
16714                                 nbclip_th = nbclipA_th_rev6;
16715                                 rssi_gain = rssiA_gain_rev6;
16716                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16717                                 lna1_gain_db = lna1A_gain_db_rev5;
16718                                 lna2_gain_db = lna2A_gain_db_rev5;
16719                                 tia_gain_db = tiaA_gain_db_rev5;
16720                                 tia_gainbits = tiaA_gainbits_rev5;
16721                                 rfseq_init_gain = rfseqA_init_gain_rev5;
16722                                 init_gaincode = initA_gaincode_rev5;
16723                                 clip1hi_gaincode = clip1hiA_gaincode_rev5;
16724                                 clip1md_gaincode = clip1mdA_gaincode_rev5;
16725                                 clip1lo_gaincode = clip1loA_gaincode_rev5;
16726                                 crsmin_th = crsminA_th_rev5;
16727                                 crsminl_th = crsminlA_th_rev5;
16728                                 crsminu_th = crsminuA_th_rev5;
16729                                 nbclip_th = nbclipA_th_rev5;
16730                                 rssi_gain = rssiA_gain_rev5;
16731                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16732                                 lna1_gain_db = lna1A_gain_db_rev4;
16733                                 lna2_gain_db = lna2A_gain_db_rev4;
16734                                 tia_gain_db = tiaA_gain_db_rev4;
16735                                 tia_gainbits = tiaA_gainbits_rev4;
16736                                 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
16737
16738                                         rfseq_init_gain =
16739                                             rfseqA_init_gain_rev4_elna;
16740                                         init_gaincode =
16741                                             initA_gaincode_rev4_elna;
16742                                 } else {
16743                                         rfseq_init_gain = rfseqA_init_gain_rev4;
16744                                         init_gaincode = initA_gaincode_rev4;
16745                                 }
16746                                 clip1hi_gaincode = clip1hiA_gaincode_rev4;
16747                                 clip1md_gaincode = clip1mdA_gaincode_rev4;
16748                                 clip1lo_gaincode = clip1loA_gaincode_rev4;
16749                                 crsmin_th = crsminA_th_rev4;
16750                                 crsminl_th = crsminlA_th_rev4;
16751                                 crsminu_th = crsminuA_th_rev4;
16752                                 nbclip_th = nbclipA_th_rev4;
16753                                 rssi_gain = rssi_gain_default;
16754                         } else {
16755                                 lna1_gain_db = lna1A_gain_db;
16756                                 lna2_gain_db = lna2A_gain_db;
16757                                 tia_gain_db = tiaA_gain_db;
16758                                 tia_gainbits = tiaA_gainbits;
16759                                 rfseq_init_gain = rfseqA_init_gain;
16760                                 init_gaincode = initA_gaincode;
16761                                 clip1hi_gaincode = clip1hiA_gaincode;
16762                                 clip1md_gaincode = clip1mdA_gaincode;
16763                                 clip1lo_gaincode = clip1loA_gaincode;
16764                                 crsmin_th = crsminA_th;
16765                                 crsminl_th = crsminlA_th;
16766                                 crsminu_th = crsminuA_th;
16767                                 nbclip_th = nbclipA_th;
16768                                 rssi_gain = rssi_gain_default;
16769                         }
16770                         w1clip_th = w1clipA_th;
16771                 }
16772
16773                 write_radio_reg(pi,
16774                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16775                                  RADIO_2056_RX0), 0x17);
16776                 write_radio_reg(pi,
16777                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16778                                  RADIO_2056_RX1), 0x17);
16779
16780                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
16781                                 0xf0);
16782                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
16783                                 0xf0);
16784
16785                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
16786                                 0x0);
16787                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
16788                                 0x0);
16789
16790                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
16791                                 rssi_gain);
16792                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
16793                                 rssi_gain);
16794
16795                 write_radio_reg(pi,
16796                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16797                                  RADIO_2056_RX0), 0x17);
16798                 write_radio_reg(pi,
16799                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16800                                  RADIO_2056_RX1), 0x17);
16801
16802                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
16803                                 0xFF);
16804                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
16805                                 0xFF);
16806
16807                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
16808                                          8, lna1_gain_db);
16809                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
16810                                          8, lna1_gain_db);
16811
16812                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
16813                                          8, lna2_gain_db);
16814                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
16815                                          8, lna2_gain_db);
16816
16817                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
16818                                          8, tia_gain_db);
16819                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
16820                                          8, tia_gain_db);
16821
16822                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
16823                                          8, tia_gainbits);
16824                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
16825                                          8, tia_gainbits);
16826
16827                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
16828                                          8, &lpf_gain_db);
16829                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
16830                                          8, &lpf_gain_db);
16831                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
16832                                          8, &lpf_gainbits);
16833                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
16834                                          8, &lpf_gainbits);
16835
16836                 write_phy_reg(pi, 0x20, init_gaincode);
16837                 write_phy_reg(pi, 0x2a7, init_gaincode);
16838
16839                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16840                                          pi->pubpi.phy_corenum, 0x106, 16,
16841                                          rfseq_init_gain);
16842
16843                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
16844                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
16845
16846                 write_phy_reg(pi, 0x24, clip1md_gaincode);
16847                 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
16848
16849                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
16850                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
16851
16852                 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
16853                 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
16854                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
16855
16856                 write_phy_reg(pi, 0x2b, nbclip_th);
16857                 write_phy_reg(pi, 0x41, nbclip_th);
16858
16859                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
16860                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
16861
16862                 write_phy_reg(pi, 0x150, 0x809c);
16863
16864         } else {
16865
16866                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16867                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16868
16869                 write_phy_reg(pi, 0x2b, 0x84);
16870                 write_phy_reg(pi, 0x41, 0x84);
16871
16872                 if (CHSPEC_IS20(pi->radio_chanspec)) {
16873                         write_phy_reg(pi, 0x6b, 0x2b);
16874                         write_phy_reg(pi, 0x6c, 0x2b);
16875                         write_phy_reg(pi, 0x6d, 0x9);
16876                         write_phy_reg(pi, 0x6e, 0x9);
16877                 }
16878
16879                 w1th = NPHY_RSSICAL_W1_TARGET - 4;
16880                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
16881                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
16882
16883                 if (CHSPEC_IS20(pi->radio_chanspec)) {
16884                         mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
16885                         mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
16886
16887                         mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
16888                         mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16889                 }
16890
16891                 write_phy_reg(pi, 0x150, 0x809c);
16892
16893                 if (pi->nphy_gain_boost)
16894                         if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16895                             (CHSPEC_IS40(pi->radio_chanspec)))
16896                                 hpf_code = 4;
16897                         else
16898                                 hpf_code = 5;
16899                 else if (CHSPEC_IS40(pi->radio_chanspec))
16900                         hpf_code = 6;
16901                 else
16902                         hpf_code = 7;
16903
16904                 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16905                 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16906
16907                 for (ctr = 0; ctr < 4; ctr++) {
16908                         regval[ctr] = (hpf_code << 8) | 0x7c;
16909                 }
16910                 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16911
16912                 wlc_phy_adjust_lnagaintbl_nphy(pi);
16913
16914                 if (pi->nphy_elna_gain_config) {
16915                         regval[0] = 0;
16916                         regval[1] = 1;
16917                         regval[2] = 1;
16918                         regval[3] = 1;
16919                         wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16920                         wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16921
16922                         for (ctr = 0; ctr < 4; ctr++) {
16923                                 regval[ctr] = (hpf_code << 8) | 0x74;
16924                         }
16925                         wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16926                 }
16927
16928                 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16929                         for (ctr = 0; ctr < 21; ctr++) {
16930                                 regval[ctr] = 3 * ctr;
16931                         }
16932                         wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16933                         wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16934
16935                         for (ctr = 0; ctr < 21; ctr++) {
16936                                 regval[ctr] = (u16) ctr;
16937                         }
16938                         wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16939                         wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16940                 }
16941
16942                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16943                                        rfseq_updategainu_events,
16944                                        rfseq_updategainu_dlys,
16945                                        sizeof(rfseq_updategainu_events) /
16946                                        sizeof(rfseq_updategainu_events[0]));
16947
16948                 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16949
16950                 if (CHSPEC_IS2G(pi->radio_chanspec))
16951                         mod_phy_reg(pi,
16952                                     (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16953                                     0x7f, 0x4);
16954         }
16955 }
16956
16957 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(phy_info_t *pi)
16958 {
16959         s8 lna1_gain_db[] = { 8, 13, 17, 22 };
16960         s8 lna2_gain_db[] = { -2, 7, 11, 15 };
16961         s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
16962         s8 tia_gainbits[] = {
16963                 0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
16964
16965         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16966         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16967
16968         mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
16969
16970         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
16971         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
16972
16973         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
16974                                  lna1_gain_db);
16975         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
16976                                  lna1_gain_db);
16977
16978         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
16979                                  lna2_gain_db);
16980         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
16981                                  lna2_gain_db);
16982
16983         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
16984                                  tia_gain_db);
16985         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
16986                                  tia_gain_db);
16987
16988         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
16989                                  tia_gainbits);
16990         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
16991                                  tia_gainbits);
16992
16993         write_phy_reg(pi, 0x37, 0x74);
16994         write_phy_reg(pi, 0x2ad, 0x74);
16995         write_phy_reg(pi, 0x38, 0x18);
16996         write_phy_reg(pi, 0x2ae, 0x18);
16997
16998         write_phy_reg(pi, 0x2b, 0xe8);
16999         write_phy_reg(pi, 0x41, 0xe8);
17000
17001         if (CHSPEC_IS20(pi->radio_chanspec)) {
17002
17003                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
17004                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
17005         } else {
17006
17007                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
17008                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
17009         }
17010 }
17011
17012 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(phy_info_t *pi)
17013 {
17014         u16 currband;
17015         s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
17016         s8 *lna1_gain_db = NULL;
17017         s8 *lna1_gain_db_2 = NULL;
17018         s8 *lna2_gain_db = NULL;
17019         s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
17020         s8 *tia_gain_db;
17021         s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
17022         s8 *tia_gainbits;
17023         u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
17024         u16 *rfseq_init_gain;
17025         u16 init_gaincode;
17026         u16 clip1hi_gaincode;
17027         u16 clip1md_gaincode = 0;
17028         u16 clip1md_gaincode_B;
17029         u16 clip1lo_gaincode;
17030         u16 clip1lo_gaincode_B;
17031         u8 crsminl_th = 0;
17032         u8 crsminu_th;
17033         u16 nbclip_th = 0;
17034         u8 w1clip_th;
17035         u16 freq;
17036         s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
17037         u8 chg_nbclip_th = 0;
17038
17039         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
17040         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
17041
17042         currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
17043         if (currband == 0) {
17044
17045                 lna1_gain_db = lna1G_gain_db_rev7;
17046
17047                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
17048                                          lna1_gain_db);
17049                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
17050                                          lna1_gain_db);
17051
17052                 mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
17053
17054                 if (CHSPEC_IS40(pi->radio_chanspec)) {
17055                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
17056                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
17057                 }
17058
17059                 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
17060
17061                 if (CHSPEC_IS20(pi->radio_chanspec)) {
17062                         mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
17063                         mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
17064                 }
17065         } else {
17066
17067                 init_gaincode = 0x9e;
17068                 clip1hi_gaincode = 0x9e;
17069                 clip1md_gaincode_B = 0x24;
17070                 clip1lo_gaincode = 0x8a;
17071                 clip1lo_gaincode_B = 8;
17072                 rfseq_init_gain = rfseqA_init_gain_rev7;
17073
17074                 tia_gain_db = tiaA_gain_db_rev7;
17075                 tia_gainbits = tiaA_gainbits_rev7;
17076
17077                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
17078                 if (CHSPEC_IS20(pi->radio_chanspec)) {
17079
17080                         w1clip_th = 25;
17081                         clip1md_gaincode = 0x82;
17082
17083                         if ((freq <= 5080) || (freq == 5825)) {
17084
17085                                 s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
17086                                 s8 lna1A_gain_db_2_rev7[] = {
17087                                         11, 17, 22, 25 };
17088                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
17089
17090                                 crsminu_th = 0x3e;
17091                                 lna1_gain_db = lna1A_gain_db_rev7;
17092                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
17093                                 lna2_gain_db = lna2A_gain_db_rev7;
17094                         } else if ((freq >= 5500) && (freq <= 5700)) {
17095
17096                                 s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
17097                                 s8 lna1A_gain_db_2_rev7[] = {
17098                                         12, 18, 22, 26 };
17099                                 s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
17100
17101                                 crsminu_th = 0x45;
17102                                 clip1md_gaincode_B = 0x14;
17103                                 nbclip_th = 0xff;
17104                                 chg_nbclip_th = 1;
17105                                 lna1_gain_db = lna1A_gain_db_rev7;
17106                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
17107                                 lna2_gain_db = lna2A_gain_db_rev7;
17108                         } else {
17109
17110                                 s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
17111                                 s8 lna1A_gain_db_2_rev7[] = {
17112                                         12, 18, 22, 26 };
17113                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
17114
17115                                 crsminu_th = 0x41;
17116                                 lna1_gain_db = lna1A_gain_db_rev7;
17117                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
17118                                 lna2_gain_db = lna2A_gain_db_rev7;
17119                         }
17120
17121                         if (freq <= 4920) {
17122                                 nvar_baseline_offset0 = 5;
17123                                 nvar_baseline_offset1 = 5;
17124                         } else if ((freq > 4920) && (freq <= 5320)) {
17125                                 nvar_baseline_offset0 = 3;
17126                                 nvar_baseline_offset1 = 5;
17127                         } else if ((freq > 5320) && (freq <= 5700)) {
17128                                 nvar_baseline_offset0 = 3;
17129                                 nvar_baseline_offset1 = 2;
17130                         } else {
17131                                 nvar_baseline_offset0 = 4;
17132                                 nvar_baseline_offset1 = 0;
17133                         }
17134                 } else {
17135
17136                         crsminu_th = 0x3a;
17137                         crsminl_th = 0x3a;
17138                         w1clip_th = 20;
17139
17140                         if ((freq >= 4920) && (freq <= 5320)) {
17141                                 nvar_baseline_offset0 = 4;
17142                                 nvar_baseline_offset1 = 5;
17143                         } else if ((freq > 5320) && (freq <= 5550)) {
17144                                 nvar_baseline_offset0 = 4;
17145                                 nvar_baseline_offset1 = 2;
17146                         } else {
17147                                 nvar_baseline_offset0 = 5;
17148                                 nvar_baseline_offset1 = 3;
17149                         }
17150                 }
17151
17152                 write_phy_reg(pi, 0x20, init_gaincode);
17153                 write_phy_reg(pi, 0x2a7, init_gaincode);
17154
17155                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
17156                                          pi->pubpi.phy_corenum, 0x106, 16,
17157                                          rfseq_init_gain);
17158
17159                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
17160                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
17161
17162                 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
17163                 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
17164
17165                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
17166                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
17167                 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
17168                 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
17169
17170                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
17171                                          tia_gain_db);
17172                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
17173                                          tia_gain_db);
17174
17175                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
17176                                          tia_gainbits);
17177                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
17178                                          tia_gainbits);
17179
17180                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
17181
17182                 if (chg_nbclip_th == 1) {
17183                         write_phy_reg(pi, 0x2b, nbclip_th);
17184                         write_phy_reg(pi, 0x41, nbclip_th);
17185                 }
17186
17187                 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
17188                 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
17189
17190                 mod_phy_reg(pi, 0x2e4,
17191                             (0x3f << 0), (nvar_baseline_offset0 << 0));
17192
17193                 mod_phy_reg(pi, 0x2e4,
17194                             (0x3f << 6), (nvar_baseline_offset1 << 6));
17195
17196                 if (CHSPEC_IS20(pi->radio_chanspec)) {
17197
17198                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
17199                                                  lna1_gain_db);
17200                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
17201                                                  lna1_gain_db_2);
17202
17203                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
17204                                                  8, lna2_gain_db);
17205                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
17206                                                  8, lna2_gain_db);
17207
17208                         write_phy_reg(pi, 0x24, clip1md_gaincode);
17209                         write_phy_reg(pi, 0x2ab, clip1md_gaincode);
17210                 } else {
17211                         mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
17212                 }
17213
17214         }
17215
17216 }
17217
17218 static void wlc_phy_adjust_lnagaintbl_nphy(phy_info_t *pi)
17219 {
17220         uint core;
17221         int ctr;
17222         s16 gain_delta[2];
17223         u8 curr_channel;
17224         u16 minmax_gain[2];
17225         u16 regval[4];
17226
17227         if (pi->phyhang_avoid)
17228                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17229
17230         if (pi->nphy_gain_boost) {
17231                 if ((CHSPEC_IS2G(pi->radio_chanspec))) {
17232
17233                         gain_delta[0] = 6;
17234                         gain_delta[1] = 6;
17235                 } else {
17236
17237                         curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
17238                         gain_delta[0] =
17239                             (s16)
17240                             PHY_HW_ROUND(((nphy_lnagain_est0[0] *
17241                                            curr_channel) +
17242                                           nphy_lnagain_est0[1]), 13);
17243                         gain_delta[1] =
17244                             (s16)
17245                             PHY_HW_ROUND(((nphy_lnagain_est1[0] *
17246                                            curr_channel) +
17247                                           nphy_lnagain_est1[1]), 13);
17248                 }
17249         } else {
17250
17251                 gain_delta[0] = 0;
17252                 gain_delta[1] = 0;
17253         }
17254
17255         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17256                 if (pi->nphy_elna_gain_config) {
17257
17258                         regval[0] = nphy_def_lnagains[2] + gain_delta[core];
17259                         regval[1] = nphy_def_lnagains[3] + gain_delta[core];
17260                         regval[2] = nphy_def_lnagains[3] + gain_delta[core];
17261                         regval[3] = nphy_def_lnagains[3] + gain_delta[core];
17262                 } else {
17263                         for (ctr = 0; ctr < 4; ctr++) {
17264                                 regval[ctr] =
17265                                     nphy_def_lnagains[ctr] + gain_delta[core];
17266                         }
17267                 }
17268                 wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
17269
17270                 minmax_gain[core] =
17271                     (u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
17272         }
17273
17274         mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
17275         mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
17276
17277         if (pi->phyhang_avoid)
17278                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17279 }
17280
17281 void wlc_phy_switch_radio_nphy(phy_info_t *pi, bool on)
17282 {
17283         if (on) {
17284                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17285                         if (!pi->radio_is_on) {
17286                                 wlc_phy_radio_preinit_205x(pi);
17287                                 wlc_phy_radio_init_2057(pi);
17288                                 wlc_phy_radio_postinit_2057(pi);
17289                         }
17290
17291                         wlc_phy_chanspec_set((wlc_phy_t *) pi,
17292                                              pi->radio_chanspec);
17293                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17294                         wlc_phy_radio_preinit_205x(pi);
17295                         wlc_phy_radio_init_2056(pi);
17296                         wlc_phy_radio_postinit_2056(pi);
17297
17298                         wlc_phy_chanspec_set((wlc_phy_t *) pi,
17299                                              pi->radio_chanspec);
17300                 } else {
17301                         wlc_phy_radio_preinit_2055(pi);
17302                         wlc_phy_radio_init_2055(pi);
17303                         wlc_phy_radio_postinit_2055(pi);
17304                 }
17305
17306                 pi->radio_is_on = true;
17307
17308         } else {
17309
17310                 if (NREV_GE(pi->pubpi.phy_rev, 3)
17311                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
17312                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
17313                         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
17314
17315                         write_radio_reg(pi,
17316                                         RADIO_2056_TX_PADA_BOOST_TUNE |
17317                                         RADIO_2056_TX0, 0);
17318                         write_radio_reg(pi,
17319                                         RADIO_2056_TX_PADG_BOOST_TUNE |
17320                                         RADIO_2056_TX0, 0);
17321                         write_radio_reg(pi,
17322                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
17323                                         RADIO_2056_TX0, 0);
17324                         write_radio_reg(pi,
17325                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
17326                                         RADIO_2056_TX0, 0);
17327                         mod_radio_reg(pi,
17328                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
17329                                       RADIO_2056_TX0, 0xf0, 0);
17330                         write_radio_reg(pi,
17331                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
17332                                         RADIO_2056_TX0, 0);
17333
17334                         write_radio_reg(pi,
17335                                         RADIO_2056_TX_PADA_BOOST_TUNE |
17336                                         RADIO_2056_TX1, 0);
17337                         write_radio_reg(pi,
17338                                         RADIO_2056_TX_PADG_BOOST_TUNE |
17339                                         RADIO_2056_TX1, 0);
17340                         write_radio_reg(pi,
17341                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
17342                                         RADIO_2056_TX1, 0);
17343                         write_radio_reg(pi,
17344                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
17345                                         RADIO_2056_TX1, 0);
17346                         mod_radio_reg(pi,
17347                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
17348                                       RADIO_2056_TX1, 0xf0, 0);
17349                         write_radio_reg(pi,
17350                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
17351                                         RADIO_2056_TX1, 0);
17352
17353                         pi->radio_is_on = false;
17354                 }
17355
17356                 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
17357                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
17358                         pi->radio_is_on = false;
17359                 }
17360
17361         }
17362 }
17363
17364 static void wlc_phy_radio_preinit_2055(phy_info_t *pi)
17365 {
17366
17367         and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
17368         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
17369
17370         or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
17371 }
17372
17373 static void wlc_phy_radio_init_2055(phy_info_t *pi)
17374 {
17375         wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
17376 }
17377
17378 static void wlc_phy_radio_postinit_2055(phy_info_t *pi)
17379 {
17380
17381         and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
17382                       ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
17383
17384         if (((pi->sh->sromrev >= 4)
17385              && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
17386             || ((pi->sh->sromrev < 4))) {
17387                 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
17388                 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
17389         }
17390
17391         mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
17392         write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
17393
17394         and_radio_reg(pi, RADIO_2055_CAL_MISC,
17395                       ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
17396
17397         or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
17398
17399         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
17400
17401         udelay(1000);
17402
17403         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
17404
17405         SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
17406                    RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
17407
17408         if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
17409                  RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
17410                  "HW error: radio calibration1\n"))
17411                 return;
17412
17413         and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
17414                       ~(RADIO_2055_CAL_LPO_ENABLE));
17415
17416         wlc_phy_chanspec_set((wlc_phy_t *) pi, pi->radio_chanspec);
17417
17418         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
17419         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
17420
17421         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
17422         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
17423
17424         mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
17425                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
17426         mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
17427                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
17428         if (pi->nphy_gain_boost) {
17429                 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
17430                               ~(RADIO_2055_GAINBST_DISABLE));
17431                 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
17432                               ~(RADIO_2055_GAINBST_DISABLE));
17433         } else {
17434                 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
17435                              RADIO_2055_GAINBST_DISABLE);
17436                 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
17437                              RADIO_2055_GAINBST_DISABLE);
17438         }
17439
17440         udelay(2);
17441 }
17442
17443 static void wlc_phy_radio_preinit_205x(phy_info_t *pi)
17444 {
17445
17446         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
17447         and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
17448
17449         or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
17450         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
17451
17452 }
17453
17454 static void wlc_phy_radio_init_2056(phy_info_t *pi)
17455 {
17456         radio_regs_t *regs_SYN_2056_ptr = NULL;
17457         radio_regs_t *regs_TX_2056_ptr = NULL;
17458         radio_regs_t *regs_RX_2056_ptr = NULL;
17459
17460         if (NREV_IS(pi->pubpi.phy_rev, 3)) {
17461                 regs_SYN_2056_ptr = regs_SYN_2056;
17462                 regs_TX_2056_ptr = regs_TX_2056;
17463                 regs_RX_2056_ptr = regs_RX_2056;
17464         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17465                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
17466                 regs_TX_2056_ptr = regs_TX_2056_A1;
17467                 regs_RX_2056_ptr = regs_RX_2056_A1;
17468         } else {
17469                 switch (pi->pubpi.radiorev) {
17470                 case 5:
17471                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
17472                         regs_TX_2056_ptr = regs_TX_2056_rev5;
17473                         regs_RX_2056_ptr = regs_RX_2056_rev5;
17474                         break;
17475
17476                 case 6:
17477                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
17478                         regs_TX_2056_ptr = regs_TX_2056_rev6;
17479                         regs_RX_2056_ptr = regs_RX_2056_rev6;
17480                         break;
17481
17482                 case 7:
17483                 case 9:
17484                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
17485                         regs_TX_2056_ptr = regs_TX_2056_rev7;
17486                         regs_RX_2056_ptr = regs_RX_2056_rev7;
17487                         break;
17488
17489                 case 8:
17490                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
17491                         regs_TX_2056_ptr = regs_TX_2056_rev8;
17492                         regs_RX_2056_ptr = regs_RX_2056_rev8;
17493                         break;
17494
17495                 case 11:
17496                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
17497                         regs_TX_2056_ptr = regs_TX_2056_rev11;
17498                         regs_RX_2056_ptr = regs_RX_2056_rev11;
17499                         break;
17500
17501                 default:
17502                         break;
17503                 }
17504         }
17505
17506         wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
17507
17508         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
17509
17510         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
17511
17512         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
17513
17514         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
17515 }
17516
17517 static void wlc_phy_radio_postinit_2056(phy_info_t *pi)
17518 {
17519         mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
17520
17521         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
17522         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
17523         udelay(1000);
17524         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
17525
17526         if ((pi->sh->boardflags2 & BFL2_LEGACY)
17527             || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN)) {
17528
17529                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
17530         } else {
17531
17532                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
17533         }
17534
17535         mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
17536
17537         if (pi->phy_init_por) {
17538                 wlc_phy_radio205x_rcal(pi);
17539         }
17540 }
17541
17542 static void wlc_phy_radio_init_2057(phy_info_t *pi)
17543 {
17544         radio_20xx_regs_t *regs_2057_ptr = NULL;
17545
17546         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
17547
17548                 regs_2057_ptr = regs_2057_rev4;
17549         } else if (NREV_IS(pi->pubpi.phy_rev, 8)
17550                    || NREV_IS(pi->pubpi.phy_rev, 9)) {
17551                 switch (pi->pubpi.radiorev) {
17552                 case 5:
17553
17554                         if (pi->pubpi.radiover == 0x0) {
17555
17556                                 regs_2057_ptr = regs_2057_rev5;
17557
17558                         } else if (pi->pubpi.radiover == 0x1) {
17559
17560                                 regs_2057_ptr = regs_2057_rev5v1;
17561                         } else {
17562                                 break;
17563                         }
17564
17565                 case 7:
17566
17567                         regs_2057_ptr = regs_2057_rev7;
17568                         break;
17569
17570                 case 8:
17571
17572                         regs_2057_ptr = regs_2057_rev8;
17573                         break;
17574
17575                 default:
17576                         break;
17577                 }
17578         }
17579
17580         wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
17581 }
17582
17583 static void wlc_phy_radio_postinit_2057(phy_info_t *pi)
17584 {
17585
17586         mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
17587
17588         if (pi->sh->chip == !BCM6362_CHIP_ID) {
17589
17590                 mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x2, 0x2);
17591         }
17592
17593         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
17594         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
17595         mdelay(2);
17596         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
17597         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
17598
17599         if (pi->phy_init_por) {
17600                 wlc_phy_radio205x_rcal(pi);
17601                 wlc_phy_radio2057_rccal(pi);
17602         }
17603
17604         mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
17605 }
17606
17607 static bool
17608 wlc_phy_chan2freq_nphy(phy_info_t *pi, uint channel, int *f,
17609                        chan_info_nphy_radio2057_t **t0,
17610                        chan_info_nphy_radio205x_t **t1,
17611                        chan_info_nphy_radio2057_rev5_t **t2,
17612                        chan_info_nphy_2055_t **t3)
17613 {
17614         uint i;
17615         chan_info_nphy_radio2057_t *chan_info_tbl_p_0 = NULL;
17616         chan_info_nphy_radio205x_t *chan_info_tbl_p_1 = NULL;
17617         chan_info_nphy_radio2057_rev5_t *chan_info_tbl_p_2 = NULL;
17618         u32 tbl_len = 0;
17619
17620         int freq = 0;
17621
17622         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17623
17624                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
17625
17626                         chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
17627                         tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
17628
17629                 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
17630                            || NREV_IS(pi->pubpi.phy_rev, 9)) {
17631                         switch (pi->pubpi.radiorev) {
17632
17633                         case 5:
17634
17635                                 if (pi->pubpi.radiover == 0x0) {
17636
17637                                         chan_info_tbl_p_2 =
17638                                             chan_info_nphyrev8_2057_rev5;
17639                                         tbl_len =
17640                                             ARRAY_SIZE
17641                                             (chan_info_nphyrev8_2057_rev5);
17642
17643                                 } else if (pi->pubpi.radiover == 0x1) {
17644
17645                                         chan_info_tbl_p_2 =
17646                                             chan_info_nphyrev9_2057_rev5v1;
17647                                         tbl_len =
17648                                             ARRAY_SIZE
17649                                             (chan_info_nphyrev9_2057_rev5v1);
17650
17651                                 }
17652                                 break;
17653
17654                         case 7:
17655                                 chan_info_tbl_p_0 =
17656                                     chan_info_nphyrev8_2057_rev7;
17657                                 tbl_len =
17658                                     ARRAY_SIZE(chan_info_nphyrev8_2057_rev7);
17659                                 break;
17660
17661                         case 8:
17662                                 chan_info_tbl_p_0 =
17663                                     chan_info_nphyrev8_2057_rev8;
17664                                 tbl_len =
17665                                     ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
17666                                 break;
17667
17668                         default:
17669                                 if (NORADIO_ENAB(pi->pubpi)) {
17670                                         goto fail;
17671                                 }
17672                                 break;
17673                         }
17674                 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
17675
17676                         chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
17677                         tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
17678                 } else {
17679                         goto fail;
17680                 }
17681
17682                 for (i = 0; i < tbl_len; i++) {
17683                         if (pi->pubpi.radiorev == 5) {
17684
17685                                 if (chan_info_tbl_p_2[i].chan == channel)
17686                                         break;
17687                         } else {
17688
17689                                 if (chan_info_tbl_p_0[i].chan == channel)
17690                                         break;
17691                         }
17692                 }
17693
17694                 if (i >= tbl_len) {
17695                         goto fail;
17696                 }
17697                 if (pi->pubpi.radiorev == 5) {
17698                         *t2 = &chan_info_tbl_p_2[i];
17699                         freq = chan_info_tbl_p_2[i].freq;
17700                 } else {
17701                         *t0 = &chan_info_tbl_p_0[i];
17702                         freq = chan_info_tbl_p_0[i].freq;
17703                 }
17704
17705         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17706                 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
17707                         chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
17708                         tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
17709                 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17710                         chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
17711                         tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
17712                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
17713                            || NREV_IS(pi->pubpi.phy_rev, 6)) {
17714                         switch (pi->pubpi.radiorev) {
17715                         case 5:
17716                                 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
17717                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
17718                                 break;
17719                         case 6:
17720                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
17721                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
17722                                 break;
17723                         case 7:
17724                         case 9:
17725                                 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
17726                                 tbl_len =
17727                                     ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
17728                                 break;
17729                         case 8:
17730                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
17731                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
17732                                 break;
17733                         case 11:
17734                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
17735                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v11);
17736                                 break;
17737                         default:
17738                                 if (NORADIO_ENAB(pi->pubpi)) {
17739                                         goto fail;
17740                                 }
17741                                 break;
17742                         }
17743                 }
17744
17745                 for (i = 0; i < tbl_len; i++) {
17746                         if (chan_info_tbl_p_1[i].chan == channel)
17747                                 break;
17748                 }
17749
17750                 if (i >= tbl_len) {
17751                         goto fail;
17752                 }
17753                 *t1 = &chan_info_tbl_p_1[i];
17754                 freq = chan_info_tbl_p_1[i].freq;
17755
17756         } else {
17757                 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
17758                         if (chan_info_nphy_2055[i].chan == channel)
17759                                 break;
17760
17761                 if (i >= ARRAY_SIZE(chan_info_nphy_2055)) {
17762                         goto fail;
17763                 }
17764                 *t3 = &chan_info_nphy_2055[i];
17765                 freq = chan_info_nphy_2055[i].freq;
17766         }
17767
17768         *f = freq;
17769         return true;
17770
17771  fail:
17772         *f = WL_CHAN_FREQ_RANGE_2G;
17773         return false;
17774 }
17775
17776 u8 wlc_phy_get_chan_freq_range_nphy(phy_info_t *pi, uint channel)
17777 {
17778         int freq;
17779         chan_info_nphy_radio2057_t *t0 = NULL;
17780         chan_info_nphy_radio205x_t *t1 = NULL;
17781         chan_info_nphy_radio2057_rev5_t *t2 = NULL;
17782         chan_info_nphy_2055_t *t3 = NULL;
17783
17784         if (NORADIO_ENAB(pi->pubpi))
17785                 return WL_CHAN_FREQ_RANGE_2G;
17786
17787         if (channel == 0)
17788                 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
17789
17790         wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
17791
17792         if (CHSPEC_IS2G(pi->radio_chanspec))
17793                 return WL_CHAN_FREQ_RANGE_2G;
17794
17795         if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN)) {
17796                 return WL_CHAN_FREQ_RANGE_5GL;
17797         } else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN)) {
17798                 return WL_CHAN_FREQ_RANGE_5GM;
17799         } else {
17800                 return WL_CHAN_FREQ_RANGE_5GH;
17801         }
17802 }
17803
17804 static void
17805 wlc_phy_chanspec_radio2055_setup(phy_info_t *pi, chan_info_nphy_2055_t *ci)
17806 {
17807
17808         write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
17809         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
17810         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
17811         write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
17812
17813         WLC_PHY_WAR_PR51571(pi);
17814
17815         write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
17816         write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
17817         write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
17818         write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
17819
17820         WLC_PHY_WAR_PR51571(pi);
17821
17822         write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
17823         write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
17824         write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
17825         write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
17826
17827         WLC_PHY_WAR_PR51571(pi);
17828
17829         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
17830                         ci->RF_core1_lgbuf_a_tune);
17831         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
17832                         ci->RF_core1_lgbuf_g_tune);
17833         write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
17834         write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
17835                         ci->RF_core1_tx_pga_pad_tn);
17836
17837         WLC_PHY_WAR_PR51571(pi);
17838
17839         write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
17840                         ci->RF_core1_tx_mx_bgtrim);
17841         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
17842                         ci->RF_core2_lgbuf_a_tune);
17843         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
17844                         ci->RF_core2_lgbuf_g_tune);
17845         write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
17846
17847         WLC_PHY_WAR_PR51571(pi);
17848
17849         write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
17850                         ci->RF_core2_tx_pga_pad_tn);
17851         write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
17852                         ci->RF_core2_tx_mx_bgtrim);
17853
17854         udelay(50);
17855
17856         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
17857         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
17858
17859         WLC_PHY_WAR_PR51571(pi);
17860
17861         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
17862
17863         udelay(300);
17864 }
17865
17866 static void
17867 wlc_phy_chanspec_radio2056_setup(phy_info_t *pi,
17868                                  const chan_info_nphy_radio205x_t *ci)
17869 {
17870         radio_regs_t *regs_SYN_2056_ptr = NULL;
17871
17872         write_radio_reg(pi,
17873                         RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
17874                         ci->RF_SYN_pll_vcocal1);
17875         write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
17876                         ci->RF_SYN_pll_vcocal2);
17877         write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
17878                         ci->RF_SYN_pll_refdiv);
17879         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
17880                         ci->RF_SYN_pll_mmd2);
17881         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
17882                         ci->RF_SYN_pll_mmd1);
17883         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
17884                         ci->RF_SYN_pll_loopfilter1);
17885         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
17886                         ci->RF_SYN_pll_loopfilter2);
17887         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
17888                         ci->RF_SYN_pll_loopfilter3);
17889         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
17890                         ci->RF_SYN_pll_loopfilter4);
17891         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
17892                         ci->RF_SYN_pll_loopfilter5);
17893         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
17894                         ci->RF_SYN_reserved_addr27);
17895         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
17896                         ci->RF_SYN_reserved_addr28);
17897         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
17898                         ci->RF_SYN_reserved_addr29);
17899         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
17900                         ci->RF_SYN_logen_VCOBUF1);
17901         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
17902                         ci->RF_SYN_logen_MIXER2);
17903         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
17904                         ci->RF_SYN_logen_BUF3);
17905         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
17906                         ci->RF_SYN_logen_BUF4);
17907
17908         write_radio_reg(pi,
17909                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
17910                         ci->RF_RX0_lnaa_tune);
17911         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
17912                         ci->RF_RX0_lnag_tune);
17913         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
17914                         ci->RF_TX0_intpaa_boost_tune);
17915         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
17916                         ci->RF_TX0_intpag_boost_tune);
17917         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
17918                         ci->RF_TX0_pada_boost_tune);
17919         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
17920                         ci->RF_TX0_padg_boost_tune);
17921         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
17922                         ci->RF_TX0_pgaa_boost_tune);
17923         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
17924                         ci->RF_TX0_pgag_boost_tune);
17925         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
17926                         ci->RF_TX0_mixa_boost_tune);
17927         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
17928                         ci->RF_TX0_mixg_boost_tune);
17929
17930         write_radio_reg(pi,
17931                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
17932                         ci->RF_RX1_lnaa_tune);
17933         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
17934                         ci->RF_RX1_lnag_tune);
17935         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
17936                         ci->RF_TX1_intpaa_boost_tune);
17937         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
17938                         ci->RF_TX1_intpag_boost_tune);
17939         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
17940                         ci->RF_TX1_pada_boost_tune);
17941         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
17942                         ci->RF_TX1_padg_boost_tune);
17943         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
17944                         ci->RF_TX1_pgaa_boost_tune);
17945         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
17946                         ci->RF_TX1_pgag_boost_tune);
17947         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
17948                         ci->RF_TX1_mixa_boost_tune);
17949         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
17950                         ci->RF_TX1_mixg_boost_tune);
17951
17952         if (NREV_IS(pi->pubpi.phy_rev, 3))
17953                 regs_SYN_2056_ptr = regs_SYN_2056;
17954         else if (NREV_IS(pi->pubpi.phy_rev, 4))
17955                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
17956         else {
17957                 switch (pi->pubpi.radiorev) {
17958                 case 5:
17959                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
17960                         break;
17961                 case 6:
17962                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
17963                         break;
17964                 case 7:
17965                 case 9:
17966                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
17967                         break;
17968                 case 8:
17969                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
17970                         break;
17971                 case 11:
17972                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
17973                         break;
17974                 }
17975         }
17976         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17977                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
17978                                 RADIO_2056_SYN,
17979                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
17980         } else {
17981                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
17982                                 RADIO_2056_SYN,
17983                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
17984         }
17985
17986         if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
17987                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17988                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
17989                                         RADIO_2056_SYN, 0x1f);
17990                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
17991                                         RADIO_2056_SYN, 0x1f);
17992
17993                         if ((pi->sh->chip == BCM4716_CHIP_ID) ||
17994                             (pi->sh->chip == BCM47162_CHIP_ID)) {
17995
17996                                 write_radio_reg(pi,
17997                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
17998                                                 RADIO_2056_SYN, 0x14);
17999                                 write_radio_reg(pi,
18000                                                 RADIO_2056_SYN_PLL_CP2 |
18001                                                 RADIO_2056_SYN, 0x00);
18002                         } else {
18003                                 write_radio_reg(pi,
18004                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
18005                                                 RADIO_2056_SYN, 0xb);
18006                                 write_radio_reg(pi,
18007                                                 RADIO_2056_SYN_PLL_CP2 |
18008                                                 RADIO_2056_SYN, 0x14);
18009                         }
18010                 }
18011         }
18012
18013         if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
18014             (CHSPEC_IS2G(pi->radio_chanspec))) {
18015                 write_radio_reg(pi,
18016                                 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
18017                                 0x1f);
18018                 write_radio_reg(pi,
18019                                 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
18020                                 0x1f);
18021                 write_radio_reg(pi,
18022                                 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
18023                                 0xb);
18024                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
18025                                 0x20);
18026         }
18027
18028         if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
18029                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18030                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
18031                                         RADIO_2056_SYN, 0x1f);
18032                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
18033                                         RADIO_2056_SYN, 0x1f);
18034                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
18035                                         RADIO_2056_SYN, 0x5);
18036                         write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
18037                                         RADIO_2056_SYN, 0xc);
18038                 }
18039         }
18040
18041         if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
18042                 u16 pag_boost_tune;
18043                 u16 padg_boost_tune;
18044                 u16 pgag_boost_tune;
18045                 u16 mixg_boost_tune;
18046                 u16 bias, cascbias;
18047                 uint core;
18048
18049                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18050
18051                         if (NREV_GE(pi->pubpi.phy_rev, 5)) {
18052
18053                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18054                                                  PADG_IDAC, 0xcc);
18055
18056                                 if ((pi->sh->chip == BCM4716_CHIP_ID) ||
18057                                     (pi->sh->chip ==
18058                                      BCM47162_CHIP_ID)) {
18059                                         bias = 0x40;
18060                                         cascbias = 0x45;
18061                                         pag_boost_tune = 0x5;
18062                                         pgag_boost_tune = 0x33;
18063                                         padg_boost_tune = 0x77;
18064                                         mixg_boost_tune = 0x55;
18065                                 } else {
18066                                         bias = 0x25;
18067                                         cascbias = 0x20;
18068
18069                                         if ((pi->sh->chip ==
18070                                              BCM43224_CHIP_ID)
18071                                             || (pi->sh->chip ==
18072                                                 BCM43225_CHIP_ID)
18073                                             || (pi->sh->chip ==
18074                                                 BCM43421_CHIP_ID)) {
18075                                                 if (pi->sh->chippkg ==
18076                                                     BCM43224_FAB_SMIC) {
18077                                                         bias = 0x2a;
18078                                                         cascbias = 0x38;
18079                                                 }
18080                                         }
18081
18082                                         pag_boost_tune = 0x4;
18083                                         pgag_boost_tune = 0x03;
18084                                         padg_boost_tune = 0x77;
18085                                         mixg_boost_tune = 0x65;
18086                                 }
18087
18088                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18089                                                  INTPAG_IMAIN_STAT, bias);
18090                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18091                                                  INTPAG_IAUX_STAT, bias);
18092                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18093                                                  INTPAG_CASCBIAS, cascbias);
18094
18095                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18096                                                  INTPAG_BOOST_TUNE,
18097                                                  pag_boost_tune);
18098                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18099                                                  PGAG_BOOST_TUNE,
18100                                                  pgag_boost_tune);
18101                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18102                                                  PADG_BOOST_TUNE,
18103                                                  padg_boost_tune);
18104                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18105                                                  MIXG_BOOST_TUNE,
18106                                                  mixg_boost_tune);
18107                         } else {
18108
18109                                 bias = IS40MHZ(pi) ? 0x40 : 0x20;
18110
18111                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18112                                                  INTPAG_IMAIN_STAT, bias);
18113                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18114                                                  INTPAG_IAUX_STAT, bias);
18115                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18116                                                  INTPAG_CASCBIAS, 0x30);
18117                         }
18118                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
18119                                          0xee);
18120                 }
18121         }
18122
18123         if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
18124             && CHSPEC_IS5G(pi->radio_chanspec)) {
18125                 u16 paa_boost_tune;
18126                 u16 pada_boost_tune;
18127                 u16 pgaa_boost_tune;
18128                 u16 mixa_boost_tune;
18129                 u16 freq, pabias, cascbias;
18130                 uint core;
18131
18132                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
18133
18134                 if (freq < 5150) {
18135
18136                         paa_boost_tune = 0xa;
18137                         pada_boost_tune = 0x77;
18138                         pgaa_boost_tune = 0xf;
18139                         mixa_boost_tune = 0xf;
18140                 } else if (freq < 5340) {
18141
18142                         paa_boost_tune = 0x8;
18143                         pada_boost_tune = 0x77;
18144                         pgaa_boost_tune = 0xfb;
18145                         mixa_boost_tune = 0xf;
18146                 } else if (freq < 5650) {
18147
18148                         paa_boost_tune = 0x0;
18149                         pada_boost_tune = 0x77;
18150                         pgaa_boost_tune = 0xb;
18151                         mixa_boost_tune = 0xf;
18152                 } else {
18153
18154                         paa_boost_tune = 0x0;
18155                         pada_boost_tune = 0x77;
18156                         if (freq != 5825) {
18157                                 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
18158                         } else {
18159                                 pgaa_boost_tune = 6;
18160                         }
18161                         mixa_boost_tune = 0xf;
18162                 }
18163
18164                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18165                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18166                                          INTPAA_BOOST_TUNE, paa_boost_tune);
18167                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18168                                          PADA_BOOST_TUNE, pada_boost_tune);
18169                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18170                                          PGAA_BOOST_TUNE, pgaa_boost_tune);
18171                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18172                                          MIXA_BOOST_TUNE, mixa_boost_tune);
18173
18174                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18175                                          TXSPARE1, 0x30);
18176                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18177                                          PA_SPARE2, 0xee);
18178
18179                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18180                                          PADA_CASCBIAS, 0x3);
18181
18182                         cascbias = 0x30;
18183
18184                         if ((pi->sh->chip == BCM43224_CHIP_ID) ||
18185                             (pi->sh->chip == BCM43225_CHIP_ID) ||
18186                             (pi->sh->chip == BCM43421_CHIP_ID)) {
18187                                 if (pi->sh->chippkg == BCM43224_FAB_SMIC) {
18188                                         cascbias = 0x35;
18189                                 }
18190                         }
18191
18192                         pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
18193
18194                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18195                                          INTPAA_IAUX_STAT, pabias);
18196                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18197                                          INTPAA_IMAIN_STAT, pabias);
18198                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18199                                          INTPAA_CASCBIAS, cascbias);
18200                 }
18201         }
18202
18203         udelay(50);
18204
18205         wlc_phy_radio205x_vcocal_nphy(pi);
18206 }
18207
18208 void wlc_phy_radio205x_vcocal_nphy(phy_info_t *pi)
18209 {
18210         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18211                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
18212                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
18213                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
18214                               (1 << 2));
18215                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
18216         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18217                 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
18218                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
18219                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
18220                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
18221                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
18222         }
18223
18224         udelay(300);
18225 }
18226
18227 #define MAX_205x_RCAL_WAITLOOPS 10000
18228
18229 static u16 wlc_phy_radio205x_rcal(phy_info_t *pi)
18230 {
18231         u16 rcal_reg = 0;
18232         int i;
18233
18234         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18235
18236                 if (pi->pubpi.radiorev == 5) {
18237
18238                         and_phy_reg(pi, 0x342, ~(0x1 << 1));
18239
18240                         udelay(10);
18241
18242                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
18243                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
18244                                       0x1);
18245                 }
18246                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
18247
18248                 udelay(10);
18249
18250                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
18251
18252                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18253                         rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
18254                         if (rcal_reg & 0x1) {
18255                                 break;
18256                         }
18257                         udelay(100);
18258                 }
18259
18260                 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
18261                          "HW error: radio calib2"))
18262                         return 0;
18263
18264                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
18265
18266                 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
18267
18268                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
18269                 if (pi->pubpi.radiorev == 5) {
18270
18271                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
18272                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
18273                                       0x0);
18274                 }
18275
18276                 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
18277
18278                         mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
18279                                       rcal_reg);
18280                         mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
18281                                       rcal_reg << 2);
18282                 }
18283
18284         } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
18285                 u16 savereg;
18286
18287                 savereg =
18288                     read_radio_reg(pi,
18289                                    RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN);
18290                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
18291                                 savereg | 0x7);
18292                 udelay(10);
18293
18294                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18295                                 0x1);
18296                 udelay(10);
18297
18298                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18299                                 0x9);
18300
18301                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18302                         rcal_reg = read_radio_reg(pi,
18303                                                   RADIO_2056_SYN_RCAL_CODE_OUT |
18304                                                   RADIO_2056_SYN);
18305                         if (rcal_reg & 0x80) {
18306                                 break;
18307                         }
18308                         udelay(100);
18309                 }
18310
18311                 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
18312                          "HW error: radio calib3"))
18313                         return 0;
18314
18315                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18316                                 0x1);
18317
18318                 rcal_reg =
18319                     read_radio_reg(pi,
18320                                    RADIO_2056_SYN_RCAL_CODE_OUT |
18321                                    RADIO_2056_SYN);
18322
18323                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18324                                 0x0);
18325
18326                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
18327                                 savereg);
18328
18329                 return rcal_reg & 0x1f;
18330         }
18331         return rcal_reg & 0x3e;
18332 }
18333
18334 static void
18335 wlc_phy_chanspec_radio2057_setup(phy_info_t *pi,
18336                                  const chan_info_nphy_radio2057_t *ci,
18337                                  const chan_info_nphy_radio2057_rev5_t *ci2)
18338 {
18339         int coreNum;
18340         u16 txmix2g_tune_boost_pu = 0;
18341         u16 pad2g_tune_pus = 0;
18342
18343         if (pi->pubpi.radiorev == 5) {
18344
18345                 write_radio_reg(pi,
18346                                 RADIO_2057_VCOCAL_COUNTVAL0,
18347                                 ci2->RF_vcocal_countval0);
18348                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
18349                                 ci2->RF_vcocal_countval1);
18350                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
18351                                 ci2->RF_rfpll_refmaster_sparextalsize);
18352                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18353                                 ci2->RF_rfpll_loopfilter_r1);
18354                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18355                                 ci2->RF_rfpll_loopfilter_c2);
18356                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18357                                 ci2->RF_rfpll_loopfilter_c1);
18358                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
18359                                 ci2->RF_cp_kpd_idac);
18360                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
18361                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
18362                 write_radio_reg(pi,
18363                                 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
18364                 write_radio_reg(pi,
18365                                 RADIO_2057_LOGEN_MX2G_TUNE,
18366                                 ci2->RF_logen_mx2g_tune);
18367                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
18368                                 ci2->RF_logen_indbuf2g_tune);
18369
18370                 write_radio_reg(pi,
18371                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
18372                                 ci2->RF_txmix2g_tune_boost_pu_core0);
18373                 write_radio_reg(pi,
18374                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
18375                                 ci2->RF_pad2g_tune_pus_core0);
18376                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
18377                                 ci2->RF_lna2g_tune_core0);
18378
18379                 write_radio_reg(pi,
18380                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
18381                                 ci2->RF_txmix2g_tune_boost_pu_core1);
18382                 write_radio_reg(pi,
18383                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
18384                                 ci2->RF_pad2g_tune_pus_core1);
18385                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
18386                                 ci2->RF_lna2g_tune_core1);
18387
18388         } else {
18389
18390                 write_radio_reg(pi,
18391                                 RADIO_2057_VCOCAL_COUNTVAL0,
18392                                 ci->RF_vcocal_countval0);
18393                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
18394                                 ci->RF_vcocal_countval1);
18395                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
18396                                 ci->RF_rfpll_refmaster_sparextalsize);
18397                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18398                                 ci->RF_rfpll_loopfilter_r1);
18399                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18400                                 ci->RF_rfpll_loopfilter_c2);
18401                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18402                                 ci->RF_rfpll_loopfilter_c1);
18403                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
18404                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
18405                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
18406                 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
18407                 write_radio_reg(pi,
18408                                 RADIO_2057_LOGEN_MX2G_TUNE,
18409                                 ci->RF_logen_mx2g_tune);
18410                 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
18411                                 ci->RF_logen_mx5g_tune);
18412                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
18413                                 ci->RF_logen_indbuf2g_tune);
18414                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
18415                                 ci->RF_logen_indbuf5g_tune);
18416
18417                 write_radio_reg(pi,
18418                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
18419                                 ci->RF_txmix2g_tune_boost_pu_core0);
18420                 write_radio_reg(pi,
18421                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
18422                                 ci->RF_pad2g_tune_pus_core0);
18423                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
18424                                 ci->RF_pga_boost_tune_core0);
18425                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
18426                                 ci->RF_txmix5g_boost_tune_core0);
18427                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
18428                                 ci->RF_pad5g_tune_misc_pus_core0);
18429                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
18430                                 ci->RF_lna2g_tune_core0);
18431                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
18432                                 ci->RF_lna5g_tune_core0);
18433
18434                 write_radio_reg(pi,
18435                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
18436                                 ci->RF_txmix2g_tune_boost_pu_core1);
18437                 write_radio_reg(pi,
18438                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
18439                                 ci->RF_pad2g_tune_pus_core1);
18440                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
18441                                 ci->RF_pga_boost_tune_core1);
18442                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
18443                                 ci->RF_txmix5g_boost_tune_core1);
18444                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
18445                                 ci->RF_pad5g_tune_misc_pus_core1);
18446                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
18447                                 ci->RF_lna2g_tune_core1);
18448                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
18449                                 ci->RF_lna5g_tune_core1);
18450         }
18451
18452         if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
18453
18454                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18455                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18456                                         0x3f);
18457                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
18458                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18459                                         0x8);
18460                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18461                                         0x8);
18462                 } else {
18463                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18464                                         0x1f);
18465                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
18466                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18467                                         0x8);
18468                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18469                                         0x8);
18470                 }
18471         } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
18472                    (pi->pubpi.radiorev == 8)) {
18473
18474                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18475                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18476                                         0x1b);
18477                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
18478                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18479                                         0xa);
18480                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18481                                         0xa);
18482                 } else {
18483                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18484                                         0x1f);
18485                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
18486                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18487                                         0x8);
18488                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18489                                         0x8);
18490                 }
18491
18492         }
18493
18494         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18495                 if (PHY_IPA(pi)) {
18496                         if (pi->pubpi.radiorev == 3) {
18497                                 txmix2g_tune_boost_pu = 0x6b;
18498                         }
18499
18500                         if (pi->pubpi.radiorev == 5)
18501                                 pad2g_tune_pus = 0x73;
18502
18503                 } else {
18504                         if (pi->pubpi.radiorev != 5) {
18505                                 pad2g_tune_pus = 0x3;
18506
18507                                 txmix2g_tune_boost_pu = 0x61;
18508                         }
18509                 }
18510
18511                 for (coreNum = 0; coreNum <= 1; coreNum++) {
18512
18513                         if (txmix2g_tune_boost_pu != 0)
18514                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
18515                                                  TXMIX2G_TUNE_BOOST_PU,
18516                                                  txmix2g_tune_boost_pu);
18517
18518                         if (pad2g_tune_pus != 0)
18519                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
18520                                                  PAD2G_TUNE_PUS,
18521                                                  pad2g_tune_pus);
18522                 }
18523         }
18524
18525         udelay(50);
18526
18527         wlc_phy_radio205x_vcocal_nphy(pi);
18528 }
18529
18530 static u16 wlc_phy_radio2057_rccal(phy_info_t *pi)
18531 {
18532         u16 rccal_valid;
18533         int i;
18534         bool chip43226_6362A0;
18535
18536         chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
18537                             || (pi->pubpi.radiorev == 4)
18538                             || (pi->pubpi.radiorev == 6));
18539
18540         rccal_valid = 0;
18541         if (chip43226_6362A0) {
18542                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
18543                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
18544         } else {
18545                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
18546
18547                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
18548         }
18549         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
18550         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
18551
18552         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18553                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
18554                 if (rccal_valid & 0x2) {
18555                         break;
18556                 }
18557                 udelay(500);
18558         }
18559
18560         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
18561
18562         rccal_valid = 0;
18563         if (chip43226_6362A0) {
18564                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
18565                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
18566         } else {
18567                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
18568
18569                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
18570         }
18571         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
18572         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
18573
18574         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18575                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
18576                 if (rccal_valid & 0x2) {
18577                         break;
18578                 }
18579                 udelay(500);
18580         }
18581
18582         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
18583
18584         rccal_valid = 0;
18585         if (chip43226_6362A0) {
18586                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
18587
18588                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
18589                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
18590         } else {
18591                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
18592                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
18593                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
18594         }
18595         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
18596
18597         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18598                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
18599                 if (rccal_valid & 0x2) {
18600                         break;
18601                 }
18602                 udelay(500);
18603         }
18604
18605         if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
18606                 return 0;
18607
18608         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
18609
18610         return rccal_valid;
18611 }
18612
18613 static void
18614 wlc_phy_adjust_rx_analpfbw_nphy(phy_info_t *pi, u16 reduction_factr)
18615 {
18616         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18617                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18618                     CHSPEC_IS40(pi->radio_chanspec)) {
18619                         if (!pi->nphy_anarxlpf_adjusted) {
18620                                 write_radio_reg(pi,
18621                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18622                                                  RADIO_2056_RX0),
18623                                                 ((pi->nphy_rccal_value +
18624                                                   reduction_factr) | 0x80));
18625
18626                                 pi->nphy_anarxlpf_adjusted = true;
18627                         }
18628                 } else {
18629                         if (pi->nphy_anarxlpf_adjusted) {
18630                                 write_radio_reg(pi,
18631                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18632                                                  RADIO_2056_RX0),
18633                                                 (pi->nphy_rccal_value | 0x80));
18634
18635                                 pi->nphy_anarxlpf_adjusted = false;
18636                         }
18637                 }
18638         }
18639 }
18640
18641 static void
18642 wlc_phy_adjust_min_noisevar_nphy(phy_info_t *pi, int ntones, int *tone_id_buf,
18643                                  u32 *noise_var_buf)
18644 {
18645         int i;
18646         u32 offset;
18647         int tone_id;
18648         int tbllen =
18649             CHSPEC_IS40(pi->
18650                         radio_chanspec) ? NPHY_NOISEVAR_TBLLEN40 :
18651             NPHY_NOISEVAR_TBLLEN20;
18652
18653         if (pi->nphy_noisevars_adjusted) {
18654                 for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
18655                         tone_id = pi->nphy_saved_noisevars.tone_id[i];
18656                         offset = (tone_id >= 0) ?
18657                             ((tone_id * 2) + 1) : (tbllen + (tone_id * 2) + 1);
18658                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18659                                                  offset, 32,
18660                                                  (void *)&pi->
18661                                                  nphy_saved_noisevars.
18662                                                  min_noise_vars[i]);
18663                 }
18664
18665                 pi->nphy_saved_noisevars.bufcount = 0;
18666                 pi->nphy_noisevars_adjusted = false;
18667         }
18668
18669         if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
18670                 pi->nphy_saved_noisevars.bufcount = 0;
18671
18672                 for (i = 0; i < ntones; i++) {
18673                         tone_id = tone_id_buf[i];
18674                         offset = (tone_id >= 0) ?
18675                             ((tone_id * 2) + 1) : (tbllen + (tone_id * 2) + 1);
18676                         pi->nphy_saved_noisevars.tone_id[i] = tone_id;
18677                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18678                                                 offset, 32,
18679                                                 &pi->nphy_saved_noisevars.
18680                                                 min_noise_vars[i]);
18681                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18682                                                  offset, 32,
18683                                                  (void *)&noise_var_buf[i]);
18684                         pi->nphy_saved_noisevars.bufcount++;
18685                 }
18686
18687                 pi->nphy_noisevars_adjusted = true;
18688         }
18689 }
18690
18691 static void wlc_phy_adjust_crsminpwr_nphy(phy_info_t *pi, u8 minpwr)
18692 {
18693         u16 regval;
18694
18695         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18696                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18697                     CHSPEC_IS40(pi->radio_chanspec)) {
18698                         if (!pi->nphy_crsminpwr_adjusted) {
18699                                 regval = read_phy_reg(pi, 0x27d);
18700                                 pi->nphy_crsminpwr[0] = regval & 0xff;
18701                                 regval &= 0xff00;
18702                                 regval |= (u16) minpwr;
18703                                 write_phy_reg(pi, 0x27d, regval);
18704
18705                                 regval = read_phy_reg(pi, 0x280);
18706                                 pi->nphy_crsminpwr[1] = regval & 0xff;
18707                                 regval &= 0xff00;
18708                                 regval |= (u16) minpwr;
18709                                 write_phy_reg(pi, 0x280, regval);
18710
18711                                 regval = read_phy_reg(pi, 0x283);
18712                                 pi->nphy_crsminpwr[2] = regval & 0xff;
18713                                 regval &= 0xff00;
18714                                 regval |= (u16) minpwr;
18715                                 write_phy_reg(pi, 0x283, regval);
18716
18717                                 pi->nphy_crsminpwr_adjusted = true;
18718                         }
18719                 } else {
18720                         if (pi->nphy_crsminpwr_adjusted) {
18721                                 regval = read_phy_reg(pi, 0x27d);
18722                                 regval &= 0xff00;
18723                                 regval |= pi->nphy_crsminpwr[0];
18724                                 write_phy_reg(pi, 0x27d, regval);
18725
18726                                 regval = read_phy_reg(pi, 0x280);
18727                                 regval &= 0xff00;
18728                                 regval |= pi->nphy_crsminpwr[1];
18729                                 write_phy_reg(pi, 0x280, regval);
18730
18731                                 regval = read_phy_reg(pi, 0x283);
18732                                 regval &= 0xff00;
18733                                 regval |= pi->nphy_crsminpwr[2];
18734                                 write_phy_reg(pi, 0x283, regval);
18735
18736                                 pi->nphy_crsminpwr_adjusted = false;
18737                         }
18738                 }
18739         }
18740 }
18741
18742 static void wlc_phy_txlpfbw_nphy(phy_info_t *pi)
18743 {
18744         u8 tx_lpf_bw = 0;
18745
18746         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18747                 if (CHSPEC_IS40(pi->radio_chanspec)) {
18748                         tx_lpf_bw = 3;
18749                 } else {
18750                         tx_lpf_bw = 1;
18751                 }
18752
18753                 if (PHY_IPA(pi)) {
18754                         if (CHSPEC_IS40(pi->radio_chanspec)) {
18755                                 tx_lpf_bw = 5;
18756                         } else {
18757                                 tx_lpf_bw = 4;
18758                         }
18759                 }
18760                 write_phy_reg(pi, 0xe8,
18761                               (tx_lpf_bw << 0) |
18762                               (tx_lpf_bw << 3) |
18763                               (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18764
18765                 if (PHY_IPA(pi)) {
18766
18767                         if (CHSPEC_IS40(pi->radio_chanspec)) {
18768                                 tx_lpf_bw = 4;
18769                         } else {
18770                                 tx_lpf_bw = 1;
18771                         }
18772
18773                         write_phy_reg(pi, 0xe9,
18774                                       (tx_lpf_bw << 0) |
18775                                       (tx_lpf_bw << 3) |
18776                                       (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18777                 }
18778         }
18779 }
18780
18781 static void wlc_phy_spurwar_nphy(phy_info_t *pi)
18782 {
18783         u16 cur_channel = 0;
18784         int nphy_adj_tone_id_buf[] = { 57, 58 };
18785         u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
18786         bool isAdjustNoiseVar = false;
18787         uint numTonesAdjust = 0;
18788         u32 tempval = 0;
18789
18790         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18791                 if (pi->phyhang_avoid)
18792                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
18793
18794                 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
18795
18796                 if (pi->nphy_gband_spurwar_en) {
18797
18798                         wlc_phy_adjust_rx_analpfbw_nphy(pi,
18799                                                         NPHY_ANARXLPFBW_REDUCTIONFACT);
18800
18801                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18802                                 if ((cur_channel == 11)
18803                                     && CHSPEC_IS40(pi->radio_chanspec)) {
18804
18805                                         wlc_phy_adjust_min_noisevar_nphy(pi, 2,
18806                                                                          nphy_adj_tone_id_buf,
18807                                                                          nphy_adj_noise_var_buf);
18808                                 } else {
18809
18810                                         wlc_phy_adjust_min_noisevar_nphy(pi, 0,
18811                                                                          NULL,
18812                                                                          NULL);
18813                                 }
18814                         }
18815                         wlc_phy_adjust_crsminpwr_nphy(pi,
18816                                                       NPHY_ADJUSTED_MINCRSPOWER);
18817                 }
18818
18819                 if ((pi->nphy_gband_spurwar2_en)
18820                     && CHSPEC_IS2G(pi->radio_chanspec)) {
18821
18822                         if (CHSPEC_IS40(pi->radio_chanspec)) {
18823                                 switch (cur_channel) {
18824                                 case 3:
18825                                         nphy_adj_tone_id_buf[0] = 57;
18826                                         nphy_adj_tone_id_buf[1] = 58;
18827                                         nphy_adj_noise_var_buf[0] = 0x22f;
18828                                         nphy_adj_noise_var_buf[1] = 0x25f;
18829                                         isAdjustNoiseVar = true;
18830                                         break;
18831                                 case 4:
18832                                         nphy_adj_tone_id_buf[0] = 41;
18833                                         nphy_adj_tone_id_buf[1] = 42;
18834                                         nphy_adj_noise_var_buf[0] = 0x22f;
18835                                         nphy_adj_noise_var_buf[1] = 0x25f;
18836                                         isAdjustNoiseVar = true;
18837                                         break;
18838                                 case 5:
18839                                         nphy_adj_tone_id_buf[0] = 25;
18840                                         nphy_adj_tone_id_buf[1] = 26;
18841                                         nphy_adj_noise_var_buf[0] = 0x24f;
18842                                         nphy_adj_noise_var_buf[1] = 0x25f;
18843                                         isAdjustNoiseVar = true;
18844                                         break;
18845                                 case 6:
18846                                         nphy_adj_tone_id_buf[0] = 9;
18847                                         nphy_adj_tone_id_buf[1] = 10;
18848                                         nphy_adj_noise_var_buf[0] = 0x22f;
18849                                         nphy_adj_noise_var_buf[1] = 0x24f;
18850                                         isAdjustNoiseVar = true;
18851                                         break;
18852                                 case 7:
18853                                         nphy_adj_tone_id_buf[0] = 121;
18854                                         nphy_adj_tone_id_buf[1] = 122;
18855                                         nphy_adj_noise_var_buf[0] = 0x18f;
18856                                         nphy_adj_noise_var_buf[1] = 0x24f;
18857                                         isAdjustNoiseVar = true;
18858                                         break;
18859                                 case 8:
18860                                         nphy_adj_tone_id_buf[0] = 105;
18861                                         nphy_adj_tone_id_buf[1] = 106;
18862                                         nphy_adj_noise_var_buf[0] = 0x22f;
18863                                         nphy_adj_noise_var_buf[1] = 0x25f;
18864                                         isAdjustNoiseVar = true;
18865                                         break;
18866                                 case 9:
18867                                         nphy_adj_tone_id_buf[0] = 89;
18868                                         nphy_adj_tone_id_buf[1] = 90;
18869                                         nphy_adj_noise_var_buf[0] = 0x22f;
18870                                         nphy_adj_noise_var_buf[1] = 0x24f;
18871                                         isAdjustNoiseVar = true;
18872                                         break;
18873                                 case 10:
18874                                         nphy_adj_tone_id_buf[0] = 73;
18875                                         nphy_adj_tone_id_buf[1] = 74;
18876                                         nphy_adj_noise_var_buf[0] = 0x22f;
18877                                         nphy_adj_noise_var_buf[1] = 0x24f;
18878                                         isAdjustNoiseVar = true;
18879                                         break;
18880                                 default:
18881                                         isAdjustNoiseVar = false;
18882                                         break;
18883                                 }
18884                         }
18885
18886                         if (isAdjustNoiseVar) {
18887                                 numTonesAdjust = sizeof(nphy_adj_tone_id_buf) /
18888                                     sizeof(nphy_adj_tone_id_buf[0]);
18889
18890                                 wlc_phy_adjust_min_noisevar_nphy(pi,
18891                                                                  numTonesAdjust,
18892                                                                  nphy_adj_tone_id_buf,
18893                                                                  nphy_adj_noise_var_buf);
18894
18895                                 tempval = 0;
18896
18897                         } else {
18898
18899                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
18900                                                                  NULL);
18901                         }
18902                 }
18903
18904                 if ((pi->nphy_aband_spurwar_en) &&
18905                     (CHSPEC_IS5G(pi->radio_chanspec))) {
18906                         switch (cur_channel) {
18907                         case 54:
18908                                 nphy_adj_tone_id_buf[0] = 32;
18909                                 nphy_adj_noise_var_buf[0] = 0x25f;
18910                                 break;
18911                         case 38:
18912                         case 102:
18913                         case 118:
18914                                 if ((pi->sh->chip == BCM4716_CHIP_ID) &&
18915                                     (pi->sh->chippkg == BCM4717_PKG_ID)) {
18916                                         nphy_adj_tone_id_buf[0] = 32;
18917                                         nphy_adj_noise_var_buf[0] = 0x21f;
18918                                 } else {
18919                                         nphy_adj_tone_id_buf[0] = 0;
18920                                         nphy_adj_noise_var_buf[0] = 0x0;
18921                                 }
18922                                 break;
18923                         case 134:
18924                                 nphy_adj_tone_id_buf[0] = 32;
18925                                 nphy_adj_noise_var_buf[0] = 0x21f;
18926                                 break;
18927                         case 151:
18928                                 nphy_adj_tone_id_buf[0] = 16;
18929                                 nphy_adj_noise_var_buf[0] = 0x23f;
18930                                 break;
18931                         case 153:
18932                         case 161:
18933                                 nphy_adj_tone_id_buf[0] = 48;
18934                                 nphy_adj_noise_var_buf[0] = 0x23f;
18935                                 break;
18936                         default:
18937                                 nphy_adj_tone_id_buf[0] = 0;
18938                                 nphy_adj_noise_var_buf[0] = 0x0;
18939                                 break;
18940                         }
18941
18942                         if (nphy_adj_tone_id_buf[0]
18943                             && nphy_adj_noise_var_buf[0]) {
18944                                 wlc_phy_adjust_min_noisevar_nphy(pi, 1,
18945                                                                  nphy_adj_tone_id_buf,
18946                                                                  nphy_adj_noise_var_buf);
18947                         } else {
18948                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
18949                                                                  NULL);
18950                         }
18951                 }
18952
18953                 if (pi->phyhang_avoid)
18954                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
18955         }
18956 }
18957
18958 static void
18959 wlc_phy_chanspec_nphy_setup(phy_info_t *pi, chanspec_t chanspec,
18960                             const nphy_sfo_cfg_t *ci)
18961 {
18962         u16 val;
18963
18964         val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
18965         if (CHSPEC_IS5G(chanspec) && !val) {
18966
18967                 val = R_REG(&pi->regs->psm_phy_hdr_param);
18968                 W_REG(&pi->regs->psm_phy_hdr_param,
18969                       (val | MAC_PHY_FORCE_CLK));
18970
18971                 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
18972                            (BBCFG_RESETCCA | BBCFG_RESETRX));
18973
18974                 W_REG(&pi->regs->psm_phy_hdr_param, val);
18975
18976                 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
18977         } else if (!CHSPEC_IS5G(chanspec) && val) {
18978
18979                 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
18980
18981                 val = R_REG(&pi->regs->psm_phy_hdr_param);
18982                 W_REG(&pi->regs->psm_phy_hdr_param,
18983                       (val | MAC_PHY_FORCE_CLK));
18984
18985                 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
18986                             (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
18987
18988                 W_REG(&pi->regs->psm_phy_hdr_param, val);
18989         }
18990
18991         write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
18992         write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
18993         write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
18994
18995         write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
18996         write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
18997         write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
18998
18999         if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
19000                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
19001
19002                 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
19003         } else {
19004                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
19005                                         NPHY_ClassifierCtrl_ofdm_en);
19006
19007                 if (CHSPEC_IS2G(chanspec))
19008                         and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
19009         }
19010
19011         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
19012                 wlc_phy_txpwr_fixpower_nphy(pi);
19013         }
19014
19015         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
19016
19017                 wlc_phy_adjust_lnagaintbl_nphy(pi);
19018         }
19019
19020         wlc_phy_txlpfbw_nphy(pi);
19021
19022         if (NREV_GE(pi->pubpi.phy_rev, 3)
19023             && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
19024                 u8 spuravoid = 0;
19025
19026                 val = CHSPEC_CHANNEL(chanspec);
19027                 if (!CHSPEC_IS40(pi->radio_chanspec)) {
19028                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19029                                 if ((val == 13) || (val == 14) || (val == 153)) {
19030                                         spuravoid = 1;
19031                                 }
19032                         } else {
19033
19034                                 if (((val >= 5) && (val <= 8)) || (val == 13)
19035                                     || (val == 14)) {
19036                                         spuravoid = 1;
19037                                 }
19038                         }
19039                 } else {
19040                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19041                                 if (val == 54) {
19042                                         spuravoid = 1;
19043                                 }
19044                         } else {
19045
19046                                 if (pi->nphy_aband_spurwar_en &&
19047                                     ((val == 38) || (val == 102)
19048                                      || (val == 118))) {
19049                                         if ((pi->sh->chip ==
19050                                              BCM4716_CHIP_ID)
19051                                             && (pi->sh->chippkg ==
19052                                                 BCM4717_PKG_ID)) {
19053                                                 spuravoid = 0;
19054                                         } else {
19055                                                 spuravoid = 1;
19056                                         }
19057                                 }
19058                         }
19059                 }
19060
19061                 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
19062                         spuravoid = 1;
19063
19064                 if ((pi->sh->chip == BCM4716_CHIP_ID) ||
19065                     (pi->sh->chip == BCM47162_CHIP_ID)) {
19066                         si_pmu_spuravoid(pi->sh->sih, spuravoid);
19067                 } else {
19068                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
19069                         si_pmu_spuravoid(pi->sh->sih, spuravoid);
19070                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
19071                 }
19072
19073                 if ((pi->sh->chip == BCM43224_CHIP_ID) ||
19074                     (pi->sh->chip == BCM43225_CHIP_ID) ||
19075                     (pi->sh->chip == BCM43421_CHIP_ID)) {
19076
19077                         if (spuravoid == 1) {
19078
19079                                 W_REG(&pi->regs->tsf_clk_frac_l,
19080                                       0x5341);
19081                                 W_REG(&pi->regs->tsf_clk_frac_h,
19082                                       0x8);
19083                         } else {
19084
19085                                 W_REG(&pi->regs->tsf_clk_frac_l,
19086                                       0x8889);
19087                                 W_REG(&pi->regs->tsf_clk_frac_h,
19088                                       0x8);
19089                         }
19090                 }
19091
19092                 if (!((pi->sh->chip == BCM4716_CHIP_ID) ||
19093                       (pi->sh->chip == BCM47162_CHIP_ID))) {
19094                         wlapi_bmac_core_phypll_reset(pi->sh->physhim);
19095                 }
19096
19097                 mod_phy_reg(pi, 0x01, (0x1 << 15),
19098                             ((spuravoid > 0) ? (0x1 << 15) : 0));
19099
19100                 wlc_phy_resetcca_nphy(pi);
19101
19102                 pi->phy_isspuravoid = (spuravoid > 0);
19103         }
19104
19105         if (NREV_LT(pi->pubpi.phy_rev, 7))
19106                 write_phy_reg(pi, 0x17e, 0x3830);
19107
19108         wlc_phy_spurwar_nphy(pi);
19109 }
19110
19111 void wlc_phy_chanspec_set_nphy(phy_info_t *pi, chanspec_t chanspec)
19112 {
19113         int freq;
19114         chan_info_nphy_radio2057_t *t0 = NULL;
19115         chan_info_nphy_radio205x_t *t1 = NULL;
19116         chan_info_nphy_radio2057_rev5_t *t2 = NULL;
19117         chan_info_nphy_2055_t *t3 = NULL;
19118
19119         if (NORADIO_ENAB(pi->pubpi)) {
19120                 return;
19121         }
19122
19123         if (!wlc_phy_chan2freq_nphy
19124             (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
19125                 return;
19126
19127         wlc_phy_chanspec_radio_set((wlc_phy_t *) pi, chanspec);
19128
19129         if (CHSPEC_BW(chanspec) != pi->bw)
19130                 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
19131
19132         if (CHSPEC_IS40(chanspec)) {
19133                 if (CHSPEC_SB_UPPER(chanspec)) {
19134                         or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
19135                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19136                                 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
19137                         }
19138                 } else {
19139                         and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
19140                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19141                                 and_phy_reg(pi, 0x310,
19142                                             (~PRIM_SEL_UP20 & 0xffff));
19143                         }
19144                 }
19145         }
19146
19147         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19148                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19149
19150                         if ((pi->pubpi.radiorev <= 4)
19151                             || (pi->pubpi.radiorev == 6)) {
19152                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
19153                                               0x2,
19154                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
19155                                                : 0));
19156                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
19157                                               0x2,
19158                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
19159                                                : 0));
19160                         }
19161
19162                         wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
19163                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
19164                                                     (pi->pubpi.radiorev ==
19165                                                      5) ? (const nphy_sfo_cfg_t
19166                                                            *)&(t2->
19167                                                                PHY_BW1a)
19168                                                     : (const nphy_sfo_cfg_t *)
19169                                                     &(t0->PHY_BW1a));
19170
19171                 } else {
19172
19173                         mod_radio_reg(pi,
19174                                       RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
19175                                       0x4,
19176                                       (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
19177                         wlc_phy_chanspec_radio2056_setup(pi, t1);
19178
19179                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
19180                                                     (const nphy_sfo_cfg_t *)
19181                                                     &(t1->PHY_BW1a));
19182                 }
19183
19184         } else {
19185
19186                 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
19187                               (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
19188                                : (0x05 << 4)));
19189
19190                 wlc_phy_chanspec_radio2055_setup(pi, t3);
19191                 wlc_phy_chanspec_nphy_setup(pi, chanspec,
19192                                             (const nphy_sfo_cfg_t *)&(t3->
19193                                                                       PHY_BW1a));
19194         }
19195
19196 }
19197
19198 static void wlc_phy_savecal_nphy(phy_info_t *pi)
19199 {
19200         void *tbl_ptr;
19201         int coreNum;
19202         u16 *txcal_radio_regs = NULL;
19203
19204         if (pi->phyhang_avoid)
19205                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19206
19207         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19208
19209                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
19210                                           &pi->calibration_cache.
19211                                           rxcal_coeffs_2G);
19212
19213                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19214                         txcal_radio_regs =
19215                             pi->calibration_cache.txcal_radio_regs_2G;
19216                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19217
19218                         pi->calibration_cache.txcal_radio_regs_2G[0] =
19219                             read_radio_reg(pi,
19220                                            RADIO_2056_TX_LOFT_FINE_I |
19221                                            RADIO_2056_TX0);
19222                         pi->calibration_cache.txcal_radio_regs_2G[1] =
19223                             read_radio_reg(pi,
19224                                            RADIO_2056_TX_LOFT_FINE_Q |
19225                                            RADIO_2056_TX0);
19226                         pi->calibration_cache.txcal_radio_regs_2G[2] =
19227                             read_radio_reg(pi,
19228                                            RADIO_2056_TX_LOFT_FINE_I |
19229                                            RADIO_2056_TX1);
19230                         pi->calibration_cache.txcal_radio_regs_2G[3] =
19231                             read_radio_reg(pi,
19232                                            RADIO_2056_TX_LOFT_FINE_Q |
19233                                            RADIO_2056_TX1);
19234
19235                         pi->calibration_cache.txcal_radio_regs_2G[4] =
19236                             read_radio_reg(pi,
19237                                            RADIO_2056_TX_LOFT_COARSE_I |
19238                                            RADIO_2056_TX0);
19239                         pi->calibration_cache.txcal_radio_regs_2G[5] =
19240                             read_radio_reg(pi,
19241                                            RADIO_2056_TX_LOFT_COARSE_Q |
19242                                            RADIO_2056_TX0);
19243                         pi->calibration_cache.txcal_radio_regs_2G[6] =
19244                             read_radio_reg(pi,
19245                                            RADIO_2056_TX_LOFT_COARSE_I |
19246                                            RADIO_2056_TX1);
19247                         pi->calibration_cache.txcal_radio_regs_2G[7] =
19248                             read_radio_reg(pi,
19249                                            RADIO_2056_TX_LOFT_COARSE_Q |
19250                                            RADIO_2056_TX1);
19251                 } else {
19252                         pi->calibration_cache.txcal_radio_regs_2G[0] =
19253                             read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
19254                         pi->calibration_cache.txcal_radio_regs_2G[1] =
19255                             read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
19256                         pi->calibration_cache.txcal_radio_regs_2G[2] =
19257                             read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
19258                         pi->calibration_cache.txcal_radio_regs_2G[3] =
19259                             read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
19260                 }
19261
19262                 pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
19263                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
19264         } else {
19265
19266                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
19267                                           &pi->calibration_cache.
19268                                           rxcal_coeffs_5G);
19269
19270                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19271                         txcal_radio_regs =
19272                             pi->calibration_cache.txcal_radio_regs_5G;
19273                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19274
19275                         pi->calibration_cache.txcal_radio_regs_5G[0] =
19276                             read_radio_reg(pi,
19277                                            RADIO_2056_TX_LOFT_FINE_I |
19278                                            RADIO_2056_TX0);
19279                         pi->calibration_cache.txcal_radio_regs_5G[1] =
19280                             read_radio_reg(pi,
19281                                            RADIO_2056_TX_LOFT_FINE_Q |
19282                                            RADIO_2056_TX0);
19283                         pi->calibration_cache.txcal_radio_regs_5G[2] =
19284                             read_radio_reg(pi,
19285                                            RADIO_2056_TX_LOFT_FINE_I |
19286                                            RADIO_2056_TX1);
19287                         pi->calibration_cache.txcal_radio_regs_5G[3] =
19288                             read_radio_reg(pi,
19289                                            RADIO_2056_TX_LOFT_FINE_Q |
19290                                            RADIO_2056_TX1);
19291
19292                         pi->calibration_cache.txcal_radio_regs_5G[4] =
19293                             read_radio_reg(pi,
19294                                            RADIO_2056_TX_LOFT_COARSE_I |
19295                                            RADIO_2056_TX0);
19296                         pi->calibration_cache.txcal_radio_regs_5G[5] =
19297                             read_radio_reg(pi,
19298                                            RADIO_2056_TX_LOFT_COARSE_Q |
19299                                            RADIO_2056_TX0);
19300                         pi->calibration_cache.txcal_radio_regs_5G[6] =
19301                             read_radio_reg(pi,
19302                                            RADIO_2056_TX_LOFT_COARSE_I |
19303                                            RADIO_2056_TX1);
19304                         pi->calibration_cache.txcal_radio_regs_5G[7] =
19305                             read_radio_reg(pi,
19306                                            RADIO_2056_TX_LOFT_COARSE_Q |
19307                                            RADIO_2056_TX1);
19308                 } else {
19309                         pi->calibration_cache.txcal_radio_regs_5G[0] =
19310                             read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
19311                         pi->calibration_cache.txcal_radio_regs_5G[1] =
19312                             read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
19313                         pi->calibration_cache.txcal_radio_regs_5G[2] =
19314                             read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
19315                         pi->calibration_cache.txcal_radio_regs_5G[3] =
19316                             read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
19317                 }
19318
19319                 pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
19320                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
19321         }
19322         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19323                 for (coreNum = 0; coreNum <= 1; coreNum++) {
19324
19325                         txcal_radio_regs[2 * coreNum] =
19326                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19327                                             LOFT_FINE_I);
19328                         txcal_radio_regs[2 * coreNum + 1] =
19329                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19330                                             LOFT_FINE_Q);
19331
19332                         txcal_radio_regs[2 * coreNum + 4] =
19333                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19334                                             LOFT_COARSE_I);
19335                         txcal_radio_regs[2 * coreNum + 5] =
19336                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19337                                             LOFT_COARSE_Q);
19338                 }
19339         }
19340
19341         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
19342
19343         if (pi->phyhang_avoid)
19344                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19345 }
19346
19347 static void wlc_phy_restorecal_nphy(phy_info_t *pi)
19348 {
19349         u16 *loft_comp;
19350         u16 txcal_coeffs_bphy[4];
19351         u16 *tbl_ptr;
19352         int coreNum;
19353         u16 *txcal_radio_regs = NULL;
19354
19355         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19356                 if (pi->nphy_iqcal_chanspec_2G == 0)
19357                         return;
19358
19359                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
19360                 loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
19361         } else {
19362                 if (pi->nphy_iqcal_chanspec_5G == 0)
19363                         return;
19364
19365                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
19366                 loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
19367         }
19368
19369         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16,
19370                                  (void *)tbl_ptr);
19371
19372         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19373                 txcal_coeffs_bphy[0] = tbl_ptr[0];
19374                 txcal_coeffs_bphy[1] = tbl_ptr[1];
19375                 txcal_coeffs_bphy[2] = tbl_ptr[2];
19376                 txcal_coeffs_bphy[3] = tbl_ptr[3];
19377         } else {
19378                 txcal_coeffs_bphy[0] = 0;
19379                 txcal_coeffs_bphy[1] = 0;
19380                 txcal_coeffs_bphy[2] = 0;
19381                 txcal_coeffs_bphy[3] = 0;
19382         }
19383
19384         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
19385                                  txcal_coeffs_bphy);
19386
19387         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
19388
19389         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
19390
19391         if (NREV_LT(pi->pubpi.phy_rev, 2))
19392                 wlc_phy_tx_iq_war_nphy(pi);
19393
19394         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19395                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19396                         txcal_radio_regs =
19397                             pi->calibration_cache.txcal_radio_regs_2G;
19398                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19399
19400                         write_radio_reg(pi,
19401                                         RADIO_2056_TX_LOFT_FINE_I |
19402                                         RADIO_2056_TX0,
19403                                         pi->calibration_cache.
19404                                         txcal_radio_regs_2G[0]);
19405                         write_radio_reg(pi,
19406                                         RADIO_2056_TX_LOFT_FINE_Q |
19407                                         RADIO_2056_TX0,
19408                                         pi->calibration_cache.
19409                                         txcal_radio_regs_2G[1]);
19410                         write_radio_reg(pi,
19411                                         RADIO_2056_TX_LOFT_FINE_I |
19412                                         RADIO_2056_TX1,
19413                                         pi->calibration_cache.
19414                                         txcal_radio_regs_2G[2]);
19415                         write_radio_reg(pi,
19416                                         RADIO_2056_TX_LOFT_FINE_Q |
19417                                         RADIO_2056_TX1,
19418                                         pi->calibration_cache.
19419                                         txcal_radio_regs_2G[3]);
19420
19421                         write_radio_reg(pi,
19422                                         RADIO_2056_TX_LOFT_COARSE_I |
19423                                         RADIO_2056_TX0,
19424                                         pi->calibration_cache.
19425                                         txcal_radio_regs_2G[4]);
19426                         write_radio_reg(pi,
19427                                         RADIO_2056_TX_LOFT_COARSE_Q |
19428                                         RADIO_2056_TX0,
19429                                         pi->calibration_cache.
19430                                         txcal_radio_regs_2G[5]);
19431                         write_radio_reg(pi,
19432                                         RADIO_2056_TX_LOFT_COARSE_I |
19433                                         RADIO_2056_TX1,
19434                                         pi->calibration_cache.
19435                                         txcal_radio_regs_2G[6]);
19436                         write_radio_reg(pi,
19437                                         RADIO_2056_TX_LOFT_COARSE_Q |
19438                                         RADIO_2056_TX1,
19439                                         pi->calibration_cache.
19440                                         txcal_radio_regs_2G[7]);
19441                 } else {
19442                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
19443                                         pi->calibration_cache.
19444                                         txcal_radio_regs_2G[0]);
19445                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
19446                                         pi->calibration_cache.
19447                                         txcal_radio_regs_2G[1]);
19448                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
19449                                         pi->calibration_cache.
19450                                         txcal_radio_regs_2G[2]);
19451                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
19452                                         pi->calibration_cache.
19453                                         txcal_radio_regs_2G[3]);
19454                 }
19455
19456                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
19457                                           &pi->calibration_cache.
19458                                           rxcal_coeffs_2G);
19459         } else {
19460                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19461                         txcal_radio_regs =
19462                             pi->calibration_cache.txcal_radio_regs_5G;
19463                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19464
19465                         write_radio_reg(pi,
19466                                         RADIO_2056_TX_LOFT_FINE_I |
19467                                         RADIO_2056_TX0,
19468                                         pi->calibration_cache.
19469                                         txcal_radio_regs_5G[0]);
19470                         write_radio_reg(pi,
19471                                         RADIO_2056_TX_LOFT_FINE_Q |
19472                                         RADIO_2056_TX0,
19473                                         pi->calibration_cache.
19474                                         txcal_radio_regs_5G[1]);
19475                         write_radio_reg(pi,
19476                                         RADIO_2056_TX_LOFT_FINE_I |
19477                                         RADIO_2056_TX1,
19478                                         pi->calibration_cache.
19479                                         txcal_radio_regs_5G[2]);
19480                         write_radio_reg(pi,
19481                                         RADIO_2056_TX_LOFT_FINE_Q |
19482                                         RADIO_2056_TX1,
19483                                         pi->calibration_cache.
19484                                         txcal_radio_regs_5G[3]);
19485
19486                         write_radio_reg(pi,
19487                                         RADIO_2056_TX_LOFT_COARSE_I |
19488                                         RADIO_2056_TX0,
19489                                         pi->calibration_cache.
19490                                         txcal_radio_regs_5G[4]);
19491                         write_radio_reg(pi,
19492                                         RADIO_2056_TX_LOFT_COARSE_Q |
19493                                         RADIO_2056_TX0,
19494                                         pi->calibration_cache.
19495                                         txcal_radio_regs_5G[5]);
19496                         write_radio_reg(pi,
19497                                         RADIO_2056_TX_LOFT_COARSE_I |
19498                                         RADIO_2056_TX1,
19499                                         pi->calibration_cache.
19500                                         txcal_radio_regs_5G[6]);
19501                         write_radio_reg(pi,
19502                                         RADIO_2056_TX_LOFT_COARSE_Q |
19503                                         RADIO_2056_TX1,
19504                                         pi->calibration_cache.
19505                                         txcal_radio_regs_5G[7]);
19506                 } else {
19507                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
19508                                         pi->calibration_cache.
19509                                         txcal_radio_regs_5G[0]);
19510                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
19511                                         pi->calibration_cache.
19512                                         txcal_radio_regs_5G[1]);
19513                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
19514                                         pi->calibration_cache.
19515                                         txcal_radio_regs_5G[2]);
19516                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
19517                                         pi->calibration_cache.
19518                                         txcal_radio_regs_5G[3]);
19519                 }
19520
19521                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
19522                                           &pi->calibration_cache.
19523                                           rxcal_coeffs_5G);
19524         }
19525
19526         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19527                 for (coreNum = 0; coreNum <= 1; coreNum++) {
19528
19529                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19530                                          LOFT_FINE_I,
19531                                          txcal_radio_regs[2 * coreNum]);
19532                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19533                                          LOFT_FINE_Q,
19534                                          txcal_radio_regs[2 * coreNum + 1]);
19535
19536                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19537                                          LOFT_COARSE_I,
19538                                          txcal_radio_regs[2 * coreNum + 4]);
19539                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19540                                          LOFT_COARSE_Q,
19541                                          txcal_radio_regs[2 * coreNum + 5]);
19542                 }
19543         }
19544 }
19545
19546 void wlc_phy_antsel_init(wlc_phy_t *ppi, bool lut_init)
19547 {
19548         phy_info_t *pi = (phy_info_t *) ppi;
19549         u16 mask = 0xfc00;
19550         u32 mc = 0;
19551
19552         if (NREV_GE(pi->pubpi.phy_rev, 7))
19553                 return;
19554
19555         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19556                 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
19557
19558                 if (lut_init == false)
19559                         return;
19560
19561                 if (pi->srom_fem2g.antswctrllut == 0) {
19562                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19563                                                  1, 0x02, 16, &v0);
19564                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19565                                                  1, 0x03, 16, &v1);
19566                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19567                                                  1, 0x08, 16, &v2);
19568                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19569                                                  1, 0x0C, 16, &v3);
19570                 }
19571
19572                 if (pi->srom_fem5g.antswctrllut == 0) {
19573                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19574                                                  1, 0x12, 16, &v0);
19575                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19576                                                  1, 0x13, 16, &v1);
19577                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19578                                                  1, 0x18, 16, &v2);
19579                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19580                                                  1, 0x1C, 16, &v3);
19581                 }
19582         } else {
19583
19584                 write_phy_reg(pi, 0xc8, 0x0);
19585                 write_phy_reg(pi, 0xc9, 0x0);
19586
19587                 ai_gpiocontrol(pi->sh->sih, mask, mask, GPIO_DRV_PRIORITY);
19588
19589                 mc = R_REG(&pi->regs->maccontrol);
19590                 mc &= ~MCTL_GPOUT_SEL_MASK;
19591                 W_REG(&pi->regs->maccontrol, mc);
19592
19593                 OR_REG(&pi->regs->psm_gpio_oe, mask);
19594
19595                 AND_REG(&pi->regs->psm_gpio_out, ~mask);
19596
19597                 if (lut_init) {
19598                         write_phy_reg(pi, 0xf8, 0x02d8);
19599                         write_phy_reg(pi, 0xf9, 0x0301);
19600                         write_phy_reg(pi, 0xfa, 0x02d8);
19601                         write_phy_reg(pi, 0xfb, 0x0301);
19602                 }
19603         }
19604 }
19605
19606 u16 wlc_phy_classifier_nphy(phy_info_t *pi, u16 mask, u16 val)
19607 {
19608         u16 curr_ctl, new_ctl;
19609         bool suspended = false;
19610
19611         if (D11REV_IS(pi->sh->corerev, 16)) {
19612                 suspended =
19613                     (R_REG(&pi->regs->maccontrol) & MCTL_EN_MAC) ?
19614                     false : true;
19615                 if (!suspended)
19616                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
19617         }
19618
19619         curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
19620
19621         new_ctl = (curr_ctl & (~mask)) | (val & mask);
19622
19623         mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
19624
19625         if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
19626                 wlapi_enable_mac(pi->sh->physhim);
19627
19628         return new_ctl;
19629 }
19630
19631 static void wlc_phy_clip_det_nphy(phy_info_t *pi, u8 write, u16 *vals)
19632 {
19633
19634         if (write == 0) {
19635                 vals[0] = read_phy_reg(pi, 0x2c);
19636                 vals[1] = read_phy_reg(pi, 0x42);
19637         } else {
19638                 write_phy_reg(pi, 0x2c, vals[0]);
19639                 write_phy_reg(pi, 0x42, vals[1]);
19640         }
19641 }
19642
19643 void wlc_phy_force_rfseq_nphy(phy_info_t *pi, u8 cmd)
19644 {
19645         u16 trigger_mask, status_mask;
19646         u16 orig_RfseqCoreActv;
19647
19648         switch (cmd) {
19649         case NPHY_RFSEQ_RX2TX:
19650                 trigger_mask = NPHY_RfseqTrigger_rx2tx;
19651                 status_mask = NPHY_RfseqStatus_rx2tx;
19652                 break;
19653         case NPHY_RFSEQ_TX2RX:
19654                 trigger_mask = NPHY_RfseqTrigger_tx2rx;
19655                 status_mask = NPHY_RfseqStatus_tx2rx;
19656                 break;
19657         case NPHY_RFSEQ_RESET2RX:
19658                 trigger_mask = NPHY_RfseqTrigger_reset2rx;
19659                 status_mask = NPHY_RfseqStatus_reset2rx;
19660                 break;
19661         case NPHY_RFSEQ_UPDATEGAINH:
19662                 trigger_mask = NPHY_RfseqTrigger_updategainh;
19663                 status_mask = NPHY_RfseqStatus_updategainh;
19664                 break;
19665         case NPHY_RFSEQ_UPDATEGAINL:
19666                 trigger_mask = NPHY_RfseqTrigger_updategainl;
19667                 status_mask = NPHY_RfseqStatus_updategainl;
19668                 break;
19669         case NPHY_RFSEQ_UPDATEGAINU:
19670                 trigger_mask = NPHY_RfseqTrigger_updategainu;
19671                 status_mask = NPHY_RfseqStatus_updategainu;
19672                 break;
19673         default:
19674                 return;
19675         }
19676
19677         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
19678         or_phy_reg(pi, 0xa1,
19679                    (NPHY_RfseqMode_CoreActv_override |
19680                     NPHY_RfseqMode_Trigger_override));
19681         or_phy_reg(pi, 0xa3, trigger_mask);
19682         SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
19683         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
19684         WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
19685 }
19686
19687 static void
19688 wlc_phy_set_rfseq_nphy(phy_info_t *pi, u8 cmd, u8 *events, u8 *dlys,
19689                        u8 len)
19690 {
19691         u32 t1_offset, t2_offset;
19692         u8 ctr;
19693         u8 end_event =
19694             NREV_GE(pi->pubpi.phy_rev,
19695                     3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
19696         u8 end_dly = 1;
19697
19698         if (pi->phyhang_avoid)
19699                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19700
19701         t1_offset = cmd << 4;
19702         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
19703                                  events);
19704         t2_offset = t1_offset + 0x080;
19705         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
19706                                  dlys);
19707
19708         for (ctr = len; ctr < 16; ctr++) {
19709                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
19710                                          t1_offset + ctr, 8, &end_event);
19711                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
19712                                          t2_offset + ctr, 8, &end_dly);
19713         }
19714
19715         if (pi->phyhang_avoid)
19716                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19717 }
19718
19719 static u16 wlc_phy_read_lpf_bw_ctl_nphy(phy_info_t *pi, u16 offset)
19720 {
19721         u16 lpf_bw_ctl_val = 0;
19722         u16 rx2tx_lpf_rc_lut_offset = 0;
19723
19724         if (offset == 0) {
19725                 if (CHSPEC_IS40(pi->radio_chanspec)) {
19726                         rx2tx_lpf_rc_lut_offset = 0x159;
19727                 } else {
19728                         rx2tx_lpf_rc_lut_offset = 0x154;
19729                 }
19730         } else {
19731                 rx2tx_lpf_rc_lut_offset = offset;
19732         }
19733         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
19734                                 (u32) rx2tx_lpf_rc_lut_offset, 16,
19735                                 &lpf_bw_ctl_val);
19736
19737         lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
19738
19739         return lpf_bw_ctl_val;
19740 }
19741
19742 static void
19743 wlc_phy_rfctrl_override_nphy_rev7(phy_info_t *pi, u16 field, u16 value,
19744                                   u8 core_mask, u8 off, u8 override_id)
19745 {
19746         u8 core_num;
19747         u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
19748         u8 val_shift = 0;
19749
19750         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19751                 en_mask = field;
19752                 for (core_num = 0; core_num < 2; core_num++) {
19753                         if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
19754
19755                                 switch (field) {
19756                                 case (0x1 << 2):
19757                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19758                                         val_addr = (core_num == 0) ? 0x7a :
19759                                             0x7d;
19760                                         val_mask = (0x1 << 1);
19761                                         val_shift = 1;
19762                                         break;
19763                                 case (0x1 << 3):
19764                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19765                                         val_addr = (core_num == 0) ? 0x7a :
19766                                             0x7d;
19767                                         val_mask = (0x1 << 2);
19768                                         val_shift = 2;
19769                                         break;
19770                                 case (0x1 << 4):
19771                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19772                                         val_addr = (core_num == 0) ? 0x7a :
19773                                             0x7d;
19774                                         val_mask = (0x1 << 4);
19775                                         val_shift = 4;
19776                                         break;
19777                                 case (0x1 << 5):
19778                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19779                                         val_addr = (core_num == 0) ? 0x7a :
19780                                             0x7d;
19781                                         val_mask = (0x1 << 5);
19782                                         val_shift = 5;
19783                                         break;
19784                                 case (0x1 << 6):
19785                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19786                                         val_addr = (core_num == 0) ? 0x7a :
19787                                             0x7d;
19788                                         val_mask = (0x1 << 6);
19789                                         val_shift = 6;
19790                                         break;
19791                                 case (0x1 << 7):
19792                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19793                                         val_addr = (core_num == 0) ? 0x7a :
19794                                             0x7d;
19795                                         val_mask = (0x1 << 7);
19796                                         val_shift = 7;
19797                                         break;
19798                                 case (0x1 << 10):
19799                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19800                                         val_addr = (core_num == 0) ? 0xf8 :
19801                                             0xfa;
19802                                         val_mask = (0x7 << 4);
19803                                         val_shift = 4;
19804                                         break;
19805                                 case (0x1 << 11):
19806                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19807                                         val_addr = (core_num == 0) ? 0x7b :
19808                                             0x7e;
19809                                         val_mask = (0xffff << 0);
19810                                         val_shift = 0;
19811                                         break;
19812                                 case (0x1 << 12):
19813                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19814                                         val_addr = (core_num == 0) ? 0x7c :
19815                                             0x7f;
19816                                         val_mask = (0xffff << 0);
19817                                         val_shift = 0;
19818                                         break;
19819                                 case (0x3 << 13):
19820                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19821                                         val_addr = (core_num == 0) ? 0x348 :
19822                                             0x349;
19823                                         val_mask = (0xff << 0);
19824                                         val_shift = 0;
19825                                         break;
19826                                 case (0x1 << 13):
19827                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19828                                         val_addr = (core_num == 0) ? 0x348 :
19829                                             0x349;
19830                                         val_mask = (0xf << 0);
19831                                         val_shift = 0;
19832                                         break;
19833                                 default:
19834                                         addr = 0xffff;
19835                                         break;
19836                                 }
19837                         } else if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID1) {
19838
19839                                 switch (field) {
19840                                 case (0x1 << 1):
19841                                         en_addr = (core_num == 0) ? 0x342 :
19842                                             0x343;
19843                                         val_addr = (core_num == 0) ? 0x340 :
19844                                             0x341;
19845                                         val_mask = (0x1 << 1);
19846                                         val_shift = 1;
19847                                         break;
19848                                 case (0x1 << 3):
19849                                         en_addr = (core_num == 0) ? 0x342 :
19850                                             0x343;
19851                                         val_addr = (core_num == 0) ? 0x340 :
19852                                             0x341;
19853                                         val_mask = (0x1 << 3);
19854                                         val_shift = 3;
19855                                         break;
19856                                 case (0x1 << 5):
19857                                         en_addr = (core_num == 0) ? 0x342 :
19858                                             0x343;
19859                                         val_addr = (core_num == 0) ? 0x340 :
19860                                             0x341;
19861                                         val_mask = (0x1 << 5);
19862                                         val_shift = 5;
19863                                         break;
19864                                 case (0x1 << 4):
19865                                         en_addr = (core_num == 0) ? 0x342 :
19866                                             0x343;
19867                                         val_addr = (core_num == 0) ? 0x340 :
19868                                             0x341;
19869                                         val_mask = (0x1 << 4);
19870                                         val_shift = 4;
19871                                         break;
19872                                 case (0x1 << 2):
19873
19874                                         en_addr = (core_num == 0) ? 0x342 :
19875                                             0x343;
19876                                         val_addr = (core_num == 0) ? 0x340 :
19877                                             0x341;
19878                                         val_mask = (0x1 << 2);
19879                                         val_shift = 2;
19880                                         break;
19881                                 case (0x1 << 7):
19882
19883                                         en_addr = (core_num == 0) ? 0x342 :
19884                                             0x343;
19885                                         val_addr = (core_num == 0) ? 0x340 :
19886                                             0x341;
19887                                         val_mask = (0x7 << 8);
19888                                         val_shift = 8;
19889                                         break;
19890                                 case (0x1 << 11):
19891                                         en_addr = (core_num == 0) ? 0x342 :
19892                                             0x343;
19893                                         val_addr = (core_num == 0) ? 0x340 :
19894                                             0x341;
19895                                         val_mask = (0x1 << 14);
19896                                         val_shift = 14;
19897                                         break;
19898                                 case (0x1 << 10):
19899                                         en_addr = (core_num == 0) ? 0x342 :
19900                                             0x343;
19901                                         val_addr = (core_num == 0) ? 0x340 :
19902                                             0x341;
19903                                         val_mask = (0x1 << 13);
19904                                         val_shift = 13;
19905                                         break;
19906                                 case (0x1 << 9):
19907                                         en_addr = (core_num == 0) ? 0x342 :
19908                                             0x343;
19909                                         val_addr = (core_num == 0) ? 0x340 :
19910                                             0x341;
19911                                         val_mask = (0x1 << 12);
19912                                         val_shift = 12;
19913                                         break;
19914                                 case (0x1 << 8):
19915                                         en_addr = (core_num == 0) ? 0x342 :
19916                                             0x343;
19917                                         val_addr = (core_num == 0) ? 0x340 :
19918                                             0x341;
19919                                         val_mask = (0x1 << 11);
19920                                         val_shift = 11;
19921                                         break;
19922                                 case (0x1 << 6):
19923                                         en_addr = (core_num == 0) ? 0x342 :
19924                                             0x343;
19925                                         val_addr = (core_num == 0) ? 0x340 :
19926                                             0x341;
19927                                         val_mask = (0x1 << 6);
19928                                         val_shift = 6;
19929                                         break;
19930                                 case (0x1 << 0):
19931                                         en_addr = (core_num == 0) ? 0x342 :
19932                                             0x343;
19933                                         val_addr = (core_num == 0) ? 0x340 :
19934                                             0x341;
19935                                         val_mask = (0x1 << 0);
19936                                         val_shift = 0;
19937                                         break;
19938                                 default:
19939                                         addr = 0xffff;
19940                                         break;
19941                                 }
19942                         } else if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID2) {
19943
19944                                 switch (field) {
19945                                 case (0x1 << 3):
19946                                         en_addr = (core_num == 0) ? 0x346 :
19947                                             0x347;
19948                                         val_addr = (core_num == 0) ? 0x344 :
19949                                             0x345;
19950                                         val_mask = (0x1 << 3);
19951                                         val_shift = 3;
19952                                         break;
19953                                 case (0x1 << 1):
19954                                         en_addr = (core_num == 0) ? 0x346 :
19955                                             0x347;
19956                                         val_addr = (core_num == 0) ? 0x344 :
19957                                             0x345;
19958                                         val_mask = (0x1 << 1);
19959                                         val_shift = 1;
19960                                         break;
19961                                 case (0x1 << 0):
19962                                         en_addr = (core_num == 0) ? 0x346 :
19963                                             0x347;
19964                                         val_addr = (core_num == 0) ? 0x344 :
19965                                             0x345;
19966                                         val_mask = (0x1 << 0);
19967                                         val_shift = 0;
19968                                         break;
19969                                 case (0x1 << 2):
19970                                         en_addr = (core_num == 0) ? 0x346 :
19971                                             0x347;
19972                                         val_addr = (core_num == 0) ? 0x344 :
19973                                             0x345;
19974                                         val_mask = (0x1 << 2);
19975                                         val_shift = 2;
19976                                         break;
19977                                 case (0x1 << 4):
19978                                         en_addr = (core_num == 0) ? 0x346 :
19979                                             0x347;
19980                                         val_addr = (core_num == 0) ? 0x344 :
19981                                             0x345;
19982                                         val_mask = (0x1 << 4);
19983                                         val_shift = 4;
19984                                         break;
19985                                 default:
19986                                         addr = 0xffff;
19987                                         break;
19988                                 }
19989                         }
19990
19991                         if (off) {
19992                                 and_phy_reg(pi, en_addr, ~en_mask);
19993                                 and_phy_reg(pi, val_addr, ~val_mask);
19994                         } else {
19995
19996                                 if ((core_mask == 0)
19997                                     || (core_mask & (1 << core_num))) {
19998                                         or_phy_reg(pi, en_addr, en_mask);
19999
20000                                         if (addr != 0xffff) {
20001                                                 mod_phy_reg(pi, val_addr,
20002                                                             val_mask,
20003                                                             (value <<
20004                                                              val_shift));
20005                                         }
20006                                 }
20007                         }
20008                 }
20009         }
20010 }
20011
20012 static void
20013 wlc_phy_rfctrl_override_nphy(phy_info_t *pi, u16 field, u16 value,
20014                              u8 core_mask, u8 off)
20015 {
20016         u8 core_num;
20017         u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
20018             0, val_mask = 0;
20019         u8 shift = 0, val_shift = 0;
20020
20021         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
20022
20023                 en_mask = field;
20024                 for (core_num = 0; core_num < 2; core_num++) {
20025
20026                         switch (field) {
20027                         case (0x1 << 1):
20028                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20029                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20030                                 val_mask = (0x1 << 0);
20031                                 val_shift = 0;
20032                                 break;
20033                         case (0x1 << 2):
20034                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20035                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20036                                 val_mask = (0x1 << 1);
20037                                 val_shift = 1;
20038                                 break;
20039                         case (0x1 << 3):
20040                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20041                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20042                                 val_mask = (0x1 << 2);
20043                                 val_shift = 2;
20044                                 break;
20045                         case (0x1 << 4):
20046                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20047                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20048                                 val_mask = (0x1 << 4);
20049                                 val_shift = 4;
20050                                 break;
20051                         case (0x1 << 5):
20052                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20053                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20054                                 val_mask = (0x1 << 5);
20055                                 val_shift = 5;
20056                                 break;
20057                         case (0x1 << 6):
20058                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20059                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20060                                 val_mask = (0x1 << 6);
20061                                 val_shift = 6;
20062                                 break;
20063                         case (0x1 << 7):
20064                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20065                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20066                                 val_mask = (0x1 << 7);
20067                                 val_shift = 7;
20068                                 break;
20069                         case (0x1 << 8):
20070                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20071                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20072                                 val_mask = (0x7 << 8);
20073                                 val_shift = 8;
20074                                 break;
20075                         case (0x1 << 11):
20076                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20077                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20078                                 val_mask = (0x7 << 13);
20079                                 val_shift = 13;
20080                                 break;
20081
20082                         case (0x1 << 9):
20083                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20084                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
20085                                 val_mask = (0x7 << 0);
20086                                 val_shift = 0;
20087                                 break;
20088
20089                         case (0x1 << 10):
20090                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20091                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
20092                                 val_mask = (0x7 << 4);
20093                                 val_shift = 4;
20094                                 break;
20095
20096                         case (0x1 << 12):
20097                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20098                                 val_addr = (core_num == 0) ? 0x7b : 0x7e;
20099                                 val_mask = (0xffff << 0);
20100                                 val_shift = 0;
20101                                 break;
20102                         case (0x1 << 13):
20103                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20104                                 val_addr = (core_num == 0) ? 0x7c : 0x7f;
20105                                 val_mask = (0xffff << 0);
20106                                 val_shift = 0;
20107                                 break;
20108                         case (0x1 << 14):
20109                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20110                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
20111                                 val_mask = (0x3 << 6);
20112                                 val_shift = 6;
20113                                 break;
20114                         case (0x1 << 0):
20115                                 en_addr = (core_num == 0) ? 0xe5 : 0xe6;
20116                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
20117                                 val_mask = (0x1 << 15);
20118                                 val_shift = 15;
20119                                 break;
20120                         default:
20121                                 addr = 0xffff;
20122                                 break;
20123                         }
20124
20125                         if (off) {
20126                                 and_phy_reg(pi, en_addr, ~en_mask);
20127                                 and_phy_reg(pi, val_addr, ~val_mask);
20128                         } else {
20129
20130                                 if ((core_mask == 0)
20131                                     || (core_mask & (1 << core_num))) {
20132                                         or_phy_reg(pi, en_addr, en_mask);
20133
20134                                         if (addr != 0xffff) {
20135                                                 mod_phy_reg(pi, val_addr,
20136                                                             val_mask,
20137                                                             (value <<
20138                                                              val_shift));
20139                                         }
20140                                 }
20141                         }
20142                 }
20143         } else {
20144
20145                 if (off) {
20146                         and_phy_reg(pi, 0xec, ~field);
20147                         value = 0x0;
20148                 } else {
20149                         or_phy_reg(pi, 0xec, field);
20150                 }
20151
20152                 for (core_num = 0; core_num < 2; core_num++) {
20153
20154                         switch (field) {
20155                         case (0x1 << 1):
20156                         case (0x1 << 9):
20157                         case (0x1 << 12):
20158                         case (0x1 << 13):
20159                         case (0x1 << 14):
20160                                 addr = 0x78;
20161
20162                                 core_mask = 0x1;
20163                                 break;
20164                         case (0x1 << 2):
20165                         case (0x1 << 3):
20166                         case (0x1 << 4):
20167                         case (0x1 << 5):
20168                         case (0x1 << 6):
20169                         case (0x1 << 7):
20170                         case (0x1 << 8):
20171                                 addr = (core_num == 0) ? 0x7a : 0x7d;
20172                                 break;
20173                         case (0x1 << 10):
20174                                 addr = (core_num == 0) ? 0x7b : 0x7e;
20175                                 break;
20176                         case (0x1 << 11):
20177                                 addr = (core_num == 0) ? 0x7c : 0x7f;
20178                                 break;
20179                         default:
20180                                 addr = 0xffff;
20181                         }
20182
20183                         switch (field) {
20184                         case (0x1 << 1):
20185                                 mask = (0x7 << 3);
20186                                 shift = 3;
20187                                 break;
20188                         case (0x1 << 9):
20189                                 mask = (0x1 << 2);
20190                                 shift = 2;
20191                                 break;
20192                         case (0x1 << 12):
20193                                 mask = (0x1 << 8);
20194                                 shift = 8;
20195                                 break;
20196                         case (0x1 << 13):
20197                                 mask = (0x1 << 9);
20198                                 shift = 9;
20199                                 break;
20200                         case (0x1 << 14):
20201                                 mask = (0xf << 12);
20202                                 shift = 12;
20203                                 break;
20204                         case (0x1 << 2):
20205                                 mask = (0x1 << 0);
20206                                 shift = 0;
20207                                 break;
20208                         case (0x1 << 3):
20209                                 mask = (0x1 << 1);
20210                                 shift = 1;
20211                                 break;
20212                         case (0x1 << 4):
20213                                 mask = (0x1 << 2);
20214                                 shift = 2;
20215                                 break;
20216                         case (0x1 << 5):
20217                                 mask = (0x3 << 4);
20218                                 shift = 4;
20219                                 break;
20220                         case (0x1 << 6):
20221                                 mask = (0x3 << 6);
20222                                 shift = 6;
20223                                 break;
20224                         case (0x1 << 7):
20225                                 mask = (0x1 << 8);
20226                                 shift = 8;
20227                                 break;
20228                         case (0x1 << 8):
20229                                 mask = (0x1 << 9);
20230                                 shift = 9;
20231                                 break;
20232                         case (0x1 << 10):
20233                                 mask = 0x1fff;
20234                                 shift = 0x0;
20235                                 break;
20236                         case (0x1 << 11):
20237                                 mask = 0x1fff;
20238                                 shift = 0x0;
20239                                 break;
20240                         default:
20241                                 mask = 0x0;
20242                                 shift = 0x0;
20243                                 break;
20244                         }
20245
20246                         if ((addr != 0xffff) && (core_mask & (1 << core_num))) {
20247                                 mod_phy_reg(pi, addr, mask, (value << shift));
20248                         }
20249                 }
20250
20251                 or_phy_reg(pi, 0xec, (0x1 << 0));
20252                 or_phy_reg(pi, 0x78, (0x1 << 0));
20253                 udelay(1);
20254                 and_phy_reg(pi, 0xec, ~(0x1 << 0));
20255         }
20256 }
20257
20258 static void
20259 wlc_phy_rfctrl_override_1tomany_nphy(phy_info_t *pi, u16 cmd, u16 value,
20260                                      u8 core_mask, u8 off)
20261 {
20262         u16 rfmxgain = 0, lpfgain = 0;
20263         u16 tgain = 0;
20264
20265         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20266
20267                 switch (cmd) {
20268                 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
20269                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
20270                                                           value, core_mask, off,
20271                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20272                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), value,
20273                                                           core_mask, off,
20274                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20275                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), value,
20276                                                           core_mask, off,
20277                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20278                         break;
20279                 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
20280                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
20281                                                           value, core_mask, off,
20282                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20283                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), value,
20284                                                           core_mask, off,
20285                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20286                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), value,
20287                                                           core_mask, off,
20288                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20289                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), value,
20290                                                           core_mask, off,
20291                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
20292                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0,
20293                                                           core_mask, off,
20294                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20295                         break;
20296                 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
20297                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
20298                                                           value, core_mask, off,
20299                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20300                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), value,
20301                                                           core_mask, off,
20302                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20303                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), value,
20304                                                           core_mask, off,
20305                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
20306                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), value,
20307                                                           core_mask, off,
20308                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
20309                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1,
20310                                                           core_mask, off,
20311                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20312                         break;
20313                 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
20314                         rfmxgain = value & 0x000ff;
20315                         lpfgain = value & 0x0ff00;
20316                         lpfgain = lpfgain >> 8;
20317
20318                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
20319                                                           rfmxgain, core_mask,
20320                                                           off,
20321                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20322                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x3 << 13),
20323                                                           lpfgain, core_mask,
20324                                                           off,
20325                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20326                         break;
20327                 case NPHY_REV7_RfctrlOverride_cmd_txgain:
20328                         tgain = value & 0x7fff;
20329                         lpfgain = value & 0x8000;
20330                         lpfgain = lpfgain >> 14;
20331
20332                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
20333                                                           tgain, core_mask, off,
20334                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20335                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 13),
20336                                                           lpfgain, core_mask,
20337                                                           off,
20338                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20339                         break;
20340                 }
20341         }
20342 }
20343
20344 static void
20345 wlc_phy_scale_offset_rssi_nphy(phy_info_t *pi, u16 scale, s8 offset,
20346                                u8 coresel, u8 rail, u8 rssi_type)
20347 {
20348         u16 valuetostuff;
20349
20350         offset = (offset > NPHY_RSSICAL_MAXREAD) ?
20351             NPHY_RSSICAL_MAXREAD : offset;
20352         offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
20353             -NPHY_RSSICAL_MAXREAD - 1 : offset;
20354
20355         valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
20356
20357         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20358              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20359             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20360                 write_phy_reg(pi, 0x1a6, valuetostuff);
20361         }
20362         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20363              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20364             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20365                 write_phy_reg(pi, 0x1ac, valuetostuff);
20366         }
20367         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20368              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20369             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20370                 write_phy_reg(pi, 0x1b2, valuetostuff);
20371         }
20372         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20373              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20374             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20375                 write_phy_reg(pi, 0x1b8, valuetostuff);
20376         }
20377
20378         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20379              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20380             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20381                 write_phy_reg(pi, 0x1a4, valuetostuff);
20382         }
20383         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20384              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20385             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20386                 write_phy_reg(pi, 0x1aa, valuetostuff);
20387         }
20388         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20389              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20390             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20391                 write_phy_reg(pi, 0x1b0, valuetostuff);
20392         }
20393         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20394              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20395             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20396                 write_phy_reg(pi, 0x1b6, valuetostuff);
20397         }
20398
20399         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20400              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20401             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20402                 write_phy_reg(pi, 0x1a5, valuetostuff);
20403         }
20404         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20405              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20406             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20407                 write_phy_reg(pi, 0x1ab, valuetostuff);
20408         }
20409         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20410              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20411             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20412                 write_phy_reg(pi, 0x1b1, valuetostuff);
20413         }
20414         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20415              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20416             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20417                 write_phy_reg(pi, 0x1b7, valuetostuff);
20418         }
20419
20420         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20421              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20422             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20423                 write_phy_reg(pi, 0x1a7, valuetostuff);
20424         }
20425         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20426              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20427             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20428                 write_phy_reg(pi, 0x1ad, valuetostuff);
20429         }
20430         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20431              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20432             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20433                 write_phy_reg(pi, 0x1b3, valuetostuff);
20434         }
20435         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20436              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20437             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20438                 write_phy_reg(pi, 0x1b9, valuetostuff);
20439         }
20440
20441         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20442              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20443             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20444                 write_phy_reg(pi, 0x1a8, valuetostuff);
20445         }
20446         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20447              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20448             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20449                 write_phy_reg(pi, 0x1ae, valuetostuff);
20450         }
20451         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20452              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20453             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20454                 write_phy_reg(pi, 0x1b4, valuetostuff);
20455         }
20456         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20457              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20458             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20459                 write_phy_reg(pi, 0x1ba, valuetostuff);
20460         }
20461
20462         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20463              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20464             (rssi_type == NPHY_RSSI_SEL_TSSI_2G)) {
20465                 write_phy_reg(pi, 0x1a9, valuetostuff);
20466         }
20467         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20468              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20469             (rssi_type == NPHY_RSSI_SEL_TSSI_2G)) {
20470                 write_phy_reg(pi, 0x1b5, valuetostuff);
20471         }
20472
20473         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20474              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20475             (rssi_type == NPHY_RSSI_SEL_TSSI_5G)) {
20476                 write_phy_reg(pi, 0x1af, valuetostuff);
20477         }
20478         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20479              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20480             (rssi_type == NPHY_RSSI_SEL_TSSI_5G)) {
20481                 write_phy_reg(pi, 0x1bb, valuetostuff);
20482         }
20483 }
20484
20485 void wlc_phy_rssisel_nphy(phy_info_t *pi, u8 core_code, u8 rssi_type)
20486 {
20487         u16 mask, val;
20488         u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
20489             startseq;
20490         u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
20491             rfctrlovr_trigger_val;
20492         u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
20493         u16 rfctrlcmd_val, rfctrlovr_val;
20494         u8 core;
20495
20496         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20497                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
20498                         mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
20499                         mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
20500
20501                         mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
20502                         mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
20503
20504                         mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
20505                         mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
20506
20507                         mask = (0x1 << 2) |
20508                             (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
20509                         mod_phy_reg(pi, 0xf9, mask, 0);
20510                         mod_phy_reg(pi, 0xfb, mask, 0);
20511
20512                 } else {
20513                         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20514                                 if (core_code == RADIO_MIMO_CORESEL_CORE1
20515                                     && core == PHY_CORE_1)
20516                                         continue;
20517                                 else if (core_code == RADIO_MIMO_CORESEL_CORE2
20518                                          && core == PHY_CORE_0)
20519                                         continue;
20520
20521                                 mod_phy_reg(pi, (core == PHY_CORE_0) ?
20522                                             0x8f : 0xa5, (0x1 << 9), 1 << 9);
20523
20524                                 if (rssi_type == NPHY_RSSI_SEL_W1 ||
20525                                     rssi_type == NPHY_RSSI_SEL_W2 ||
20526                                     rssi_type == NPHY_RSSI_SEL_NB) {
20527
20528                                         mod_phy_reg(pi,
20529                                                     (core ==
20530                                                      PHY_CORE_0) ? 0xa6 : 0xa7,
20531                                                     (0x3 << 8), 0);
20532
20533                                         mask = (0x1 << 2) |
20534                                             (0x1 << 3) |
20535                                             (0x1 << 4) | (0x1 << 5);
20536                                         mod_phy_reg(pi,
20537                                                     (core ==
20538                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
20539                                                     mask, 0);
20540
20541                                         if (rssi_type == NPHY_RSSI_SEL_W1) {
20542                                                 if (CHSPEC_IS5G
20543                                                     (pi->radio_chanspec)) {
20544                                                         mask = (0x1 << 2);
20545                                                         val = 1 << 2;
20546                                                 } else {
20547                                                         mask = (0x1 << 3);
20548                                                         val = 1 << 3;
20549                                                 }
20550                                         } else if (rssi_type ==
20551                                                    NPHY_RSSI_SEL_W2) {
20552                                                 mask = (0x1 << 4);
20553                                                 val = 1 << 4;
20554                                         } else {
20555                                                 mask = (0x1 << 5);
20556                                                 val = 1 << 5;
20557                                         }
20558                                         mod_phy_reg(pi,
20559                                                     (core ==
20560                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
20561                                                     mask, val);
20562
20563                                         mask = (0x1 << 5);
20564                                         val = 1 << 5;
20565                                         mod_phy_reg(pi, (core == PHY_CORE_0) ?
20566                                                     0xe5 : 0xe6, mask, val);
20567                                 } else {
20568                                         if (rssi_type == NPHY_RSSI_SEL_TBD) {
20569
20570                                                 mask = (0x3 << 8);
20571                                                 val = 1 << 8;
20572                                                 mod_phy_reg(pi,
20573                                                             (core ==
20574                                                              PHY_CORE_0) ? 0xa6
20575                                                             : 0xa7, mask, val);
20576                                                 mask = (0x3 << 10);
20577                                                 val = 1 << 10;
20578                                                 mod_phy_reg(pi,
20579                                                             (core ==
20580                                                              PHY_CORE_0) ? 0xa6
20581                                                             : 0xa7, mask, val);
20582                                         } else if (rssi_type ==
20583                                                    NPHY_RSSI_SEL_IQ) {
20584
20585                                                 mask = (0x3 << 8);
20586                                                 val = 2 << 8;
20587                                                 mod_phy_reg(pi,
20588                                                             (core ==
20589                                                              PHY_CORE_0) ? 0xa6
20590                                                             : 0xa7, mask, val);
20591                                                 mask = (0x3 << 10);
20592                                                 val = 2 << 10;
20593                                                 mod_phy_reg(pi,
20594                                                             (core ==
20595                                                              PHY_CORE_0) ? 0xa6
20596                                                             : 0xa7, mask, val);
20597                                         } else {
20598
20599                                                 mask = (0x3 << 8);
20600                                                 val = 3 << 8;
20601                                                 mod_phy_reg(pi,
20602                                                             (core ==
20603                                                              PHY_CORE_0) ? 0xa6
20604                                                             : 0xa7, mask, val);
20605                                                 mask = (0x3 << 10);
20606                                                 val = 3 << 10;
20607                                                 mod_phy_reg(pi,
20608                                                             (core ==
20609                                                              PHY_CORE_0) ? 0xa6
20610                                                             : 0xa7, mask, val);
20611
20612                                                 if (PHY_IPA(pi)) {
20613                                                         if (NREV_GE
20614                                                             (pi->pubpi.phy_rev,
20615                                                              7)) {
20616
20617                                                                 write_radio_reg
20618                                                                     (pi,
20619                                                                      ((core ==
20620                                                                        PHY_CORE_0)
20621                                                                       ?
20622                                                                       RADIO_2057_TX0_TX_SSI_MUX
20623                                                                       :
20624                                                                       RADIO_2057_TX1_TX_SSI_MUX),
20625                                                                      (CHSPEC_IS5G
20626                                                                       (pi->
20627                                                                        radio_chanspec)
20628                                                                       ? 0xc :
20629                                                                       0xe));
20630                                                         } else {
20631                                                                 write_radio_reg
20632                                                                     (pi,
20633                                                                      RADIO_2056_TX_TX_SSI_MUX
20634                                                                      |
20635                                                                      ((core ==
20636                                                                        PHY_CORE_0)
20637                                                                       ?
20638                                                                       RADIO_2056_TX0
20639                                                                       :
20640                                                                       RADIO_2056_TX1),
20641                                                                      (CHSPEC_IS5G
20642                                                                       (pi->
20643                                                                        radio_chanspec)
20644                                                                       ? 0xc :
20645                                                                       0xe));
20646                                                         }
20647                                                 } else {
20648
20649                                                         if (NREV_GE
20650                                                             (pi->pubpi.phy_rev,
20651                                                              7)) {
20652                                                                 write_radio_reg
20653                                                                     (pi,
20654                                                                      ((core ==
20655                                                                        PHY_CORE_0)
20656                                                                       ?
20657                                                                       RADIO_2057_TX0_TX_SSI_MUX
20658                                                                       :
20659                                                                       RADIO_2057_TX1_TX_SSI_MUX),
20660                                                                      0x11);
20661
20662                                                                 if (pi->pubpi.
20663                                                                     radioid ==
20664                                                                     BCM2057_ID)
20665                                                                         write_radio_reg
20666                                                                             (pi,
20667                                                                              RADIO_2057_IQTEST_SEL_PU,
20668                                                                              0x1);
20669
20670                                                         } else {
20671                                                                 write_radio_reg
20672                                                                     (pi,
20673                                                                      RADIO_2056_TX_TX_SSI_MUX
20674                                                                      |
20675                                                                      ((core ==
20676                                                                        PHY_CORE_0)
20677                                                                       ?
20678                                                                       RADIO_2056_TX0
20679                                                                       :
20680                                                                       RADIO_2056_TX1),
20681                                                                      0x11);
20682                                                         }
20683                                                 }
20684
20685                                                 afectrlovr_rssi_val = 1 << 9;
20686                                                 mod_phy_reg(pi,
20687                                                             (core ==
20688                                                              PHY_CORE_0) ? 0x8f
20689                                                             : 0xa5, (0x1 << 9),
20690                                                             afectrlovr_rssi_val);
20691                                         }
20692                                 }
20693                         }
20694                 }
20695         } else {
20696
20697                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
20698                     (rssi_type == NPHY_RSSI_SEL_W2) ||
20699                     (rssi_type == NPHY_RSSI_SEL_NB)) {
20700
20701                         val = 0x0;
20702                 } else if (rssi_type == NPHY_RSSI_SEL_TBD) {
20703
20704                         val = 0x1;
20705                 } else if (rssi_type == NPHY_RSSI_SEL_IQ) {
20706
20707                         val = 0x2;
20708                 } else {
20709
20710                         val = 0x3;
20711                 }
20712                 mask = ((0x3 << 12) | (0x3 << 14));
20713                 val = (val << 12) | (val << 14);
20714                 mod_phy_reg(pi, 0xa6, mask, val);
20715                 mod_phy_reg(pi, 0xa7, mask, val);
20716
20717                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
20718                     (rssi_type == NPHY_RSSI_SEL_W2) ||
20719                     (rssi_type == NPHY_RSSI_SEL_NB)) {
20720                         if (rssi_type == NPHY_RSSI_SEL_W1) {
20721                                 val = 0x1;
20722                         }
20723                         if (rssi_type == NPHY_RSSI_SEL_W2) {
20724                                 val = 0x2;
20725                         }
20726                         if (rssi_type == NPHY_RSSI_SEL_NB) {
20727                                 val = 0x3;
20728                         }
20729                         mask = (0x3 << 4);
20730                         val = (val << 4);
20731                         mod_phy_reg(pi, 0x7a, mask, val);
20732                         mod_phy_reg(pi, 0x7d, mask, val);
20733                 }
20734
20735                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
20736                         afectrlovr_rssi_val = 0;
20737                         rfctrlcmd_rxen_val = 0;
20738                         rfctrlcmd_coresel_val = 0;
20739                         rfctrlovr_rssi_val = 0;
20740                         rfctrlovr_rxen_val = 0;
20741                         rfctrlovr_coresel_val = 0;
20742                         rfctrlovr_trigger_val = 0;
20743                         startseq = 0;
20744                 } else {
20745                         afectrlovr_rssi_val = 1;
20746                         rfctrlcmd_rxen_val = 1;
20747                         rfctrlcmd_coresel_val = core_code;
20748                         rfctrlovr_rssi_val = 1;
20749                         rfctrlovr_rxen_val = 1;
20750                         rfctrlovr_coresel_val = 1;
20751                         rfctrlovr_trigger_val = 1;
20752                         startseq = 1;
20753                 }
20754
20755                 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
20756                 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
20757                                        12) | (afectrlovr_rssi_val << 13);
20758                 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
20759                             afectrlovr_rssi_val);
20760
20761                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
20762                     (rssi_type == NPHY_RSSI_SEL_W2) ||
20763                     (rssi_type == NPHY_RSSI_SEL_NB)) {
20764                         rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
20765                         rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
20766                             (rfctrlcmd_coresel_val << 3);
20767
20768                         rfctrlovr_mask = ((0x1 << 5) |
20769                                           (0x1 << 12) |
20770                                           (0x1 << 1) | (0x1 << 0));
20771                         rfctrlovr_val = (rfctrlovr_rssi_val <<
20772                                          5) |
20773                             (rfctrlovr_rxen_val << 12) |
20774                             (rfctrlovr_coresel_val << 1) |
20775                             (rfctrlovr_trigger_val << 0);
20776
20777                         mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
20778                         mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
20779
20780                         mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
20781                         udelay(20);
20782
20783                         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
20784                 }
20785         }
20786 }
20787
20788 int
20789 wlc_phy_poll_rssi_nphy(phy_info_t *pi, u8 rssi_type, s32 *rssi_buf,
20790                        u8 nsamps)
20791 {
20792         s16 rssi0, rssi1;
20793         u16 afectrlCore1_save = 0;
20794         u16 afectrlCore2_save = 0;
20795         u16 afectrlOverride1_save = 0;
20796         u16 afectrlOverride2_save = 0;
20797         u16 rfctrlOverrideAux0_save = 0;
20798         u16 rfctrlOverrideAux1_save = 0;
20799         u16 rfctrlMiscReg1_save = 0;
20800         u16 rfctrlMiscReg2_save = 0;
20801         u16 rfctrlcmd_save = 0;
20802         u16 rfctrloverride_save = 0;
20803         u16 rfctrlrssiothers1_save = 0;
20804         u16 rfctrlrssiothers2_save = 0;
20805         s8 tmp_buf[4];
20806         u8 ctr = 0, samp = 0;
20807         s32 rssi_out_val;
20808         u16 gpiosel_orig;
20809
20810         afectrlCore1_save = read_phy_reg(pi, 0xa6);
20811         afectrlCore2_save = read_phy_reg(pi, 0xa7);
20812         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20813                 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
20814                 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
20815                 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
20816                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
20817                 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
20818                 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
20819         } else {
20820                 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
20821                 rfctrlcmd_save = read_phy_reg(pi, 0x78);
20822                 rfctrloverride_save = read_phy_reg(pi, 0xec);
20823                 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
20824                 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
20825         }
20826
20827         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
20828
20829         gpiosel_orig = read_phy_reg(pi, 0xca);
20830         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
20831                 write_phy_reg(pi, 0xca, 5);
20832         }
20833
20834         for (ctr = 0; ctr < 4; ctr++) {
20835                 rssi_buf[ctr] = 0;
20836         }
20837
20838         for (samp = 0; samp < nsamps; samp++) {
20839                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
20840                         rssi0 = read_phy_reg(pi, 0x1c9);
20841                         rssi1 = read_phy_reg(pi, 0x1ca);
20842                 } else {
20843                         rssi0 = read_phy_reg(pi, 0x219);
20844                         rssi1 = read_phy_reg(pi, 0x21a);
20845                 }
20846
20847                 ctr = 0;
20848                 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
20849                 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
20850                 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
20851                 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
20852
20853                 for (ctr = 0; ctr < 4; ctr++) {
20854                         rssi_buf[ctr] += tmp_buf[ctr];
20855                 }
20856
20857         }
20858
20859         rssi_out_val = rssi_buf[3] & 0xff;
20860         rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
20861         rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
20862         rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
20863
20864         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
20865                 write_phy_reg(pi, 0xca, gpiosel_orig);
20866         }
20867
20868         write_phy_reg(pi, 0xa6, afectrlCore1_save);
20869         write_phy_reg(pi, 0xa7, afectrlCore2_save);
20870         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20871                 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
20872                 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
20873                 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
20874                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
20875                 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
20876                 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
20877         } else {
20878                 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
20879                 write_phy_reg(pi, 0x78, rfctrlcmd_save);
20880                 write_phy_reg(pi, 0xec, rfctrloverride_save);
20881                 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
20882                 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
20883         }
20884
20885         return rssi_out_val;
20886 }
20887
20888 s16 wlc_phy_tempsense_nphy(phy_info_t *pi)
20889 {
20890         u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
20891         u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
20892         u16 pwrdet_rxtx_core1_save;
20893         u16 pwrdet_rxtx_core2_save;
20894         u16 afectrlCore1_save;
20895         u16 afectrlCore2_save;
20896         u16 afectrlOverride_save;
20897         u16 afectrlOverride2_save;
20898         u16 pd_pll_ts_save;
20899         u16 gpioSel_save;
20900         s32 radio_temp[4];
20901         s32 radio_temp2[4];
20902         u16 syn_tempprocsense_save;
20903         s16 offset = 0;
20904
20905         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20906                 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
20907                 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
20908                 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
20909                 s32 auxADC_Vl;
20910                 u16 RfctrlOverride5_save, RfctrlOverride6_save;
20911                 u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
20912                 u16 RSSIMultCoef0QPowerDet_save;
20913                 u16 tempsense_Rcal;
20914
20915                 syn_tempprocsense_save =
20916                     read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
20917
20918                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
20919                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
20920                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
20921                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
20922                 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
20923                 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
20924                 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
20925                 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
20926                 RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
20927
20928                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
20929                                         &auxADC_Vmid_save);
20930                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
20931                                         &auxADC_Av_save);
20932                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
20933                                         &auxADC_rssi_ctrlL_save);
20934                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
20935                                         &auxADC_rssi_ctrlH_save);
20936
20937                 write_phy_reg(pi, 0x1ae, 0x0);
20938
20939                 auxADC_rssi_ctrlL = 0x0;
20940                 auxADC_rssi_ctrlH = 0x20;
20941                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
20942                                          &auxADC_rssi_ctrlL);
20943                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
20944                                          &auxADC_rssi_ctrlH);
20945
20946                 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
20947
20948                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
20949                                 tempsense_Rcal | 0x01);
20950
20951                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
20952                                                   1, 0, 0,
20953                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
20954                 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
20955                 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
20956                 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
20957                 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
20958
20959                 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
20960                 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
20961                 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
20962                 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
20963                 udelay(5);
20964                 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
20965                 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
20966                 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
20967                 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
20968                 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
20969                 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
20970                 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
20971                 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
20972                 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
20973                 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
20974
20975                 auxADC_Vmid = 0xA3;
20976                 auxADC_Av = 0x0;
20977                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
20978                                          &auxADC_Vmid);
20979                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
20980                                          &auxADC_Av);
20981
20982                 udelay(3);
20983
20984                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
20985                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
20986                                 tempsense_Rcal | 0x03);
20987
20988                 udelay(5);
20989                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
20990
20991                 auxADC_Av = 0x7;
20992                 if (radio_temp[1] + radio_temp2[1] < -30) {
20993                         auxADC_Vmid = 0x45;
20994                         auxADC_Vl = 263;
20995                 } else if (radio_temp[1] + radio_temp2[1] < -9) {
20996                         auxADC_Vmid = 0x200;
20997                         auxADC_Vl = 467;
20998                 } else if (radio_temp[1] + radio_temp2[1] < 11) {
20999                         auxADC_Vmid = 0x266;
21000                         auxADC_Vl = 634;
21001                 } else {
21002                         auxADC_Vmid = 0x2D5;
21003                         auxADC_Vl = 816;
21004                 }
21005
21006                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21007                                          &auxADC_Vmid);
21008                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21009                                          &auxADC_Av);
21010
21011                 udelay(3);
21012
21013                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21014                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
21015                                 tempsense_Rcal | 0x01);
21016
21017                 udelay(5);
21018                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21019
21020                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
21021                                 syn_tempprocsense_save);
21022
21023                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21024                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21025                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
21026                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21027                 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
21028                 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
21029                 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
21030                 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
21031                 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
21032
21033                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21034                                          &auxADC_Vmid_save);
21035                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21036                                          &auxADC_Av_save);
21037                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
21038                                          &auxADC_rssi_ctrlL_save);
21039                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
21040                                          &auxADC_rssi_ctrlH_save);
21041
21042                 if (pi->sh->chip == BCM5357_CHIP_ID) {
21043                         radio_temp[0] = (193 * (radio_temp[1] + radio_temp2[1])
21044                                          + 88 * (auxADC_Vl) - 27111 +
21045                                          128) / 256;
21046                 } else if (pi->sh->chip == BCM43236_CHIP_ID) {
21047                         radio_temp[0] = (198 * (radio_temp[1] + radio_temp2[1])
21048                                          + 91 * (auxADC_Vl) - 27243 +
21049                                          128) / 256;
21050                 } else {
21051                         radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
21052                                          + 82 * (auxADC_Vl) - 28861 +
21053                                          128) / 256;
21054                 }
21055
21056                 offset = (s16) pi->phy_tempsense_offset;
21057
21058         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21059                 syn_tempprocsense_save =
21060                     read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
21061
21062                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21063                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21064                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
21065                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21066                 gpioSel_save = read_phy_reg(pi, 0xca);
21067
21068                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
21069
21070                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21071                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21072                 } else {
21073                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
21074                 }
21075
21076                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21077                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21078                         write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
21079                 } else {
21080                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
21081                 }
21082
21083                 radio_temp[0] =
21084                     (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
21085
21086                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
21087                                 syn_tempprocsense_save);
21088
21089                 write_phy_reg(pi, 0xca, gpioSel_save);
21090                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21091                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21092                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
21093                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21094
21095                 offset = (s16) pi->phy_tempsense_offset;
21096         } else {
21097
21098                 pwrdet_rxtx_core1_save =
21099                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
21100                 pwrdet_rxtx_core2_save =
21101                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
21102                 core1_txrf_iqcal1_save =
21103                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
21104                 core1_txrf_iqcal2_save =
21105                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
21106                 core2_txrf_iqcal1_save =
21107                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
21108                 core2_txrf_iqcal2_save =
21109                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
21110                 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
21111
21112                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21113                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21114                 afectrlOverride_save = read_phy_reg(pi, 0xa5);
21115                 gpioSel_save = read_phy_reg(pi, 0xca);
21116
21117                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
21118                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
21119                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
21120                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
21121                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
21122                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
21123                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
21124
21125                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21126                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
21127
21128                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21129                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
21130
21131                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21132                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
21133
21134                 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
21135                 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
21136                 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
21137                 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
21138
21139                 radio_temp[0] =
21140                     (radio_temp[0] + radio_temp[1] + radio_temp[2] +
21141                      radio_temp[3]);
21142
21143                 radio_temp[0] =
21144                     (radio_temp[0] + (8 * 32)) * (950 - 350) / 63 + (350 * 8);
21145
21146                 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
21147
21148                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
21149                                 pwrdet_rxtx_core1_save);
21150                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
21151                                 pwrdet_rxtx_core2_save);
21152                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
21153                                 core1_txrf_iqcal1_save);
21154                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
21155                                 core2_txrf_iqcal1_save);
21156                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
21157                                 core1_txrf_iqcal2_save);
21158                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
21159                                 core2_txrf_iqcal2_save);
21160                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
21161
21162                 write_phy_reg(pi, 0xca, gpioSel_save);
21163                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21164                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21165                 write_phy_reg(pi, 0xa5, afectrlOverride_save);
21166         }
21167
21168         return (s16) radio_temp[0] + offset;
21169 }
21170
21171 static void
21172 wlc_phy_set_rssi_2055_vcm(phy_info_t *pi, u8 rssi_type, u8 *vcm_buf)
21173 {
21174         u8 core;
21175
21176         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21177                 if (rssi_type == NPHY_RSSI_SEL_NB) {
21178                         if (core == PHY_CORE_0) {
21179                                 mod_radio_reg(pi,
21180                                               RADIO_2055_CORE1_B0_NBRSSI_VCM,
21181                                               RADIO_2055_NBRSSI_VCM_I_MASK,
21182                                               vcm_buf[2 *
21183                                                       core] <<
21184                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
21185                                 mod_radio_reg(pi,
21186                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
21187                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
21188                                               vcm_buf[2 * core +
21189                                                       1] <<
21190                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
21191                         } else {
21192                                 mod_radio_reg(pi,
21193                                               RADIO_2055_CORE2_B0_NBRSSI_VCM,
21194                                               RADIO_2055_NBRSSI_VCM_I_MASK,
21195                                               vcm_buf[2 *
21196                                                       core] <<
21197                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
21198                                 mod_radio_reg(pi,
21199                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
21200                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
21201                                               vcm_buf[2 * core +
21202                                                       1] <<
21203                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
21204                         }
21205                 } else {
21206
21207                         if (core == PHY_CORE_0) {
21208                                 mod_radio_reg(pi,
21209                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
21210                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
21211                                               vcm_buf[2 *
21212                                                       core] <<
21213                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
21214                         } else {
21215                                 mod_radio_reg(pi,
21216                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
21217                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
21218                                               vcm_buf[2 *
21219                                                       core] <<
21220                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
21221                         }
21222                 }
21223         }
21224 }
21225
21226 void wlc_phy_rssi_cal_nphy(phy_info_t *pi)
21227 {
21228         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21229
21230                 wlc_phy_rssi_cal_nphy_rev3(pi);
21231         } else {
21232                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
21233                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
21234                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
21235         }
21236 }
21237
21238 static void wlc_phy_rssi_cal_nphy_rev2(phy_info_t *pi, u8 rssi_type)
21239 {
21240         s32 target_code;
21241         u16 classif_state;
21242         u16 clip_state[2];
21243         u16 rssi_ctrl_state[2], pd_state[2];
21244         u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
21245         u16 rfctrlintc_override_val;
21246         u16 clip_off[] = { 0xffff, 0xffff };
21247         u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
21248         u8 vcm, min_vcm, vcm_tmp[4];
21249         u8 vcm_final[4] = { 0, 0, 0, 0 };
21250         u8 result_idx, ctr;
21251         s32 poll_results[4][4] = {
21252                 {0, 0, 0, 0},
21253                 {0, 0, 0, 0},
21254                 {0, 0, 0, 0},
21255                 {0, 0, 0, 0}
21256         };
21257         s32 poll_miniq[4][2] = {
21258                 {0, 0},
21259                 {0, 0},
21260                 {0, 0},
21261                 {0, 0}
21262         };
21263         s32 min_d, curr_d;
21264         s32 fine_digital_offset[4];
21265         s32 poll_results_min[4] = { 0, 0, 0, 0 };
21266         s32 min_poll;
21267
21268         switch (rssi_type) {
21269         case NPHY_RSSI_SEL_NB:
21270                 target_code = NPHY_RSSICAL_NB_TARGET;
21271                 break;
21272         case NPHY_RSSI_SEL_W1:
21273                 target_code = NPHY_RSSICAL_W1_TARGET;
21274                 break;
21275         case NPHY_RSSI_SEL_W2:
21276                 target_code = NPHY_RSSICAL_W2_TARGET;
21277                 break;
21278         default:
21279                 return;
21280                 break;
21281         }
21282
21283         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
21284         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
21285         wlc_phy_clip_det_nphy(pi, 0, clip_state);
21286         wlc_phy_clip_det_nphy(pi, 1, clip_off);
21287
21288         rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
21289         rfctrlintc_override_val =
21290             CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
21291
21292         rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
21293         rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
21294         write_phy_reg(pi, 0x91, rfctrlintc_override_val);
21295         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
21296
21297         rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
21298         rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
21299         write_phy_reg(pi, 0x92, rfctrlintc_override_val);
21300         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
21301
21302         pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
21303             RADIO_2055_WBRSSI_G2_PD;
21304         pd_state[0] =
21305             read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
21306         pd_state[1] =
21307             read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
21308         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
21309         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
21310         rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
21311             RADIO_2055_WBRSSI_G2_SEL;
21312         rssi_ctrl_state[0] =
21313             read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
21314         rssi_ctrl_state[1] =
21315             read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
21316         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
21317
21318         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
21319                                        NPHY_RAIL_I, rssi_type);
21320         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
21321                                        NPHY_RAIL_Q, rssi_type);
21322
21323         for (vcm = 0; vcm < 4; vcm++) {
21324
21325                 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
21326                 if (rssi_type != NPHY_RSSI_SEL_W2) {
21327                         wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
21328                 }
21329
21330                 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
21331                                        NPHY_RSSICAL_NPOLL);
21332
21333                 if ((rssi_type == NPHY_RSSI_SEL_W1)
21334                     || (rssi_type == NPHY_RSSI_SEL_W2)) {
21335                         for (ctr = 0; ctr < 2; ctr++) {
21336                                 poll_miniq[vcm][ctr] =
21337                                     min(poll_results[vcm][ctr * 2 + 0],
21338                                         poll_results[vcm][ctr * 2 + 1]);
21339                         }
21340                 }
21341         }
21342
21343         for (result_idx = 0; result_idx < 4; result_idx++) {
21344                 min_d = NPHY_RSSICAL_MAXD;
21345                 min_vcm = 0;
21346                 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
21347                 for (vcm = 0; vcm < 4; vcm++) {
21348                         curr_d = ABS(((rssi_type == NPHY_RSSI_SEL_NB) ?
21349                                       poll_results[vcm][result_idx] :
21350                                       poll_miniq[vcm][result_idx / 2]) -
21351                                      (target_code * NPHY_RSSICAL_NPOLL));
21352                         if (curr_d < min_d) {
21353                                 min_d = curr_d;
21354                                 min_vcm = vcm;
21355                         }
21356                         if (poll_results[vcm][result_idx] < min_poll) {
21357                                 min_poll = poll_results[vcm][result_idx];
21358                         }
21359                 }
21360                 vcm_final[result_idx] = min_vcm;
21361                 poll_results_min[result_idx] = min_poll;
21362         }
21363
21364         if (rssi_type != NPHY_RSSI_SEL_W2) {
21365                 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
21366         }
21367
21368         for (result_idx = 0; result_idx < 4; result_idx++) {
21369                 fine_digital_offset[result_idx] =
21370                     (target_code * NPHY_RSSICAL_NPOLL) -
21371                     poll_results[vcm_final[result_idx]][result_idx];
21372                 if (fine_digital_offset[result_idx] < 0) {
21373                         fine_digital_offset[result_idx] =
21374                             ABS(fine_digital_offset[result_idx]);
21375                         fine_digital_offset[result_idx] +=
21376                             (NPHY_RSSICAL_NPOLL / 2);
21377                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
21378                         fine_digital_offset[result_idx] =
21379                             -fine_digital_offset[result_idx];
21380                 } else {
21381                         fine_digital_offset[result_idx] +=
21382                             (NPHY_RSSICAL_NPOLL / 2);
21383                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
21384                 }
21385
21386                 if (poll_results_min[result_idx] ==
21387                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL) {
21388                         fine_digital_offset[result_idx] =
21389                             (target_code - NPHY_RSSICAL_MAXREAD - 1);
21390                 }
21391
21392                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
21393                                                (s8)
21394                                                fine_digital_offset[result_idx],
21395                                                (result_idx / 2 ==
21396                                                 0) ? RADIO_MIMO_CORESEL_CORE1 :
21397                                                RADIO_MIMO_CORESEL_CORE2,
21398                                                (result_idx % 2 ==
21399                                                 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
21400                                                rssi_type);
21401         }
21402
21403         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
21404         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
21405         if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL) {
21406                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21407                                      NPHY_RSSI_SEL_NB);
21408         } else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL) {
21409                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21410                                      NPHY_RSSI_SEL_W1);
21411         } else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G2_SEL) {
21412                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21413                                      NPHY_RSSI_SEL_W2);
21414         } else {
21415                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21416                                      NPHY_RSSI_SEL_W2);
21417         }
21418         if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL) {
21419                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21420                                      NPHY_RSSI_SEL_NB);
21421         } else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL) {
21422                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21423                                      NPHY_RSSI_SEL_W1);
21424         } else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G2_SEL) {
21425                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21426                                      NPHY_RSSI_SEL_W2);
21427         } else {
21428                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21429                                      NPHY_RSSI_SEL_W2);
21430         }
21431
21432         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
21433
21434         write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
21435         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
21436         write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
21437         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
21438
21439         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
21440         wlc_phy_clip_det_nphy(pi, 1, clip_state);
21441
21442         wlc_phy_resetcca_nphy(pi);
21443 }
21444
21445 int
21446 wlc_phy_rssi_compute_nphy(phy_info_t *pi, wlc_d11rxhdr_t *wlc_rxh)
21447 {
21448         d11rxhdr_t *rxh = &wlc_rxh->rxhdr;
21449         s16 rxpwr, rxpwr0, rxpwr1;
21450         s16 phyRx0_l, phyRx2_l;
21451
21452         rxpwr = 0;
21453         rxpwr0 = le16_to_cpu(rxh->PhyRxStatus_1) & PRXS1_nphy_PWR0_MASK;
21454         rxpwr1 = (le16_to_cpu(rxh->PhyRxStatus_1) & PRXS1_nphy_PWR1_MASK) >> 8;
21455
21456         if (rxpwr0 > 127)
21457                 rxpwr0 -= 256;
21458         if (rxpwr1 > 127)
21459                 rxpwr1 -= 256;
21460
21461         phyRx0_l = le16_to_cpu(rxh->PhyRxStatus_0) & 0x00ff;
21462         phyRx2_l = le16_to_cpu(rxh->PhyRxStatus_2) & 0x00ff;
21463         if (phyRx2_l > 127)
21464                 phyRx2_l -= 256;
21465
21466         if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
21467                 rxpwr0 = rxpwr1;
21468                 rxpwr1 = phyRx2_l;
21469         }
21470
21471         wlc_rxh->rxpwr[0] = (s8) rxpwr0;
21472         wlc_rxh->rxpwr[1] = (s8) rxpwr1;
21473         wlc_rxh->do_rssi_ma = 0;
21474
21475         if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
21476                 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
21477         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
21478                 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
21479         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
21480                 rxpwr = (rxpwr0 + rxpwr1) >> 1;
21481
21482         return rxpwr;
21483 }
21484
21485 static void
21486 wlc_phy_rfctrlintc_override_nphy(phy_info_t *pi, u8 field, u16 value,
21487                                  u8 core_code)
21488 {
21489         u16 mask;
21490         u16 val;
21491         u8 core;
21492
21493         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21494                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21495                         if (core_code == RADIO_MIMO_CORESEL_CORE1
21496                             && core == PHY_CORE_1)
21497                                 continue;
21498                         else if (core_code == RADIO_MIMO_CORESEL_CORE2
21499                                  && core == PHY_CORE_0)
21500                                 continue;
21501
21502                         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
21503
21504                                 mask = (0x1 << 10);
21505                                 val = 1 << 10;
21506                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
21507                                             0x92, mask, val);
21508                         }
21509
21510                         if (field == NPHY_RfctrlIntc_override_OFF) {
21511
21512                                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
21513                                               0x92, 0);
21514
21515                                 wlc_phy_force_rfseq_nphy(pi,
21516                                                          NPHY_RFSEQ_RESET2RX);
21517                         } else if (field == NPHY_RfctrlIntc_override_TRSW) {
21518
21519                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21520
21521                                         mask = (0x1 << 6) | (0x1 << 7);
21522
21523                                         val = value << 6;
21524                                         mod_phy_reg(pi,
21525                                                     (core ==
21526                                                      PHY_CORE_0) ? 0x91 : 0x92,
21527                                                     mask, val);
21528
21529                                         or_phy_reg(pi,
21530                                                    (core ==
21531                                                     PHY_CORE_0) ? 0x91 : 0x92,
21532                                                    (0x1 << 10));
21533
21534                                         and_phy_reg(pi, 0x2ff, (u16)
21535                                                     ~(0x3 << 14));
21536                                         or_phy_reg(pi, 0x2ff, (0x1 << 13));
21537                                         or_phy_reg(pi, 0x2ff, (0x1 << 0));
21538                                 } else {
21539
21540                                         mask = (0x1 << 6) |
21541                                             (0x1 << 7) |
21542                                             (0x1 << 8) | (0x1 << 9);
21543                                         val = value << 6;
21544                                         mod_phy_reg(pi,
21545                                                     (core ==
21546                                                      PHY_CORE_0) ? 0x91 : 0x92,
21547                                                     mask, val);
21548
21549                                         mask = (0x1 << 0);
21550                                         val = 1 << 0;
21551                                         mod_phy_reg(pi,
21552                                                     (core ==
21553                                                      PHY_CORE_0) ? 0xe7 : 0xec,
21554                                                     mask, val);
21555
21556                                         mask = (core == PHY_CORE_0) ? (0x1 << 0)
21557                                             : (0x1 << 1);
21558                                         val = 1 << ((core == PHY_CORE_0) ?
21559                                                     0 : 1);
21560                                         mod_phy_reg(pi, 0x78, mask, val);
21561
21562                                         SPINWAIT(((read_phy_reg(pi, 0x78) & val)
21563                                                   != 0), 10000);
21564                                         if (WARN(read_phy_reg(pi, 0x78) & val,
21565                                                 "HW error: override failed"))
21566                                                 return;
21567
21568                                         mask = (0x1 << 0);
21569                                         val = 0 << 0;
21570                                         mod_phy_reg(pi,
21571                                                     (core ==
21572                                                      PHY_CORE_0) ? 0xe7 : 0xec,
21573                                                     mask, val);
21574                                 }
21575                         } else if (field == NPHY_RfctrlIntc_override_PA) {
21576                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21577
21578                                         mask = (0x1 << 4) | (0x1 << 5);
21579
21580                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21581                                                 val = value << 5;
21582                                         } else {
21583                                                 val = value << 4;
21584                                         }
21585
21586                                         mod_phy_reg(pi,
21587                                                     (core ==
21588                                                      PHY_CORE_0) ? 0x91 : 0x92,
21589                                                     mask, val);
21590
21591                                         or_phy_reg(pi,
21592                                                    (core ==
21593                                                     PHY_CORE_0) ? 0x91 : 0x92,
21594                                                    (0x1 << 12));
21595                                 } else {
21596
21597                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21598                                                 mask = (0x1 << 5);
21599                                                 val = value << 5;
21600                                         } else {
21601                                                 mask = (0x1 << 4);
21602                                                 val = value << 4;
21603                                         }
21604                                         mod_phy_reg(pi,
21605                                                     (core ==
21606                                                      PHY_CORE_0) ? 0x91 : 0x92,
21607                                                     mask, val);
21608                                 }
21609                         } else if (field == NPHY_RfctrlIntc_override_EXT_LNA_PU) {
21610                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21611                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21612
21613                                                 mask = (0x1 << 0);
21614                                                 val = value << 0;
21615                                                 mod_phy_reg(pi,
21616                                                             (core ==
21617                                                              PHY_CORE_0) ? 0x91
21618                                                             : 0x92, mask, val);
21619
21620                                                 mask = (0x1 << 2);
21621                                                 mod_phy_reg(pi,
21622                                                             (core ==
21623                                                              PHY_CORE_0) ? 0x91
21624                                                             : 0x92, mask, 0);
21625                                         } else {
21626
21627                                                 mask = (0x1 << 2);
21628                                                 val = value << 2;
21629                                                 mod_phy_reg(pi,
21630                                                             (core ==
21631                                                              PHY_CORE_0) ? 0x91
21632                                                             : 0x92, mask, val);
21633
21634                                                 mask = (0x1 << 0);
21635                                                 mod_phy_reg(pi,
21636                                                             (core ==
21637                                                              PHY_CORE_0) ? 0x91
21638                                                             : 0x92, mask, 0);
21639                                         }
21640
21641                                         mask = (0x1 << 11);
21642                                         val = 1 << 11;
21643                                         mod_phy_reg(pi,
21644                                                     (core ==
21645                                                      PHY_CORE_0) ? 0x91 : 0x92,
21646                                                     mask, val);
21647                                 } else {
21648
21649                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21650                                                 mask = (0x1 << 0);
21651                                                 val = value << 0;
21652                                         } else {
21653                                                 mask = (0x1 << 2);
21654                                                 val = value << 2;
21655                                         }
21656                                         mod_phy_reg(pi,
21657                                                     (core ==
21658                                                      PHY_CORE_0) ? 0x91 : 0x92,
21659                                                     mask, val);
21660                                 }
21661                         } else if (field ==
21662                                    NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
21663                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21664                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21665
21666                                                 mask = (0x1 << 1);
21667                                                 val = value << 1;
21668                                                 mod_phy_reg(pi,
21669                                                             (core ==
21670                                                              PHY_CORE_0) ? 0x91
21671                                                             : 0x92, mask, val);
21672
21673                                                 mask = (0x1 << 3);
21674                                                 mod_phy_reg(pi,
21675                                                             (core ==
21676                                                              PHY_CORE_0) ? 0x91
21677                                                             : 0x92, mask, 0);
21678                                         } else {
21679
21680                                                 mask = (0x1 << 3);
21681                                                 val = value << 3;
21682                                                 mod_phy_reg(pi,
21683                                                             (core ==
21684                                                              PHY_CORE_0) ? 0x91
21685                                                             : 0x92, mask, val);
21686
21687                                                 mask = (0x1 << 1);
21688                                                 mod_phy_reg(pi,
21689                                                             (core ==
21690                                                              PHY_CORE_0) ? 0x91
21691                                                             : 0x92, mask, 0);
21692                                         }
21693
21694                                         mask = (0x1 << 11);
21695                                         val = 1 << 11;
21696                                         mod_phy_reg(pi,
21697                                                     (core ==
21698                                                      PHY_CORE_0) ? 0x91 : 0x92,
21699                                                     mask, val);
21700                                 } else {
21701
21702                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21703                                                 mask = (0x1 << 1);
21704                                                 val = value << 1;
21705                                         } else {
21706                                                 mask = (0x1 << 3);
21707                                                 val = value << 3;
21708                                         }
21709                                         mod_phy_reg(pi,
21710                                                     (core ==
21711                                                      PHY_CORE_0) ? 0x91 : 0x92,
21712                                                     mask, val);
21713                                 }
21714                         }
21715                 }
21716         } else {
21717                 return;
21718         }
21719 }
21720
21721 static void wlc_phy_rssi_cal_nphy_rev3(phy_info_t *pi)
21722 {
21723         u16 classif_state;
21724         u16 clip_state[2];
21725         u16 clip_off[] = { 0xffff, 0xffff };
21726         s32 target_code;
21727         u8 vcm, min_vcm;
21728         u8 vcm_final = 0;
21729         u8 result_idx;
21730         s32 poll_results[8][4] = {
21731                 {0, 0, 0, 0},
21732                 {0, 0, 0, 0},
21733                 {0, 0, 0, 0},
21734                 {0, 0, 0, 0},
21735                 {0, 0, 0, 0},
21736                 {0, 0, 0, 0},
21737                 {0, 0, 0, 0},
21738                 {0, 0, 0, 0}
21739         };
21740         s32 poll_result_core[4] = { 0, 0, 0, 0 };
21741         s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
21742         s32 fine_digital_offset[4];
21743         s32 poll_results_min[4] = { 0, 0, 0, 0 };
21744         s32 min_poll;
21745         u8 vcm_level_max;
21746         u8 core;
21747         u8 wb_cnt;
21748         u8 rssi_type;
21749         u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
21750         u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
21751         u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
21752         u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
21753         u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
21754         u16 NPHY_RfctrlCmd_save;
21755         u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
21756         u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
21757         u8 rxcore_state;
21758         u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
21759         u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
21760         u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
21761         u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
21762
21763         NPHY_REV7_RfctrlOverride3_save = NPHY_REV7_RfctrlOverride4_save =
21764             NPHY_REV7_RfctrlOverride5_save = NPHY_REV7_RfctrlOverride6_save =
21765             NPHY_REV7_RfctrlMiscReg3_save = NPHY_REV7_RfctrlMiscReg4_save =
21766             NPHY_REV7_RfctrlMiscReg5_save = NPHY_REV7_RfctrlMiscReg6_save = 0;
21767
21768         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
21769         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
21770         wlc_phy_clip_det_nphy(pi, 0, clip_state);
21771         wlc_phy_clip_det_nphy(pi, 1, clip_off);
21772
21773         NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
21774         NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
21775         NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
21776         NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
21777         NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
21778         NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
21779         NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
21780         NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
21781         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21782                 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
21783                 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
21784                 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
21785                 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
21786         }
21787         NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
21788         NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
21789         NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
21790         NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
21791         NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
21792         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21793                 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
21794                 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
21795                 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
21796                 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
21797         }
21798         NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
21799         NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
21800
21801         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
21802                                          RADIO_MIMO_CORESEL_ALLRXTX);
21803         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
21804                                          RADIO_MIMO_CORESEL_ALLRXTX);
21805
21806         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21807                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
21808                                                      NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
21809                                                      0, 0, 0);
21810         } else {
21811                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
21812         }
21813
21814         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21815                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
21816                                                      NPHY_REV7_RfctrlOverride_cmd_rx_pu,
21817                                                      1, 0, 0);
21818         } else {
21819                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
21820         }
21821
21822         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21823                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
21824                                                   1, 0, 0,
21825                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
21826                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
21827                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
21828         } else {
21829                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
21830                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
21831         }
21832
21833         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21834                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21835                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
21836                                                           0, 0, 0,
21837                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21838                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 1, 0,
21839                                                           0,
21840                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21841                 } else {
21842                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
21843                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
21844                 }
21845
21846         } else {
21847                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21848                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4),
21849                                                           0, 0, 0,
21850                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21851                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 1, 0,
21852                                                           0,
21853                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21854                 } else {
21855                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
21856                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
21857                 }
21858         }
21859
21860         rxcore_state = wlc_phy_rxcore_getstate_nphy((wlc_phy_t *) pi);
21861
21862         vcm_level_max = 8;
21863
21864         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21865
21866                 if ((rxcore_state & (1 << core)) == 0)
21867                         continue;
21868
21869                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
21870                                                core ==
21871                                                PHY_CORE_0 ?
21872                                                RADIO_MIMO_CORESEL_CORE1 :
21873                                                RADIO_MIMO_CORESEL_CORE2,
21874                                                NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
21875                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
21876                                                core ==
21877                                                PHY_CORE_0 ?
21878                                                RADIO_MIMO_CORESEL_CORE1 :
21879                                                RADIO_MIMO_CORESEL_CORE2,
21880                                                NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
21881
21882                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
21883                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21884
21885                                 mod_radio_reg(pi, (core == PHY_CORE_0) ?
21886                                               RADIO_2057_NB_MASTER_CORE0 :
21887                                               RADIO_2057_NB_MASTER_CORE1,
21888                                               RADIO_2057_VCM_MASK, vcm);
21889                         } else {
21890
21891                                 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
21892                                               ((core ==
21893                                                 PHY_CORE_0) ? RADIO_2056_RX0 :
21894                                                RADIO_2056_RX1),
21895                                               RADIO_2056_VCM_MASK,
21896                                               vcm << RADIO_2056_RSSI_VCM_SHIFT);
21897                         }
21898
21899                         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
21900                                                &poll_results[vcm][0],
21901                                                NPHY_RSSICAL_NPOLL);
21902                 }
21903
21904                 for (result_idx = 0; result_idx < 4; result_idx++) {
21905                         if ((core == result_idx / 2) && (result_idx % 2 == 0)) {
21906
21907                                 min_d = NPHY_RSSICAL_MAXD;
21908                                 min_vcm = 0;
21909                                 min_poll =
21910                                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL +
21911                                     1;
21912                                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
21913                                         curr_d = poll_results[vcm][result_idx] *
21914                                             poll_results[vcm][result_idx] +
21915                                             poll_results[vcm][result_idx + 1] *
21916                                             poll_results[vcm][result_idx + 1];
21917                                         if (curr_d < min_d) {
21918                                                 min_d = curr_d;
21919                                                 min_vcm = vcm;
21920                                         }
21921                                         if (poll_results[vcm][result_idx] <
21922                                             min_poll) {
21923                                                 min_poll =
21924                                                     poll_results[vcm]
21925                                                     [result_idx];
21926                                         }
21927                                 }
21928                                 vcm_final = min_vcm;
21929                                 poll_results_min[result_idx] = min_poll;
21930                         }
21931                 }
21932
21933                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21934                         mod_radio_reg(pi, (core == PHY_CORE_0) ?
21935                                       RADIO_2057_NB_MASTER_CORE0 :
21936                                       RADIO_2057_NB_MASTER_CORE1,
21937                                       RADIO_2057_VCM_MASK, vcm_final);
21938                 } else {
21939                         mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
21940                                       ((core ==
21941                                         PHY_CORE_0) ? RADIO_2056_RX0 :
21942                                        RADIO_2056_RX1), RADIO_2056_VCM_MASK,
21943                                       vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
21944                 }
21945
21946                 for (result_idx = 0; result_idx < 4; result_idx++) {
21947                         if (core == result_idx / 2) {
21948                                 fine_digital_offset[result_idx] =
21949                                     (NPHY_RSSICAL_NB_TARGET *
21950                                      NPHY_RSSICAL_NPOLL) -
21951                                     poll_results[vcm_final][result_idx];
21952                                 if (fine_digital_offset[result_idx] < 0) {
21953                                         fine_digital_offset[result_idx] =
21954                                             ABS(fine_digital_offset
21955                                                 [result_idx]);
21956                                         fine_digital_offset[result_idx] +=
21957                                             (NPHY_RSSICAL_NPOLL / 2);
21958                                         fine_digital_offset[result_idx] /=
21959                                             NPHY_RSSICAL_NPOLL;
21960                                         fine_digital_offset[result_idx] =
21961                                             -fine_digital_offset[result_idx];
21962                                 } else {
21963                                         fine_digital_offset[result_idx] +=
21964                                             (NPHY_RSSICAL_NPOLL / 2);
21965                                         fine_digital_offset[result_idx] /=
21966                                             NPHY_RSSICAL_NPOLL;
21967                                 }
21968
21969                                 if (poll_results_min[result_idx] ==
21970                                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL) {
21971                                         fine_digital_offset[result_idx] =
21972                                             (NPHY_RSSICAL_NB_TARGET -
21973                                              NPHY_RSSICAL_MAXREAD - 1);
21974                                 }
21975
21976                                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
21977                                                                (s8)
21978                                                                fine_digital_offset
21979                                                                [result_idx],
21980                                                                (result_idx /
21981                                                                 2 ==
21982                                                                 0) ?
21983                                                                RADIO_MIMO_CORESEL_CORE1
21984                                                                :
21985                                                                RADIO_MIMO_CORESEL_CORE2,
21986                                                                (result_idx %
21987                                                                 2 ==
21988                                                                 0) ? NPHY_RAIL_I
21989                                                                : NPHY_RAIL_Q,
21990                                                                NPHY_RSSI_SEL_NB);
21991                         }
21992                 }
21993
21994         }
21995
21996         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21997
21998                 if ((rxcore_state & (1 << core)) == 0)
21999                         continue;
22000
22001                 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22002                         if (wb_cnt == 0) {
22003                                 rssi_type = NPHY_RSSI_SEL_W1;
22004                                 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22005                         } else {
22006                                 rssi_type = NPHY_RSSI_SEL_W2;
22007                                 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22008                         }
22009
22010                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22011                                                        core ==
22012                                                        PHY_CORE_0 ?
22013                                                        RADIO_MIMO_CORESEL_CORE1
22014                                                        :
22015                                                        RADIO_MIMO_CORESEL_CORE2,
22016                                                        NPHY_RAIL_I, rssi_type);
22017                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22018                                                        core ==
22019                                                        PHY_CORE_0 ?
22020                                                        RADIO_MIMO_CORESEL_CORE1
22021                                                        :
22022                                                        RADIO_MIMO_CORESEL_CORE2,
22023                                                        NPHY_RAIL_Q, rssi_type);
22024
22025                         wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22026                                                NPHY_RSSICAL_NPOLL);
22027
22028                         for (result_idx = 0; result_idx < 4; result_idx++) {
22029                                 if (core == result_idx / 2) {
22030                                         fine_digital_offset[result_idx] =
22031                                             (target_code * NPHY_RSSICAL_NPOLL) -
22032                                             poll_result_core[result_idx];
22033                                         if (fine_digital_offset[result_idx] < 0) {
22034                                                 fine_digital_offset[result_idx]
22035                                                     =
22036                                                     ABS(fine_digital_offset
22037                                                         [result_idx]);
22038                                                 fine_digital_offset[result_idx]
22039                                                     += (NPHY_RSSICAL_NPOLL / 2);
22040                                                 fine_digital_offset[result_idx]
22041                                                     /= NPHY_RSSICAL_NPOLL;
22042                                                 fine_digital_offset[result_idx]
22043                                                     =
22044                                                     -fine_digital_offset
22045                                                     [result_idx];
22046                                         } else {
22047                                                 fine_digital_offset[result_idx]
22048                                                     += (NPHY_RSSICAL_NPOLL / 2);
22049                                                 fine_digital_offset[result_idx]
22050                                                     /= NPHY_RSSICAL_NPOLL;
22051                                         }
22052
22053                                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
22054                                                                        (s8)
22055                                                                        fine_digital_offset
22056                                                                        [core *
22057                                                                         2],
22058                                                                        (core ==
22059                                                                         PHY_CORE_0)
22060                                                                        ?
22061                                                                        RADIO_MIMO_CORESEL_CORE1
22062                                                                        :
22063                                                                        RADIO_MIMO_CORESEL_CORE2,
22064                                                                        (result_idx
22065                                                                         % 2 ==
22066                                                                         0) ?
22067                                                                        NPHY_RAIL_I
22068                                                                        :
22069                                                                        NPHY_RAIL_Q,
22070                                                                        rssi_type);
22071                                 }
22072                         }
22073
22074                 }
22075         }
22076
22077         write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22078         write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22079
22080         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22081
22082         mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22083         mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22084         mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22085
22086         mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22087         mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22088         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22089
22090         write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22091         write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22092         write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22093         write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22094         write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22095         write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22096         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22097                 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22098                 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22099                 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22100                 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22101         }
22102         write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22103         write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22104         write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22105         write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22106         write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22107         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22108                 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22109                 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22110                 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22111                 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22112         }
22113         write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22114         write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22115
22116         if (CHSPEC_IS2G(pi->radio_chanspec)) {
22117                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22118                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22119                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22120                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22121                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22122                 } else {
22123                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22124                             read_radio_reg(pi,
22125                                            RADIO_2056_RX_RSSI_MISC |
22126                                            RADIO_2056_RX0);
22127                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22128                             read_radio_reg(pi,
22129                                            RADIO_2056_RX_RSSI_MISC |
22130                                            RADIO_2056_RX1);
22131                 }
22132
22133                 pi->rssical_cache.rssical_phyregs_2G[0] =
22134                     read_phy_reg(pi, 0x1a6);
22135                 pi->rssical_cache.rssical_phyregs_2G[1] =
22136                     read_phy_reg(pi, 0x1ac);
22137                 pi->rssical_cache.rssical_phyregs_2G[2] =
22138                     read_phy_reg(pi, 0x1b2);
22139                 pi->rssical_cache.rssical_phyregs_2G[3] =
22140                     read_phy_reg(pi, 0x1b8);
22141                 pi->rssical_cache.rssical_phyregs_2G[4] =
22142                     read_phy_reg(pi, 0x1a4);
22143                 pi->rssical_cache.rssical_phyregs_2G[5] =
22144                     read_phy_reg(pi, 0x1aa);
22145                 pi->rssical_cache.rssical_phyregs_2G[6] =
22146                     read_phy_reg(pi, 0x1b0);
22147                 pi->rssical_cache.rssical_phyregs_2G[7] =
22148                     read_phy_reg(pi, 0x1b6);
22149                 pi->rssical_cache.rssical_phyregs_2G[8] =
22150                     read_phy_reg(pi, 0x1a5);
22151                 pi->rssical_cache.rssical_phyregs_2G[9] =
22152                     read_phy_reg(pi, 0x1ab);
22153                 pi->rssical_cache.rssical_phyregs_2G[10] =
22154                     read_phy_reg(pi, 0x1b1);
22155                 pi->rssical_cache.rssical_phyregs_2G[11] =
22156                     read_phy_reg(pi, 0x1b7);
22157
22158                 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22159         } else {
22160                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22161                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22162                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22163                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22164                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22165                 } else {
22166                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22167                             read_radio_reg(pi,
22168                                            RADIO_2056_RX_RSSI_MISC |
22169                                            RADIO_2056_RX0);
22170                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22171                             read_radio_reg(pi,
22172                                            RADIO_2056_RX_RSSI_MISC |
22173                                            RADIO_2056_RX1);
22174                 }
22175
22176                 pi->rssical_cache.rssical_phyregs_5G[0] =
22177                     read_phy_reg(pi, 0x1a6);
22178                 pi->rssical_cache.rssical_phyregs_5G[1] =
22179                     read_phy_reg(pi, 0x1ac);
22180                 pi->rssical_cache.rssical_phyregs_5G[2] =
22181                     read_phy_reg(pi, 0x1b2);
22182                 pi->rssical_cache.rssical_phyregs_5G[3] =
22183                     read_phy_reg(pi, 0x1b8);
22184                 pi->rssical_cache.rssical_phyregs_5G[4] =
22185                     read_phy_reg(pi, 0x1a4);
22186                 pi->rssical_cache.rssical_phyregs_5G[5] =
22187                     read_phy_reg(pi, 0x1aa);
22188                 pi->rssical_cache.rssical_phyregs_5G[6] =
22189                     read_phy_reg(pi, 0x1b0);
22190                 pi->rssical_cache.rssical_phyregs_5G[7] =
22191                     read_phy_reg(pi, 0x1b6);
22192                 pi->rssical_cache.rssical_phyregs_5G[8] =
22193                     read_phy_reg(pi, 0x1a5);
22194                 pi->rssical_cache.rssical_phyregs_5G[9] =
22195                     read_phy_reg(pi, 0x1ab);
22196                 pi->rssical_cache.rssical_phyregs_5G[10] =
22197                     read_phy_reg(pi, 0x1b1);
22198                 pi->rssical_cache.rssical_phyregs_5G[11] =
22199                     read_phy_reg(pi, 0x1b7);
22200
22201                 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22202         }
22203
22204         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22205         wlc_phy_clip_det_nphy(pi, 1, clip_state);
22206 }
22207
22208 static void wlc_phy_restore_rssical_nphy(phy_info_t *pi)
22209 {
22210         if (CHSPEC_IS2G(pi->radio_chanspec)) {
22211                 if (pi->nphy_rssical_chanspec_2G == 0)
22212                         return;
22213
22214                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22215                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
22216                                       RADIO_2057_VCM_MASK,
22217                                       pi->rssical_cache.
22218                                       rssical_radio_regs_2G[0]);
22219                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
22220                                       RADIO_2057_VCM_MASK,
22221                                       pi->rssical_cache.
22222                                       rssical_radio_regs_2G[1]);
22223                 } else {
22224                         mod_radio_reg(pi,
22225                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
22226                                       RADIO_2056_VCM_MASK,
22227                                       pi->rssical_cache.
22228                                       rssical_radio_regs_2G[0]);
22229                         mod_radio_reg(pi,
22230                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
22231                                       RADIO_2056_VCM_MASK,
22232                                       pi->rssical_cache.
22233                                       rssical_radio_regs_2G[1]);
22234                 }
22235
22236                 write_phy_reg(pi, 0x1a6,
22237                               pi->rssical_cache.rssical_phyregs_2G[0]);
22238                 write_phy_reg(pi, 0x1ac,
22239                               pi->rssical_cache.rssical_phyregs_2G[1]);
22240                 write_phy_reg(pi, 0x1b2,
22241                               pi->rssical_cache.rssical_phyregs_2G[2]);
22242                 write_phy_reg(pi, 0x1b8,
22243                               pi->rssical_cache.rssical_phyregs_2G[3]);
22244                 write_phy_reg(pi, 0x1a4,
22245                               pi->rssical_cache.rssical_phyregs_2G[4]);
22246                 write_phy_reg(pi, 0x1aa,
22247                               pi->rssical_cache.rssical_phyregs_2G[5]);
22248                 write_phy_reg(pi, 0x1b0,
22249                               pi->rssical_cache.rssical_phyregs_2G[6]);
22250                 write_phy_reg(pi, 0x1b6,
22251                               pi->rssical_cache.rssical_phyregs_2G[7]);
22252                 write_phy_reg(pi, 0x1a5,
22253                               pi->rssical_cache.rssical_phyregs_2G[8]);
22254                 write_phy_reg(pi, 0x1ab,
22255                               pi->rssical_cache.rssical_phyregs_2G[9]);
22256                 write_phy_reg(pi, 0x1b1,
22257                               pi->rssical_cache.rssical_phyregs_2G[10]);
22258                 write_phy_reg(pi, 0x1b7,
22259                               pi->rssical_cache.rssical_phyregs_2G[11]);
22260
22261         } else {
22262                 if (pi->nphy_rssical_chanspec_5G == 0)
22263                         return;
22264
22265                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22266                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
22267                                       RADIO_2057_VCM_MASK,
22268                                       pi->rssical_cache.
22269                                       rssical_radio_regs_5G[0]);
22270                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
22271                                       RADIO_2057_VCM_MASK,
22272                                       pi->rssical_cache.
22273                                       rssical_radio_regs_5G[1]);
22274                 } else {
22275                         mod_radio_reg(pi,
22276                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
22277                                       RADIO_2056_VCM_MASK,
22278                                       pi->rssical_cache.
22279                                       rssical_radio_regs_5G[0]);
22280                         mod_radio_reg(pi,
22281                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
22282                                       RADIO_2056_VCM_MASK,
22283                                       pi->rssical_cache.
22284                                       rssical_radio_regs_5G[1]);
22285                 }
22286
22287                 write_phy_reg(pi, 0x1a6,
22288                               pi->rssical_cache.rssical_phyregs_5G[0]);
22289                 write_phy_reg(pi, 0x1ac,
22290                               pi->rssical_cache.rssical_phyregs_5G[1]);
22291                 write_phy_reg(pi, 0x1b2,
22292                               pi->rssical_cache.rssical_phyregs_5G[2]);
22293                 write_phy_reg(pi, 0x1b8,
22294                               pi->rssical_cache.rssical_phyregs_5G[3]);
22295                 write_phy_reg(pi, 0x1a4,
22296                               pi->rssical_cache.rssical_phyregs_5G[4]);
22297                 write_phy_reg(pi, 0x1aa,
22298                               pi->rssical_cache.rssical_phyregs_5G[5]);
22299                 write_phy_reg(pi, 0x1b0,
22300                               pi->rssical_cache.rssical_phyregs_5G[6]);
22301                 write_phy_reg(pi, 0x1b6,
22302                               pi->rssical_cache.rssical_phyregs_5G[7]);
22303                 write_phy_reg(pi, 0x1a5,
22304                               pi->rssical_cache.rssical_phyregs_5G[8]);
22305                 write_phy_reg(pi, 0x1ab,
22306                               pi->rssical_cache.rssical_phyregs_5G[9]);
22307                 write_phy_reg(pi, 0x1b1,
22308                               pi->rssical_cache.rssical_phyregs_5G[10]);
22309                 write_phy_reg(pi, 0x1b7,
22310                               pi->rssical_cache.rssical_phyregs_5G[11]);
22311         }
22312 }
22313
22314 static u16
22315 wlc_phy_gen_load_samples_nphy(phy_info_t *pi, u32 f_kHz, u16 max_val,
22316                               u8 dac_test_mode)
22317 {
22318         u8 phy_bw, is_phybw40;
22319         u16 num_samps, t, spur;
22320         fixed theta = 0, rot = 0;
22321         u32 tbl_len;
22322         cs32 *tone_buf = NULL;
22323
22324         is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
22325         phy_bw = (is_phybw40 == 1) ? 40 : 20;
22326         tbl_len = (phy_bw << 3);
22327
22328         if (dac_test_mode == 1) {
22329                 spur = read_phy_reg(pi, 0x01);
22330                 spur = (spur >> 15) & 1;
22331                 phy_bw = (spur == 1) ? 82 : 80;
22332                 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
22333
22334                 tbl_len = (phy_bw << 1);
22335         }
22336
22337         tone_buf = kmalloc(sizeof(cs32) * tbl_len, GFP_ATOMIC);
22338         if (tone_buf == NULL) {
22339                 return 0;
22340         }
22341
22342         num_samps = (u16) tbl_len;
22343         rot = FIXED((f_kHz * 36) / phy_bw) / 100;
22344         theta = 0;
22345
22346         for (t = 0; t < num_samps; t++) {
22347
22348                 wlc_phy_cordic(theta, &tone_buf[t]);
22349
22350                 theta += rot;
22351
22352                 tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
22353                 tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
22354         }
22355
22356         wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
22357
22358         kfree(tone_buf);
22359
22360         return num_samps;
22361 }
22362
22363 int
22364 wlc_phy_tx_tone_nphy(phy_info_t *pi, u32 f_kHz, u16 max_val,
22365                      u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
22366 {
22367         u16 num_samps;
22368         u16 loops = 0xffff;
22369         u16 wait = 0;
22370
22371         num_samps =
22372                 wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val, dac_test_mode);
22373         if (num_samps == 0) {
22374                 return -EBADE;
22375         }
22376
22377         wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
22378                                 dac_test_mode, modify_bbmult);
22379
22380         return 0;
22381 }
22382
22383 static void
22384 wlc_phy_loadsampletable_nphy(phy_info_t *pi, cs32 *tone_buf,
22385                              u16 num_samps)
22386 {
22387         u16 t;
22388         u32 *data_buf = NULL;
22389
22390         data_buf = kmalloc(sizeof(u32) * num_samps, GFP_ATOMIC);
22391         if (data_buf == NULL) {
22392                 return;
22393         }
22394
22395         if (pi->phyhang_avoid)
22396                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
22397
22398         for (t = 0; t < num_samps; t++) {
22399                 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
22400                     (((unsigned int)tone_buf[t].q) & 0x3ff);
22401         }
22402         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
22403                                  data_buf);
22404
22405         kfree(data_buf);
22406
22407         if (pi->phyhang_avoid)
22408                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
22409 }
22410
22411 static void
22412 wlc_phy_runsamples_nphy(phy_info_t *pi, u16 num_samps, u16 loops,
22413                         u16 wait, u8 iqmode, u8 dac_test_mode,
22414                         bool modify_bbmult)
22415 {
22416         u16 bb_mult;
22417         u8 phy_bw, sample_cmd;
22418         u16 orig_RfseqCoreActv;
22419         u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
22420             lpf_bw_ctl_miscreg4;
22421
22422         if (pi->phyhang_avoid)
22423                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
22424
22425         phy_bw = 20;
22426         if (CHSPEC_IS40(pi->radio_chanspec))
22427                 phy_bw = 40;
22428
22429         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22430
22431                 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
22432                 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
22433                 if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
22434                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
22435                             (0x7 << 8);
22436                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
22437                             (0x7 << 8);
22438                 } else {
22439                         wlc_phy_rfctrl_override_nphy_rev7(pi,
22440                                                           (0x1 << 7),
22441                                                           wlc_phy_read_lpf_bw_ctl_nphy
22442                                                           (pi, 0), 0, 0,
22443                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
22444
22445                         pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
22446
22447                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
22448                             (0x7 << 8);
22449                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
22450                             (0x7 << 8);
22451                 }
22452         }
22453
22454         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
22455
22456                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
22457                                         &bb_mult);
22458                 pi->nphy_bb_mult_save =
22459                     BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
22460         }
22461
22462         if (modify_bbmult) {
22463                 bb_mult = (phy_bw == 20) ? 100 : 71;
22464                 bb_mult = (bb_mult << 8) + bb_mult;
22465                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
22466                                          &bb_mult);
22467         }
22468
22469         if (pi->phyhang_avoid)
22470                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
22471
22472         write_phy_reg(pi, 0xc6, num_samps - 1);
22473
22474         if (loops != 0xffff) {
22475                 write_phy_reg(pi, 0xc4, loops - 1);
22476         } else {
22477                 write_phy_reg(pi, 0xc4, loops);
22478         }
22479         write_phy_reg(pi, 0xc5, wait);
22480
22481         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
22482         or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
22483         if (iqmode) {
22484
22485                 and_phy_reg(pi, 0xc2, 0x7FFF);
22486
22487                 or_phy_reg(pi, 0xc2, 0x8000);
22488         } else {
22489
22490                 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
22491                 write_phy_reg(pi, 0xc3, sample_cmd);
22492         }
22493
22494         SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
22495
22496         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
22497 }
22498
22499 void wlc_phy_stopplayback_nphy(phy_info_t *pi)
22500 {
22501         u16 playback_status;
22502         u16 bb_mult;
22503
22504         if (pi->phyhang_avoid)
22505                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
22506
22507         playback_status = read_phy_reg(pi, 0xc7);
22508         if (playback_status & 0x1) {
22509                 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
22510         } else if (playback_status & 0x2) {
22511
22512                 and_phy_reg(pi, 0xc2,
22513                             (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
22514         }
22515
22516         and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
22517
22518         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
22519
22520                 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
22521                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
22522                                          &bb_mult);
22523
22524                 pi->nphy_bb_mult_save = 0;
22525         }
22526
22527         if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
22528                 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
22529                         wlc_phy_rfctrl_override_nphy_rev7(pi,
22530                                                           (0x1 << 7),
22531                                                           0, 0, 1,
22532                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
22533                         pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
22534                 }
22535         }
22536
22537         if (pi->phyhang_avoid)
22538                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
22539 }
22540
22541 nphy_txgains_t wlc_phy_get_tx_gain_nphy(phy_info_t *pi)
22542 {
22543         u16 base_idx[2], curr_gain[2];
22544         u8 core_no;
22545         nphy_txgains_t target_gain;
22546         u32 *tx_pwrctrl_tbl = NULL;
22547
22548         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
22549                 if (pi->phyhang_avoid)
22550                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
22551
22552                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
22553                                         curr_gain);
22554
22555                 if (pi->phyhang_avoid)
22556                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
22557
22558                 for (core_no = 0; core_no < 2; core_no++) {
22559                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22560                                 target_gain.ipa[core_no] =
22561                                     curr_gain[core_no] & 0x0007;
22562                                 target_gain.pad[core_no] =
22563                                     ((curr_gain[core_no] & 0x00F8) >> 3);
22564                                 target_gain.pga[core_no] =
22565                                     ((curr_gain[core_no] & 0x0F00) >> 8);
22566                                 target_gain.txgm[core_no] =
22567                                     ((curr_gain[core_no] & 0x7000) >> 12);
22568                                 target_gain.txlpf[core_no] =
22569                                     ((curr_gain[core_no] & 0x8000) >> 15);
22570                         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22571                                 target_gain.ipa[core_no] =
22572                                     curr_gain[core_no] & 0x000F;
22573                                 target_gain.pad[core_no] =
22574                                     ((curr_gain[core_no] & 0x00F0) >> 4);
22575                                 target_gain.pga[core_no] =
22576                                     ((curr_gain[core_no] & 0x0F00) >> 8);
22577                                 target_gain.txgm[core_no] =
22578                                     ((curr_gain[core_no] & 0x7000) >> 12);
22579                         } else {
22580                                 target_gain.ipa[core_no] =
22581                                     curr_gain[core_no] & 0x0003;
22582                                 target_gain.pad[core_no] =
22583                                     ((curr_gain[core_no] & 0x000C) >> 2);
22584                                 target_gain.pga[core_no] =
22585                                     ((curr_gain[core_no] & 0x0070) >> 4);
22586                                 target_gain.txgm[core_no] =
22587                                     ((curr_gain[core_no] & 0x0380) >> 7);
22588                         }
22589                 }
22590         } else {
22591                 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
22592                 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
22593                 for (core_no = 0; core_no < 2; core_no++) {
22594                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22595                                 if (PHY_IPA(pi)) {
22596                                         tx_pwrctrl_tbl =
22597                                             wlc_phy_get_ipa_gaintbl_nphy(pi);
22598                                 } else {
22599                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22600                                                 if NREV_IS
22601                                                         (pi->pubpi.phy_rev, 3) {
22602                                                         tx_pwrctrl_tbl =
22603                                                             nphy_tpc_5GHz_txgain_rev3;
22604                                                 } else if NREV_IS
22605                                                         (pi->pubpi.phy_rev, 4) {
22606                                                         tx_pwrctrl_tbl =
22607                                                             (pi->srom_fem5g.
22608                                                              extpagain ==
22609                                                              3) ?
22610                                                             nphy_tpc_5GHz_txgain_HiPwrEPA
22611                                                             :
22612                                                             nphy_tpc_5GHz_txgain_rev4;
22613                                                 } else {
22614                                                         tx_pwrctrl_tbl =
22615                                                             nphy_tpc_5GHz_txgain_rev5;
22616                                                 }
22617                                         } else {
22618                                                 if (NREV_GE
22619                                                     (pi->pubpi.phy_rev, 7)) {
22620                                                         if (pi->pubpi.
22621                                                             radiorev == 3) {
22622                                                                 tx_pwrctrl_tbl =
22623                                                                     nphy_tpc_txgain_epa_2057rev3;
22624                                                         } else if (pi->pubpi.
22625                                                                    radiorev ==
22626                                                                    5) {
22627                                                                 tx_pwrctrl_tbl =
22628                                                                     nphy_tpc_txgain_epa_2057rev5;
22629                                                         }
22630
22631                                                 } else {
22632                                                         if (NREV_GE
22633                                                             (pi->pubpi.phy_rev,
22634                                                              5)
22635                                                             && (pi->srom_fem2g.
22636                                                                 extpagain ==
22637                                                                 3)) {
22638                                                                 tx_pwrctrl_tbl =
22639                                                                     nphy_tpc_txgain_HiPwrEPA;
22640                                                         } else {
22641                                                                 tx_pwrctrl_tbl =
22642                                                                     nphy_tpc_txgain_rev3;
22643                                                         }
22644                                                 }
22645                                         }
22646                                 }
22647                                 if NREV_GE
22648                                         (pi->pubpi.phy_rev, 7) {
22649                                         target_gain.ipa[core_no] =
22650                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22651                                              >> 16) & 0x7;
22652                                         target_gain.pad[core_no] =
22653                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22654                                              >> 19) & 0x1f;
22655                                         target_gain.pga[core_no] =
22656                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22657                                              >> 24) & 0xf;
22658                                         target_gain.txgm[core_no] =
22659                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22660                                              >> 28) & 0x7;
22661                                         target_gain.txlpf[core_no] =
22662                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22663                                              >> 31) & 0x1;
22664                                 } else {
22665                                         target_gain.ipa[core_no] =
22666                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22667                                              >> 16) & 0xf;
22668                                         target_gain.pad[core_no] =
22669                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22670                                              >> 20) & 0xf;
22671                                         target_gain.pga[core_no] =
22672                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22673                                              >> 24) & 0xf;
22674                                         target_gain.txgm[core_no] =
22675                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22676                                              >> 28) & 0x7;
22677                                 }
22678                         } else {
22679                                 target_gain.ipa[core_no] =
22680                                     (nphy_tpc_txgain[base_idx[core_no]] >> 16) &
22681                                     0x3;
22682                                 target_gain.pad[core_no] =
22683                                     (nphy_tpc_txgain[base_idx[core_no]] >> 18) &
22684                                     0x3;
22685                                 target_gain.pga[core_no] =
22686                                     (nphy_tpc_txgain[base_idx[core_no]] >> 20) &
22687                                     0x7;
22688                                 target_gain.txgm[core_no] =
22689                                     (nphy_tpc_txgain[base_idx[core_no]] >> 23) &
22690                                     0x7;
22691                         }
22692                 }
22693         }
22694
22695         return target_gain;
22696 }
22697
22698 static void
22699 wlc_phy_iqcal_gainparams_nphy(phy_info_t *pi, u16 core_no,
22700                               nphy_txgains_t target_gain,
22701                               nphy_iqcal_params_t *params)
22702 {
22703         u8 k;
22704         int idx;
22705         u16 gain_index;
22706         u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
22707
22708         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22709                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22710                         params->txlpf = target_gain.txlpf[core_no];
22711                 }
22712                 params->txgm = target_gain.txgm[core_no];
22713                 params->pga = target_gain.pga[core_no];
22714                 params->pad = target_gain.pad[core_no];
22715                 params->ipa = target_gain.ipa[core_no];
22716                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22717                         params->cal_gain =
22718                             ((params->txlpf << 15) | (params->
22719                                                       txgm << 12) | (params->
22720                                                                      pga << 8) |
22721                              (params->pad << 3) | (params->ipa));
22722                 } else {
22723                         params->cal_gain =
22724                             ((params->txgm << 12) | (params->
22725                                                      pga << 8) | (params->
22726                                                                   pad << 4) |
22727                              (params->ipa));
22728                 }
22729                 params->ncorr[0] = 0x79;
22730                 params->ncorr[1] = 0x79;
22731                 params->ncorr[2] = 0x79;
22732                 params->ncorr[3] = 0x79;
22733                 params->ncorr[4] = 0x79;
22734         } else {
22735
22736                 gain_index = ((target_gain.pad[core_no] << 0) |
22737                               (target_gain.pga[core_no] << 4) | (target_gain.
22738                                                                  txgm[core_no]
22739                                                                  << 8));
22740
22741                 idx = -1;
22742                 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
22743                         if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
22744                             gain_index) {
22745                                 idx = k;
22746                                 break;
22747                         }
22748                 }
22749
22750                 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
22751                 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
22752                 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
22753                 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
22754                                     (params->pad << 2));
22755                 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
22756                 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
22757                 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
22758                 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
22759         }
22760 }
22761
22762 static void wlc_phy_txcal_radio_setup_nphy(phy_info_t *pi)
22763 {
22764         u16 jtag_core, core;
22765
22766         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22767
22768                 for (core = 0; core <= 1; core++) {
22769
22770                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
22771                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22772                                             TX_SSI_MASTER);
22773
22774                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
22775                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22776                                             IQCAL_VCM_HG);
22777
22778                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
22779                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22780                                             IQCAL_IDAC);
22781
22782                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
22783                             READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM);
22784
22785                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
22786
22787                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
22788                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22789                                             TX_SSI_MUX);
22790
22791                         if (pi->pubpi.radiorev != 5)
22792                                 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
22793                                     READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22794                                                     TSSIA);
22795
22796                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
22797                             READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
22798
22799                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
22800                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22801                                             TSSI_MISC1);
22802
22803                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22804                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22805                                                  TX_SSI_MASTER, 0x0a);
22806                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22807                                                  IQCAL_VCM_HG, 0x43);
22808                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22809                                                  IQCAL_IDAC, 0x55);
22810                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22811                                                  TSSI_VCM, 0x00);
22812                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22813                                                  TSSIG, 0x00);
22814                                 if (pi->use_int_tx_iqlo_cal_nphy) {
22815                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
22816                                                          core, TX_SSI_MUX, 0x4);
22817                                         if (!
22818                                             (pi->
22819                                              internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
22820
22821                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22822                                                                  TX, core,
22823                                                                  TSSIA, 0x31);
22824                                         } else {
22825
22826                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22827                                                                  TX, core,
22828                                                                  TSSIA, 0x21);
22829                                         }
22830                                 }
22831                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22832                                                  TSSI_MISC1, 0x00);
22833                         } else {
22834                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22835                                                  TX_SSI_MASTER, 0x06);
22836                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22837                                                  IQCAL_VCM_HG, 0x43);
22838                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22839                                                  IQCAL_IDAC, 0x55);
22840                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22841                                                  TSSI_VCM, 0x00);
22842
22843                                 if (pi->pubpi.radiorev != 5)
22844                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
22845                                                          core, TSSIA, 0x00);
22846                                 if (pi->use_int_tx_iqlo_cal_nphy) {
22847                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
22848                                                          core, TX_SSI_MUX,
22849                                                          0x06);
22850                                         if (!
22851                                             (pi->
22852                                              internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
22853
22854                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22855                                                                  TX, core,
22856                                                                  TSSIG, 0x31);
22857                                         } else {
22858
22859                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22860                                                                  TX, core,
22861                                                                  TSSIG, 0x21);
22862                                         }
22863                                 }
22864                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22865                                                  TSSI_MISC1, 0x00);
22866                         }
22867                 }
22868         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22869
22870                 for (core = 0; core <= 1; core++) {
22871                         jtag_core =
22872                             (core ==
22873                              PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
22874
22875                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
22876                             read_radio_reg(pi,
22877                                            RADIO_2056_TX_TX_SSI_MASTER |
22878                                            jtag_core);
22879
22880                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
22881                             read_radio_reg(pi,
22882                                            RADIO_2056_TX_IQCAL_VCM_HG |
22883                                            jtag_core);
22884
22885                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
22886                             read_radio_reg(pi,
22887                                            RADIO_2056_TX_IQCAL_IDAC |
22888                                            jtag_core);
22889
22890                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
22891                             read_radio_reg(pi,
22892                                            RADIO_2056_TX_TSSI_VCM | jtag_core);
22893
22894                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
22895                             read_radio_reg(pi,
22896                                            RADIO_2056_TX_TX_AMP_DET |
22897                                            jtag_core);
22898
22899                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
22900                             read_radio_reg(pi,
22901                                            RADIO_2056_TX_TX_SSI_MUX |
22902                                            jtag_core);
22903
22904                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
22905                             read_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core);
22906
22907                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
22908                             read_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core);
22909
22910                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
22911                             read_radio_reg(pi,
22912                                            RADIO_2056_TX_TSSI_MISC1 |
22913                                            jtag_core);
22914
22915                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
22916                             read_radio_reg(pi,
22917                                            RADIO_2056_TX_TSSI_MISC2 |
22918                                            jtag_core);
22919
22920                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
22921                             read_radio_reg(pi,
22922                                            RADIO_2056_TX_TSSI_MISC3 |
22923                                            jtag_core);
22924
22925                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22926                                 write_radio_reg(pi,
22927                                                 RADIO_2056_TX_TX_SSI_MASTER |
22928                                                 jtag_core, 0x0a);
22929                                 write_radio_reg(pi,
22930                                                 RADIO_2056_TX_IQCAL_VCM_HG |
22931                                                 jtag_core, 0x40);
22932                                 write_radio_reg(pi,
22933                                                 RADIO_2056_TX_IQCAL_IDAC |
22934                                                 jtag_core, 0x55);
22935                                 write_radio_reg(pi,
22936                                                 RADIO_2056_TX_TSSI_VCM |
22937                                                 jtag_core, 0x00);
22938                                 write_radio_reg(pi,
22939                                                 RADIO_2056_TX_TX_AMP_DET |
22940                                                 jtag_core, 0x00);
22941
22942                                 if (PHY_IPA(pi)) {
22943                                         write_radio_reg(pi,
22944                                                         RADIO_2056_TX_TX_SSI_MUX
22945                                                         | jtag_core, 0x4);
22946                                         write_radio_reg(pi,
22947                                                         RADIO_2056_TX_TSSIA |
22948                                                         jtag_core, 0x1);
22949                                 } else {
22950                                         write_radio_reg(pi,
22951                                                         RADIO_2056_TX_TX_SSI_MUX
22952                                                         | jtag_core, 0x00);
22953                                         write_radio_reg(pi,
22954                                                         RADIO_2056_TX_TSSIA |
22955                                                         jtag_core, 0x2f);
22956                                 }
22957                                 write_radio_reg(pi,
22958                                                 RADIO_2056_TX_TSSIG | jtag_core,
22959                                                 0x00);
22960                                 write_radio_reg(pi,
22961                                                 RADIO_2056_TX_TSSI_MISC1 |
22962                                                 jtag_core, 0x00);
22963
22964                                 write_radio_reg(pi,
22965                                                 RADIO_2056_TX_TSSI_MISC2 |
22966                                                 jtag_core, 0x00);
22967                                 write_radio_reg(pi,
22968                                                 RADIO_2056_TX_TSSI_MISC3 |
22969                                                 jtag_core, 0x00);
22970                         } else {
22971                                 write_radio_reg(pi,
22972                                                 RADIO_2056_TX_TX_SSI_MASTER |
22973                                                 jtag_core, 0x06);
22974                                 write_radio_reg(pi,
22975                                                 RADIO_2056_TX_IQCAL_VCM_HG |
22976                                                 jtag_core, 0x40);
22977                                 write_radio_reg(pi,
22978                                                 RADIO_2056_TX_IQCAL_IDAC |
22979                                                 jtag_core, 0x55);
22980                                 write_radio_reg(pi,
22981                                                 RADIO_2056_TX_TSSI_VCM |
22982                                                 jtag_core, 0x00);
22983                                 write_radio_reg(pi,
22984                                                 RADIO_2056_TX_TX_AMP_DET |
22985                                                 jtag_core, 0x00);
22986                                 write_radio_reg(pi,
22987                                                 RADIO_2056_TX_TSSIA | jtag_core,
22988                                                 0x00);
22989
22990                                 if (PHY_IPA(pi)) {
22991
22992                                         write_radio_reg(pi,
22993                                                         RADIO_2056_TX_TX_SSI_MUX
22994                                                         | jtag_core, 0x06);
22995                                         if (NREV_LT(pi->pubpi.phy_rev, 5)) {
22996
22997                                                 write_radio_reg(pi,
22998                                                                 RADIO_2056_TX_TSSIG
22999                                                                 | jtag_core,
23000                                                                 0x11);
23001                                         } else {
23002
23003                                                 write_radio_reg(pi,
23004                                                                 RADIO_2056_TX_TSSIG
23005                                                                 | jtag_core,
23006                                                                 0x1);
23007                                         }
23008                                 } else {
23009                                         write_radio_reg(pi,
23010                                                         RADIO_2056_TX_TX_SSI_MUX
23011                                                         | jtag_core, 0x00);
23012                                         write_radio_reg(pi,
23013                                                         RADIO_2056_TX_TSSIG |
23014                                                         jtag_core, 0x20);
23015                                 }
23016
23017                                 write_radio_reg(pi,
23018                                                 RADIO_2056_TX_TSSI_MISC1 |
23019                                                 jtag_core, 0x00);
23020                                 write_radio_reg(pi,
23021                                                 RADIO_2056_TX_TSSI_MISC2 |
23022                                                 jtag_core, 0x00);
23023                                 write_radio_reg(pi,
23024                                                 RADIO_2056_TX_TSSI_MISC3 |
23025                                                 jtag_core, 0x00);
23026                         }
23027                 }
23028         } else {
23029
23030                 pi->tx_rx_cal_radio_saveregs[0] =
23031                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23032                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23033                 pi->tx_rx_cal_radio_saveregs[1] =
23034                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23035                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23036
23037                 pi->tx_rx_cal_radio_saveregs[2] =
23038                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23039                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23040                 pi->tx_rx_cal_radio_saveregs[3] =
23041                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23042                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23043
23044                 pi->tx_rx_cal_radio_saveregs[4] =
23045                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23046                 pi->tx_rx_cal_radio_saveregs[5] =
23047                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23048
23049                 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23050                     0) {
23051
23052                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23053                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23054                 } else {
23055
23056                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23057                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23058                 }
23059
23060                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23061
23062                         or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23063                         or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23064                 } else {
23065
23066                         and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23067                         and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23068                 }
23069         }
23070 }
23071
23072 static void wlc_phy_txcal_radio_cleanup_nphy(phy_info_t *pi)
23073 {
23074         u16 jtag_core, core;
23075
23076         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23077                 for (core = 0; core <= 1; core++) {
23078
23079                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23080                                          TX_SSI_MASTER,
23081                                          pi->
23082                                          tx_rx_cal_radio_saveregs[(core * 11) +
23083                                                                   0]);
23084
23085                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23086                                          pi->
23087                                          tx_rx_cal_radio_saveregs[(core * 11) +
23088                                                                   1]);
23089
23090                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23091                                          pi->
23092                                          tx_rx_cal_radio_saveregs[(core * 11) +
23093                                                                   2]);
23094
23095                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23096                                          pi->
23097                                          tx_rx_cal_radio_saveregs[(core * 11) +
23098                                                                   3]);
23099
23100                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23101                                          pi->
23102                                          tx_rx_cal_radio_saveregs[(core * 11) +
23103                                                                   5]);
23104
23105                         if (pi->pubpi.radiorev != 5)
23106                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23107                                                  TSSIA,
23108                                                  pi->
23109                                                  tx_rx_cal_radio_saveregs[(core
23110                                                                            *
23111                                                                            11) +
23112                                                                           6]);
23113
23114                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23115                                          pi->
23116                                          tx_rx_cal_radio_saveregs[(core * 11) +
23117                                                                   7]);
23118
23119                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23120                                          pi->
23121                                          tx_rx_cal_radio_saveregs[(core * 11) +
23122                                                                   8]);
23123                 }
23124         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23125                 for (core = 0; core <= 1; core++) {
23126                         jtag_core =
23127                             (core ==
23128                              PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23129
23130                         write_radio_reg(pi,
23131                                         RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23132                                         pi->
23133                                         tx_rx_cal_radio_saveregs[(core * 11) +
23134                                                                  0]);
23135
23136                         write_radio_reg(pi,
23137                                         RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23138                                         pi->
23139                                         tx_rx_cal_radio_saveregs[(core * 11) +
23140                                                                  1]);
23141
23142                         write_radio_reg(pi,
23143                                         RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23144                                         pi->
23145                                         tx_rx_cal_radio_saveregs[(core * 11) +
23146                                                                  2]);
23147
23148                         write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23149                                         pi->
23150                                         tx_rx_cal_radio_saveregs[(core * 11) +
23151                                                                  3]);
23152
23153                         write_radio_reg(pi,
23154                                         RADIO_2056_TX_TX_AMP_DET | jtag_core,
23155                                         pi->
23156                                         tx_rx_cal_radio_saveregs[(core * 11) +
23157                                                                  4]);
23158
23159                         write_radio_reg(pi,
23160                                         RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23161                                         pi->
23162                                         tx_rx_cal_radio_saveregs[(core * 11) +
23163                                                                  5]);
23164
23165                         write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23166                                         pi->
23167                                         tx_rx_cal_radio_saveregs[(core * 11) +
23168                                                                  6]);
23169
23170                         write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23171                                         pi->
23172                                         tx_rx_cal_radio_saveregs[(core * 11) +
23173                                                                  7]);
23174
23175                         write_radio_reg(pi,
23176                                         RADIO_2056_TX_TSSI_MISC1 | jtag_core,
23177                                         pi->
23178                                         tx_rx_cal_radio_saveregs[(core * 11) +
23179                                                                  8]);
23180
23181                         write_radio_reg(pi,
23182                                         RADIO_2056_TX_TSSI_MISC2 | jtag_core,
23183                                         pi->
23184                                         tx_rx_cal_radio_saveregs[(core * 11) +
23185                                                                  9]);
23186
23187                         write_radio_reg(pi,
23188                                         RADIO_2056_TX_TSSI_MISC3 | jtag_core,
23189                                         pi->
23190                                         tx_rx_cal_radio_saveregs[(core * 11) +
23191                                                                  10]);
23192                 }
23193         } else {
23194
23195                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
23196                                 pi->tx_rx_cal_radio_saveregs[0]);
23197                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
23198                                 pi->tx_rx_cal_radio_saveregs[1]);
23199                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
23200                                 pi->tx_rx_cal_radio_saveregs[2]);
23201                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
23202                                 pi->tx_rx_cal_radio_saveregs[3]);
23203                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
23204                                 pi->tx_rx_cal_radio_saveregs[4]);
23205                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
23206                                 pi->tx_rx_cal_radio_saveregs[5]);
23207         }
23208 }
23209
23210 static void wlc_phy_txcal_physetup_nphy(phy_info_t *pi)
23211 {
23212         u16 val, mask;
23213
23214         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23215                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23216                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23217
23218                 mask = ((0x3 << 8) | (0x3 << 10));
23219                 val = (0x2 << 8);
23220                 val |= (0x2 << 10);
23221                 mod_phy_reg(pi, 0xa6, mask, val);
23222                 mod_phy_reg(pi, 0xa7, mask, val);
23223
23224                 val = read_phy_reg(pi, 0x8f);
23225                 pi->tx_rx_cal_phy_saveregs[2] = val;
23226                 val |= ((0x1 << 9) | (0x1 << 10));
23227                 write_phy_reg(pi, 0x8f, val);
23228
23229                 val = read_phy_reg(pi, 0xa5);
23230                 pi->tx_rx_cal_phy_saveregs[3] = val;
23231                 val |= ((0x1 << 9) | (0x1 << 10));
23232                 write_phy_reg(pi, 0xa5, val);
23233
23234                 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
23235                 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23236
23237                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23238                                         &val);
23239                 pi->tx_rx_cal_phy_saveregs[5] = val;
23240                 val = 0;
23241                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23242                                          &val);
23243
23244                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23245                                         &val);
23246                 pi->tx_rx_cal_phy_saveregs[6] = val;
23247                 val = 0;
23248                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23249                                          &val);
23250
23251                 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
23252                 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
23253
23254                 if (!(pi->use_int_tx_iqlo_cal_nphy)) {
23255
23256                         wlc_phy_rfctrlintc_override_nphy(pi,
23257                                                          NPHY_RfctrlIntc_override_PA,
23258                                                          1,
23259                                                          RADIO_MIMO_CORESEL_CORE1
23260                                                          |
23261                                                          RADIO_MIMO_CORESEL_CORE2);
23262                 } else {
23263
23264                         wlc_phy_rfctrlintc_override_nphy(pi,
23265                                                          NPHY_RfctrlIntc_override_PA,
23266                                                          0,
23267                                                          RADIO_MIMO_CORESEL_CORE1
23268                                                          |
23269                                                          RADIO_MIMO_CORESEL_CORE2);
23270                 }
23271
23272                 wlc_phy_rfctrlintc_override_nphy(pi,
23273                                                  NPHY_RfctrlIntc_override_TRSW,
23274                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
23275                 wlc_phy_rfctrlintc_override_nphy(pi,
23276                                                  NPHY_RfctrlIntc_override_TRSW,
23277                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
23278
23279                 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
23280                 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
23281                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
23282                             0x29b, (0x1 << 0), (0) << 0);
23283
23284                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
23285                             0x29b, (0x1 << 0), (0) << 0);
23286
23287                 if (NREV_IS(pi->pubpi.phy_rev, 7)
23288                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
23289                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
23290                                                           wlc_phy_read_lpf_bw_ctl_nphy
23291                                                           (pi, 0), 0, 0,
23292                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
23293                 }
23294
23295                 if (pi->use_int_tx_iqlo_cal_nphy
23296                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
23297
23298                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
23299
23300                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
23301                                               1 << 4);
23302
23303                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23304                                         mod_radio_reg(pi,
23305                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE0,
23306                                                       1, 0);
23307                                         mod_radio_reg(pi,
23308                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE1,
23309                                                       1, 0);
23310                                 } else {
23311                                         mod_radio_reg(pi,
23312                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
23313                                                       1, 0);
23314                                         mod_radio_reg(pi,
23315                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
23316                                                       1, 0);
23317                                 }
23318                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
23319                                 wlc_phy_rfctrl_override_nphy_rev7(pi,
23320                                                                   (0x1 << 3), 0,
23321                                                                   0x3, 0,
23322                                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
23323                         }
23324                 }
23325         } else {
23326                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23327                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23328
23329                 mask = ((0x3 << 12) | (0x3 << 14));
23330                 val = (0x2 << 12);
23331                 val |= (0x2 << 14);
23332                 mod_phy_reg(pi, 0xa6, mask, val);
23333                 mod_phy_reg(pi, 0xa7, mask, val);
23334
23335                 val = read_phy_reg(pi, 0xa5);
23336                 pi->tx_rx_cal_phy_saveregs[2] = val;
23337                 val |= ((0x1 << 12) | (0x1 << 13));
23338                 write_phy_reg(pi, 0xa5, val);
23339
23340                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
23341                                         &val);
23342                 pi->tx_rx_cal_phy_saveregs[3] = val;
23343                 val |= 0x2000;
23344                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
23345                                          &val);
23346
23347                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
23348                                         &val);
23349                 pi->tx_rx_cal_phy_saveregs[4] = val;
23350                 val |= 0x2000;
23351                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
23352                                          &val);
23353
23354                 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
23355                 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
23356                 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
23357                 write_phy_reg(pi, 0x91, val);
23358                 write_phy_reg(pi, 0x92, val);
23359         }
23360 }
23361
23362 static void wlc_phy_txcal_phycleanup_nphy(phy_info_t *pi)
23363 {
23364         u16 mask;
23365
23366         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23367                 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
23368                 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
23369                 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
23370                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
23371                 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
23372
23373                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23374                                          &pi->tx_rx_cal_phy_saveregs[5]);
23375                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23376                                          &pi->tx_rx_cal_phy_saveregs[6]);
23377
23378                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
23379                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
23380
23381                 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
23382                 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
23383
23384                 if (NREV_IS(pi->pubpi.phy_rev, 7)
23385                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
23386                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7), 0, 0,
23387                                                           1,
23388                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
23389                 }
23390
23391                 wlc_phy_resetcca_nphy(pi);
23392
23393                 if (pi->use_int_tx_iqlo_cal_nphy
23394                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
23395
23396                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
23397                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23398                                         mod_radio_reg(pi,
23399                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE0,
23400                                                       1, 1);
23401                                         mod_radio_reg(pi,
23402                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE1,
23403                                                       1, 1);
23404                                 } else {
23405                                         mod_radio_reg(pi,
23406                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
23407                                                       1, 1);
23408                                         mod_radio_reg(pi,
23409                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
23410                                                       1, 1);
23411                                 }
23412
23413                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
23414                                               0);
23415                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
23416                                 wlc_phy_rfctrl_override_nphy_rev7(pi,
23417                                                                   (0x1 << 3), 0,
23418                                                                   0x3, 1,
23419                                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
23420                         }
23421                 }
23422         } else {
23423                 mask = ((0x3 << 12) | (0x3 << 14));
23424                 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
23425                 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
23426                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
23427
23428                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
23429                                          &pi->tx_rx_cal_phy_saveregs[3]);
23430
23431                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
23432                                          &pi->tx_rx_cal_phy_saveregs[4]);
23433
23434                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
23435                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
23436         }
23437 }
23438
23439 #define NPHY_CAL_TSSISAMPS      64
23440 #define NPHY_TEST_TONE_FREQ_40MHz 4000
23441 #define NPHY_TEST_TONE_FREQ_20MHz 2500
23442
23443 void
23444 wlc_phy_est_tonepwr_nphy(phy_info_t *pi, s32 *qdBm_pwrbuf, u8 num_samps)
23445 {
23446         u16 tssi_reg;
23447         s32 temp, pwrindex[2];
23448         s32 idle_tssi[2];
23449         s32 rssi_buf[4];
23450         s32 tssival[2];
23451         u8 tssi_type;
23452
23453         tssi_reg = read_phy_reg(pi, 0x1e9);
23454
23455         temp = (s32) (tssi_reg & 0x3f);
23456         idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
23457
23458         temp = (s32) ((tssi_reg >> 8) & 0x3f);
23459         idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
23460
23461         tssi_type =
23462             CHSPEC_IS5G(pi->radio_chanspec) ?
23463             (u8)NPHY_RSSI_SEL_TSSI_5G:(u8)NPHY_RSSI_SEL_TSSI_2G;
23464
23465         wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
23466
23467         tssival[0] = rssi_buf[0] / ((s32) num_samps);
23468         tssival[1] = rssi_buf[2] / ((s32) num_samps);
23469
23470         pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
23471         pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
23472
23473         if (pwrindex[0] < 0) {
23474                 pwrindex[0] = 0;
23475         } else if (pwrindex[0] > 63) {
23476                 pwrindex[0] = 63;
23477         }
23478
23479         if (pwrindex[1] < 0) {
23480                 pwrindex[1] = 0;
23481         } else if (pwrindex[1] > 63) {
23482                 pwrindex[1] = 63;
23483         }
23484
23485         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
23486                                 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
23487         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
23488                                 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
23489 }
23490
23491 static void wlc_phy_internal_cal_txgain_nphy(phy_info_t *pi)
23492 {
23493         u16 txcal_gain[2];
23494
23495         pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
23496         pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
23497         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
23498         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
23499
23500         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23501                                 txcal_gain);
23502
23503         if (CHSPEC_IS2G(pi->radio_chanspec)) {
23504                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
23505                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
23506         } else {
23507                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
23508                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
23509         }
23510
23511         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23512                                  txcal_gain);
23513 }
23514
23515 static void wlc_phy_precal_txgain_nphy(phy_info_t *pi)
23516 {
23517         bool save_bbmult = false;
23518         u8 txcal_index_2057_rev5n7 = 0;
23519         u8 txcal_index_2057_rev3n4n6 = 10;
23520
23521         if (pi->use_int_tx_iqlo_cal_nphy) {
23522                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23523                         if ((pi->pubpi.radiorev == 3) ||
23524                             (pi->pubpi.radiorev == 4) ||
23525                             (pi->pubpi.radiorev == 6)) {
23526
23527                                 pi->nphy_txcal_pwr_idx[0] =
23528                                     txcal_index_2057_rev3n4n6;
23529                                 pi->nphy_txcal_pwr_idx[1] =
23530                                     txcal_index_2057_rev3n4n6;
23531                                 wlc_phy_txpwr_index_nphy(pi, 3,
23532                                                          txcal_index_2057_rev3n4n6,
23533                                                          false);
23534                         } else {
23535
23536                                 pi->nphy_txcal_pwr_idx[0] =
23537                                     txcal_index_2057_rev5n7;
23538                                 pi->nphy_txcal_pwr_idx[1] =
23539                                     txcal_index_2057_rev5n7;
23540                                 wlc_phy_txpwr_index_nphy(pi, 3,
23541                                                          txcal_index_2057_rev5n7,
23542                                                          false);
23543                         }
23544                         save_bbmult = true;
23545
23546                 } else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
23547                         wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
23548                         if (pi->sh->hw_phytxchain != 3) {
23549                                 pi->nphy_txcal_pwr_idx[1] =
23550                                     pi->nphy_txcal_pwr_idx[0];
23551                                 wlc_phy_txpwr_index_nphy(pi, 3,
23552                                                          pi->
23553                                                          nphy_txcal_pwr_idx[0],
23554                                                          true);
23555                                 save_bbmult = true;
23556                         }
23557
23558                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
23559                         if (PHY_IPA(pi)) {
23560                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23561                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
23562                                                                     false);
23563                                 } else {
23564                                         pi->nphy_txcal_pwr_idx[0] = 80;
23565                                         pi->nphy_txcal_pwr_idx[1] = 80;
23566                                         wlc_phy_txpwr_index_nphy(pi, 3, 80,
23567                                                                  false);
23568                                         save_bbmult = true;
23569                                 }
23570                         } else {
23571
23572                                 wlc_phy_internal_cal_txgain_nphy(pi);
23573                                 save_bbmult = true;
23574                         }
23575
23576                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
23577                         if (PHY_IPA(pi)) {
23578                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23579                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
23580                                                                     false);
23581                                 } else {
23582                                         wlc_phy_cal_txgainctrl_nphy(pi, 14,
23583                                                                     false);
23584                                 }
23585                         } else {
23586
23587                                 wlc_phy_internal_cal_txgain_nphy(pi);
23588                                 save_bbmult = true;
23589                         }
23590                 }
23591
23592         } else {
23593                 wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
23594         }
23595
23596         if (save_bbmult) {
23597                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
23598                                         &pi->nphy_txcal_bbmult);
23599         }
23600 }
23601
23602 void
23603 wlc_phy_cal_txgainctrl_nphy(phy_info_t *pi, s32 dBm_targetpower, bool debug)
23604 {
23605         int gainctrl_loopidx;
23606         uint core;
23607         u16 m0m1, curr_m0m1;
23608         s32 delta_power;
23609         s32 txpwrindex;
23610         s32 qdBm_power[2];
23611         u16 orig_BBConfig;
23612         u16 phy_saveregs[4];
23613         u32 freq_test;
23614         u16 ampl_test = 250;
23615         uint stepsize;
23616         bool phyhang_avoid_state = false;
23617
23618         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23619
23620                 stepsize = 2;
23621         } else {
23622
23623                 stepsize = 1;
23624         }
23625
23626         if (CHSPEC_IS40(pi->radio_chanspec)) {
23627                 freq_test = 5000;
23628         } else {
23629                 freq_test = 2500;
23630         }
23631
23632         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
23633         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
23634
23635         if (pi->phyhang_avoid)
23636                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23637
23638         phyhang_avoid_state = pi->phyhang_avoid;
23639         pi->phyhang_avoid = false;
23640
23641         phy_saveregs[0] = read_phy_reg(pi, 0x91);
23642         phy_saveregs[1] = read_phy_reg(pi, 0x92);
23643         phy_saveregs[2] = read_phy_reg(pi, 0xe7);
23644         phy_saveregs[3] = read_phy_reg(pi, 0xec);
23645         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
23646                                          RADIO_MIMO_CORESEL_CORE1 |
23647                                          RADIO_MIMO_CORESEL_CORE2);
23648
23649         if (!debug) {
23650                 wlc_phy_rfctrlintc_override_nphy(pi,
23651                                                  NPHY_RfctrlIntc_override_TRSW,
23652                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
23653                 wlc_phy_rfctrlintc_override_nphy(pi,
23654                                                  NPHY_RfctrlIntc_override_TRSW,
23655                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
23656         } else {
23657                 wlc_phy_rfctrlintc_override_nphy(pi,
23658                                                  NPHY_RfctrlIntc_override_TRSW,
23659                                                  0x1, RADIO_MIMO_CORESEL_CORE1);
23660                 wlc_phy_rfctrlintc_override_nphy(pi,
23661                                                  NPHY_RfctrlIntc_override_TRSW,
23662                                                  0x7, RADIO_MIMO_CORESEL_CORE2);
23663         }
23664
23665         orig_BBConfig = read_phy_reg(pi, 0x01);
23666         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23667
23668         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
23669
23670         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
23671                 txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
23672
23673                 for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
23674                      gainctrl_loopidx++) {
23675                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
23676                                              false);
23677
23678                         if (core == PHY_CORE_0) {
23679                                 curr_m0m1 = m0m1 & 0xff00;
23680                         } else {
23681                                 curr_m0m1 = m0m1 & 0x00ff;
23682                         }
23683
23684                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
23685                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
23686
23687                         udelay(50);
23688
23689                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
23690                                                  NPHY_CAL_TSSISAMPS);
23691
23692                         pi->nphy_bb_mult_save = 0;
23693                         wlc_phy_stopplayback_nphy(pi);
23694
23695                         delta_power = (dBm_targetpower * 4) - qdBm_power[core];
23696
23697                         txpwrindex -= stepsize * delta_power;
23698                         if (txpwrindex < 0) {
23699                                 txpwrindex = 0;
23700                         } else if (txpwrindex > 127) {
23701                                 txpwrindex = 127;
23702                         }
23703
23704                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23705                                 if (NREV_IS(pi->pubpi.phy_rev, 4) &&
23706                                     (pi->srom_fem5g.extpagain == 3)) {
23707                                         if (txpwrindex < 30) {
23708                                                 txpwrindex = 30;
23709                                         }
23710                                 }
23711                         } else {
23712                                 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
23713                                     (pi->srom_fem2g.extpagain == 3)) {
23714                                         if (txpwrindex < 50) {
23715                                                 txpwrindex = 50;
23716                                         }
23717                                 }
23718                         }
23719
23720                         wlc_phy_txpwr_index_nphy(pi, (1 << core),
23721                                                  (u8) txpwrindex, true);
23722                 }
23723
23724                 pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
23725
23726                 if (debug) {
23727                         u16 radio_gain;
23728                         u16 dbg_m0m1;
23729
23730                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
23731
23732                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
23733                                              false);
23734
23735                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
23736                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
23737
23738                         udelay(100);
23739
23740                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
23741                                                  NPHY_CAL_TSSISAMPS);
23742
23743                         wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
23744                                                 &radio_gain);
23745
23746                         mdelay(4000);
23747                         pi->nphy_bb_mult_save = 0;
23748                         wlc_phy_stopplayback_nphy(pi);
23749                 }
23750         }
23751
23752         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
23753         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
23754
23755         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
23756
23757         write_phy_reg(pi, 0x01, orig_BBConfig);
23758
23759         write_phy_reg(pi, 0x91, phy_saveregs[0]);
23760         write_phy_reg(pi, 0x92, phy_saveregs[1]);
23761         write_phy_reg(pi, 0xe7, phy_saveregs[2]);
23762         write_phy_reg(pi, 0xec, phy_saveregs[3]);
23763
23764         pi->phyhang_avoid = phyhang_avoid_state;
23765
23766         if (pi->phyhang_avoid)
23767                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23768 }
23769
23770 static void wlc_phy_update_txcal_ladder_nphy(phy_info_t *pi, u16 core)
23771 {
23772         int index;
23773         u32 bbmult_scale;
23774         u16 bbmult;
23775         u16 tblentry;
23776
23777         nphy_txiqcal_ladder_t ladder_lo[] = {
23778                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
23779                 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
23780                 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
23781         };
23782
23783         nphy_txiqcal_ladder_t ladder_iq[] = {
23784                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
23785                 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
23786                 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
23787         };
23788
23789         bbmult = (core == PHY_CORE_0) ?
23790             ((pi->nphy_txcal_bbmult >> 8) & 0xff) : (pi->
23791                                                      nphy_txcal_bbmult & 0xff);
23792
23793         for (index = 0; index < 18; index++) {
23794                 bbmult_scale = ladder_lo[index].percent * bbmult;
23795                 bbmult_scale /= 100;
23796
23797                 tblentry =
23798                     ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
23799                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
23800                                          &tblentry);
23801
23802                 bbmult_scale = ladder_iq[index].percent * bbmult;
23803                 bbmult_scale /= 100;
23804
23805                 tblentry =
23806                     ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
23807                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
23808                                          16, &tblentry);
23809         }
23810 }
23811
23812 void wlc_phy_cal_perical_nphy_run(phy_info_t *pi, u8 caltype)
23813 {
23814         nphy_txgains_t target_gain;
23815         u8 tx_pwr_ctrl_state;
23816         bool fullcal = true;
23817         bool restore_tx_gain = false;
23818         bool mphase;
23819
23820         if (NORADIO_ENAB(pi->pubpi)) {
23821                 wlc_phy_cal_perical_mphase_reset(pi);
23822                 return;
23823         }
23824
23825         if (PHY_MUTED(pi))
23826                 return;
23827
23828         if (caltype == PHY_PERICAL_AUTO)
23829                 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
23830         else if (caltype == PHY_PERICAL_PARTIAL)
23831                 fullcal = false;
23832
23833         if (pi->cal_type_override != PHY_PERICAL_AUTO) {
23834                 fullcal =
23835                     (pi->cal_type_override == PHY_PERICAL_FULL) ? true : false;
23836         }
23837
23838         if ((pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT)) {
23839                 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
23840                         wlc_phy_cal_perical_mphase_restart(pi);
23841         }
23842
23843         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL)) {
23844                 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
23845         }
23846
23847         wlapi_suspend_mac_and_wait(pi->sh->physhim);
23848
23849         wlc_phyreg_enter((wlc_phy_t *) pi);
23850
23851         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
23852             (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
23853                 pi->nphy_cal_orig_pwr_idx[0] =
23854                     (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
23855                 pi->nphy_cal_orig_pwr_idx[1] =
23856                     (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
23857
23858                 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
23859                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
23860                                                 0x110, 16,
23861                                                 pi->nphy_cal_orig_tx_gain);
23862                 } else {
23863                         pi->nphy_cal_orig_tx_gain[0] = 0;
23864                         pi->nphy_cal_orig_tx_gain[1] = 0;
23865                 }
23866         }
23867         target_gain = wlc_phy_get_tx_gain_nphy(pi);
23868         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
23869         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
23870
23871         if (pi->antsel_type == ANTSEL_2x3)
23872                 wlc_phy_antsel_init((wlc_phy_t *) pi, true);
23873
23874         mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
23875         if (!mphase) {
23876
23877                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23878                         wlc_phy_precal_txgain_nphy(pi);
23879                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
23880                         restore_tx_gain = true;
23881
23882                         target_gain = pi->nphy_cal_target_gain;
23883                 }
23884                 if (0 ==
23885                     wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal, mphase)) {
23886                         if (PHY_IPA(pi))
23887                                 wlc_phy_a4(pi, true);
23888
23889                         wlc_phyreg_exit((wlc_phy_t *) pi);
23890                         wlapi_enable_mac(pi->sh->physhim);
23891                         wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
23892                                              10000);
23893                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
23894                         wlc_phyreg_enter((wlc_phy_t *) pi);
23895
23896                         if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
23897                                                              (pi->
23898                                                               first_cal_after_assoc
23899                                                               || (pi->
23900                                                                   cal_type_override
23901                                                                   ==
23902                                                                   PHY_PERICAL_FULL))
23903                                                              ? 2 : 0, false)) {
23904                                 wlc_phy_savecal_nphy(pi);
23905
23906                                 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
23907
23908                                 pi->nphy_perical_last = pi->sh->now;
23909                         }
23910                 }
23911                 if (caltype != PHY_PERICAL_AUTO) {
23912                         wlc_phy_rssi_cal_nphy(pi);
23913                 }
23914
23915                 if (pi->first_cal_after_assoc
23916                     || (pi->cal_type_override == PHY_PERICAL_FULL)) {
23917                         pi->first_cal_after_assoc = false;
23918                         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
23919                         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
23920                 }
23921
23922                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23923                         wlc_phy_radio205x_vcocal_nphy(pi);
23924                 }
23925         } else {
23926                 switch (pi->mphase_cal_phase_id) {
23927                 case MPHASE_CAL_STATE_INIT:
23928                         pi->nphy_perical_last = pi->sh->now;
23929                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
23930
23931                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23932                                 wlc_phy_precal_txgain_nphy(pi);
23933                         }
23934                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
23935                         pi->mphase_cal_phase_id++;
23936                         break;
23937
23938                 case MPHASE_CAL_STATE_TXPHASE0:
23939                 case MPHASE_CAL_STATE_TXPHASE1:
23940                 case MPHASE_CAL_STATE_TXPHASE2:
23941                 case MPHASE_CAL_STATE_TXPHASE3:
23942                 case MPHASE_CAL_STATE_TXPHASE4:
23943                 case MPHASE_CAL_STATE_TXPHASE5:
23944                         if ((pi->radar_percal_mask & 0x10) != 0)
23945                                 pi->nphy_rxcal_active = true;
23946
23947                         if (wlc_phy_cal_txiqlo_nphy
23948                             (pi, pi->nphy_cal_target_gain, fullcal,
23949                              true) != 0) {
23950
23951                                 wlc_phy_cal_perical_mphase_reset(pi);
23952                                 break;
23953                         }
23954
23955                         if (NREV_LE(pi->pubpi.phy_rev, 2) &&
23956                             (pi->mphase_cal_phase_id ==
23957                              MPHASE_CAL_STATE_TXPHASE4)) {
23958                                 pi->mphase_cal_phase_id += 2;
23959                         } else {
23960                                 pi->mphase_cal_phase_id++;
23961                         }
23962                         break;
23963
23964                 case MPHASE_CAL_STATE_PAPDCAL:
23965                         if ((pi->radar_percal_mask & 0x2) != 0)
23966                                 pi->nphy_rxcal_active = true;
23967
23968                         if (PHY_IPA(pi)) {
23969                                 wlc_phy_a4(pi, true);
23970                         }
23971                         pi->mphase_cal_phase_id++;
23972                         break;
23973
23974                 case MPHASE_CAL_STATE_RXCAL:
23975                         if ((pi->radar_percal_mask & 0x1) != 0)
23976                                 pi->nphy_rxcal_active = true;
23977                         if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
23978                                                   (pi->first_cal_after_assoc ||
23979                                                    (pi->cal_type_override ==
23980                                                     PHY_PERICAL_FULL)) ? 2 : 0,
23981                                                   false) == 0) {
23982                                 wlc_phy_savecal_nphy(pi);
23983                         }
23984
23985                         pi->mphase_cal_phase_id++;
23986                         break;
23987
23988                 case MPHASE_CAL_STATE_RSSICAL:
23989                         if ((pi->radar_percal_mask & 0x4) != 0)
23990                                 pi->nphy_rxcal_active = true;
23991                         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
23992                         wlc_phy_rssi_cal_nphy(pi);
23993
23994                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23995                                 wlc_phy_radio205x_vcocal_nphy(pi);
23996                         }
23997                         restore_tx_gain = true;
23998
23999                         if (pi->first_cal_after_assoc) {
24000                                 pi->mphase_cal_phase_id++;
24001                         } else {
24002                                 wlc_phy_cal_perical_mphase_reset(pi);
24003                         }
24004
24005                         break;
24006
24007                 case MPHASE_CAL_STATE_IDLETSSI:
24008                         if ((pi->radar_percal_mask & 0x8) != 0)
24009                                 pi->nphy_rxcal_active = true;
24010
24011                         if (pi->first_cal_after_assoc) {
24012                                 pi->first_cal_after_assoc = false;
24013                                 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
24014                                 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
24015                         }
24016
24017                         wlc_phy_cal_perical_mphase_reset(pi);
24018                         break;
24019
24020                 default:
24021                         wlc_phy_cal_perical_mphase_reset(pi);
24022                         break;
24023                 }
24024         }
24025
24026         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24027                 if (restore_tx_gain) {
24028                         if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
24029
24030                                 wlc_phy_txpwr_index_nphy(pi, 1,
24031                                                          pi->
24032                                                          nphy_cal_orig_pwr_idx
24033                                                          [0], false);
24034                                 wlc_phy_txpwr_index_nphy(pi, 2,
24035                                                          pi->
24036                                                          nphy_cal_orig_pwr_idx
24037                                                          [1], false);
24038
24039                                 pi->nphy_txpwrindex[0].index = -1;
24040                                 pi->nphy_txpwrindex[1].index = -1;
24041                         } else {
24042                                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
24043                                                          (s8) (pi->
24044                                                                  nphy_txpwrindex
24045                                                                  [0].
24046                                                                  index_internal),
24047                                                          false);
24048                                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
24049                                                          (s8) (pi->
24050                                                                  nphy_txpwrindex
24051                                                                  [1].
24052                                                                  index_internal),
24053                                                          false);
24054                         }
24055                 }
24056         }
24057
24058         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
24059         wlc_phyreg_exit((wlc_phy_t *) pi);
24060         wlapi_enable_mac(pi->sh->physhim);
24061 }
24062
24063 int
24064 wlc_phy_cal_txiqlo_nphy(phy_info_t *pi, nphy_txgains_t target_gain,
24065                         bool fullcal, bool mphase)
24066 {
24067         u16 val;
24068         u16 tbl_buf[11];
24069         u8 cal_cnt;
24070         u16 cal_cmd;
24071         u8 num_cals, max_cal_cmds;
24072         u16 core_no, cal_type;
24073         u16 diq_start = 0;
24074         u8 phy_bw;
24075         u16 max_val;
24076         u16 tone_freq;
24077         u16 gain_save[2];
24078         u16 cal_gain[2];
24079         nphy_iqcal_params_t cal_params[2];
24080         u32 tbl_len;
24081         void *tbl_ptr;
24082         bool ladder_updated[2];
24083         u8 mphase_cal_lastphase = 0;
24084         int bcmerror = 0;
24085         bool phyhang_avoid_state = false;
24086
24087         u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
24088                 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
24089                     0x1902,
24090                 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
24091                     0x6407
24092         };
24093
24094         u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
24095                 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
24096                     0x3200,
24097                 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
24098                     0x6407
24099         };
24100
24101         u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
24102                 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
24103                     0x1202,
24104                 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
24105                     0x4707
24106         };
24107
24108         u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
24109                 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
24110                     0x2300,
24111                 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
24112                     0x4707
24113         };
24114
24115         u16 tbl_tx_iqlo_cal_startcoefs[] = {
24116                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
24117                     0x0000
24118         };
24119
24120         u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
24121                 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
24122                 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
24123         };
24124
24125         u16 tbl_tx_iqlo_cal_cmds_recal[] = {
24126                 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
24127                 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
24128         };
24129
24130         u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
24131                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
24132                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
24133                 0x0000
24134         };
24135
24136         u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
24137                 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
24138                 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
24139         };
24140
24141         u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
24142                 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
24143                 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
24144         };
24145
24146         wlc_phy_stay_in_carriersearch_nphy(pi, true);
24147
24148         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
24149                 phyhang_avoid_state = pi->phyhang_avoid;
24150                 pi->phyhang_avoid = false;
24151         }
24152
24153         if (CHSPEC_IS40(pi->radio_chanspec)) {
24154                 phy_bw = 40;
24155         } else {
24156                 phy_bw = 20;
24157         }
24158
24159         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
24160
24161         for (core_no = 0; core_no <= 1; core_no++) {
24162                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
24163                                               &cal_params[core_no]);
24164                 cal_gain[core_no] = cal_params[core_no].cal_gain;
24165         }
24166
24167         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
24168
24169         wlc_phy_txcal_radio_setup_nphy(pi);
24170
24171         wlc_phy_txcal_physetup_nphy(pi);
24172
24173         ladder_updated[0] = ladder_updated[1] = false;
24174         if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
24175               (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
24176                && (CHSPEC_IS2G(pi->radio_chanspec))))) {
24177
24178                 if (phy_bw == 40) {
24179                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
24180                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
24181                 } else {
24182                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
24183                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
24184                 }
24185                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
24186                                          16, tbl_ptr);
24187
24188                 if (phy_bw == 40) {
24189                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
24190                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
24191                 } else {
24192                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
24193                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
24194                 }
24195                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
24196                                          16, tbl_ptr);
24197         }
24198
24199         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24200                 write_phy_reg(pi, 0xc2, 0x8ad9);
24201         } else {
24202                 write_phy_reg(pi, 0xc2, 0x8aa9);
24203         }
24204
24205         max_val = 250;
24206         tone_freq = (phy_bw == 20) ? 2500 : 5000;
24207
24208         if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
24209                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
24210                 bcmerror = 0;
24211         } else {
24212                 bcmerror =
24213                     wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0, false);
24214         }
24215
24216         if (bcmerror == 0) {
24217
24218                 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
24219                         tbl_ptr = pi->mphase_txcal_bestcoeffs;
24220                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
24221                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24222
24223                                 tbl_len -= 2;
24224                         }
24225                 } else {
24226                         if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
24227
24228                                 tbl_ptr = pi->nphy_txiqlocal_bestc;
24229                                 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
24230                                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24231
24232                                         tbl_len -= 2;
24233                                 }
24234                         } else {
24235
24236                                 fullcal = true;
24237
24238                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24239                                         tbl_ptr =
24240                                             tbl_tx_iqlo_cal_startcoefs_nphyrev3;
24241                                         tbl_len =
24242                                             ARRAY_SIZE
24243                                             (tbl_tx_iqlo_cal_startcoefs_nphyrev3);
24244                                 } else {
24245                                         tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
24246                                         tbl_len =
24247                                             ARRAY_SIZE
24248                                             (tbl_tx_iqlo_cal_startcoefs);
24249                                 }
24250                         }
24251                 }
24252                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
24253                                          16, tbl_ptr);
24254
24255                 if (fullcal) {
24256                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24257                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
24258                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
24259                 } else {
24260                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24261                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
24262                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
24263                 }
24264
24265                 if (mphase) {
24266                         cal_cnt = pi->mphase_txcal_cmdidx;
24267                         if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds) {
24268                                 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
24269                         } else {
24270                                 num_cals = max_cal_cmds;
24271                         }
24272                 } else {
24273                         cal_cnt = 0;
24274                         num_cals = max_cal_cmds;
24275                 }
24276
24277                 for (; cal_cnt < num_cals; cal_cnt++) {
24278
24279                         if (fullcal) {
24280                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24281                                     tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
24282                                     [cal_cnt] :
24283                                     tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
24284                         } else {
24285                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24286                                     tbl_tx_iqlo_cal_cmds_recal_nphyrev3[cal_cnt]
24287                                     : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
24288                         }
24289
24290                         core_no = ((cal_cmd & 0x3000) >> 12);
24291                         cal_type = ((cal_cmd & 0x0F00) >> 8);
24292
24293                         if (NREV_GE(pi->pubpi.phy_rev, 6) ||
24294                             (NREV_IS(pi->pubpi.phy_rev, 5) &&
24295                              PHY_IPA(pi)
24296                              && (CHSPEC_IS2G(pi->radio_chanspec)))) {
24297                                 if (!ladder_updated[core_no]) {
24298                                         wlc_phy_update_txcal_ladder_nphy(pi,
24299                                                                          core_no);
24300                                         ladder_updated[core_no] = true;
24301                                 }
24302                         }
24303
24304                         val =
24305                             (cal_params[core_no].
24306                              ncorr[cal_type] << 8) | NPHY_N_GCTL;
24307                         write_phy_reg(pi, 0xc1, val);
24308
24309                         if ((cal_type == 1) || (cal_type == 3)
24310                             || (cal_type == 4)) {
24311
24312                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24313                                                         1, 69 + core_no, 16,
24314                                                         tbl_buf);
24315
24316                                 diq_start = tbl_buf[0];
24317
24318                                 tbl_buf[0] = 0;
24319                                 wlc_phy_table_write_nphy(pi,
24320                                                          NPHY_TBL_ID_IQLOCAL, 1,
24321                                                          69 + core_no, 16,
24322                                                          tbl_buf);
24323                         }
24324
24325                         write_phy_reg(pi, 0xc0, cal_cmd);
24326
24327                         SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
24328                                  20000);
24329                         if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
24330                                  "HW error: txiq calib"))
24331                                 return -EIO;
24332
24333                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24334                                                 tbl_len, 96, 16, tbl_buf);
24335                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24336                                                  tbl_len, 64, 16, tbl_buf);
24337
24338                         if ((cal_type == 1) || (cal_type == 3)
24339                             || (cal_type == 4)) {
24340
24341                                 tbl_buf[0] = diq_start;
24342
24343                         }
24344
24345                 }
24346
24347                 if (mphase) {
24348                         pi->mphase_txcal_cmdidx = num_cals;
24349                         if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
24350                                 pi->mphase_txcal_cmdidx = 0;
24351                 }
24352
24353                 mphase_cal_lastphase =
24354                     (NREV_LE(pi->pubpi.phy_rev, 2)) ?
24355                     MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
24356
24357                 if (!mphase
24358                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
24359
24360                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
24361                                                 16, tbl_buf);
24362                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
24363                                                  16, tbl_buf);
24364
24365                         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
24366
24367                                 tbl_buf[0] = 0;
24368                                 tbl_buf[1] = 0;
24369                                 tbl_buf[2] = 0;
24370                                 tbl_buf[3] = 0;
24371
24372                         }
24373                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
24374                                                  16, tbl_buf);
24375
24376                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
24377                                                 16, tbl_buf);
24378                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
24379                                                  16, tbl_buf);
24380
24381                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
24382                                                  16, tbl_buf);
24383
24384                         tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
24385                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24386
24387                                 tbl_len -= 2;
24388                         }
24389                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24390                                                 tbl_len, 96, 16,
24391                                                 pi->nphy_txiqlocal_bestc);
24392
24393                         pi->nphy_txiqlocal_coeffsvalid = true;
24394                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
24395                 } else {
24396                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
24397                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24398
24399                                 tbl_len -= 2;
24400                         }
24401                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24402                                                 tbl_len, 96, 16,
24403                                                 pi->mphase_txcal_bestcoeffs);
24404                 }
24405
24406                 wlc_phy_stopplayback_nphy(pi);
24407
24408                 write_phy_reg(pi, 0xc2, 0x0000);
24409
24410         }
24411
24412         wlc_phy_txcal_phycleanup_nphy(pi);
24413
24414         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
24415                                  gain_save);
24416
24417         wlc_phy_txcal_radio_cleanup_nphy(pi);
24418
24419         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
24420                 if (!mphase
24421                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
24422                         wlc_phy_tx_iq_war_nphy(pi);
24423         }
24424
24425         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
24426                 pi->phyhang_avoid = phyhang_avoid_state;
24427         }
24428
24429         wlc_phy_stay_in_carriersearch_nphy(pi, false);
24430
24431         return bcmerror;
24432 }
24433
24434 static void wlc_phy_reapply_txcal_coeffs_nphy(phy_info_t *pi)
24435 {
24436         u16 tbl_buf[7];
24437
24438         if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
24439             (pi->nphy_txiqlocal_coeffsvalid)) {
24440                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24441                                         ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
24442
24443                 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
24444                     (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
24445                     (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
24446                     (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
24447
24448                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
24449                                                  16, pi->nphy_txiqlocal_bestc);
24450
24451                         tbl_buf[0] = 0;
24452                         tbl_buf[1] = 0;
24453                         tbl_buf[2] = 0;
24454                         tbl_buf[3] = 0;
24455                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
24456                                                  16, tbl_buf);
24457
24458                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
24459                                                  16,
24460                                                  &pi->nphy_txiqlocal_bestc[5]);
24461
24462                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
24463                                                  16,
24464                                                  &pi->nphy_txiqlocal_bestc[5]);
24465                 }
24466         }
24467 }
24468
24469 static void wlc_phy_tx_iq_war_nphy(phy_info_t *pi)
24470 {
24471         nphy_iq_comp_t tx_comp;
24472
24473         wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, (void *)&tx_comp);
24474
24475         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
24476         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
24477         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
24478         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
24479 }
24480
24481 void
24482 wlc_phy_rx_iq_coeffs_nphy(phy_info_t *pi, u8 write, nphy_iq_comp_t *pcomp)
24483 {
24484         if (write) {
24485                 write_phy_reg(pi, 0x9a, pcomp->a0);
24486                 write_phy_reg(pi, 0x9b, pcomp->b0);
24487                 write_phy_reg(pi, 0x9c, pcomp->a1);
24488                 write_phy_reg(pi, 0x9d, pcomp->b1);
24489         } else {
24490                 pcomp->a0 = read_phy_reg(pi, 0x9a);
24491                 pcomp->b0 = read_phy_reg(pi, 0x9b);
24492                 pcomp->a1 = read_phy_reg(pi, 0x9c);
24493                 pcomp->b1 = read_phy_reg(pi, 0x9d);
24494         }
24495 }
24496
24497 void
24498 wlc_phy_rx_iq_est_nphy(phy_info_t *pi, phy_iq_est_t *est, u16 num_samps,
24499                        u8 wait_time, u8 wait_for_crs)
24500 {
24501         u8 core;
24502
24503         write_phy_reg(pi, 0x12b, num_samps);
24504         mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
24505         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
24506                     (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
24507
24508         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
24509
24510         SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
24511                  10000);
24512         if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
24513                  "HW error: rxiq est"))
24514                 return;
24515
24516         if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
24517                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24518                         est[core].i_pwr =
24519                             (read_phy_reg(pi, NPHY_IqestipwrAccHi(core)) << 16)
24520                             | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
24521                         est[core].q_pwr =
24522                             (read_phy_reg(pi, NPHY_IqestqpwrAccHi(core)) << 16)
24523                             | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
24524                         est[core].iq_prod =
24525                             (read_phy_reg(pi, NPHY_IqestIqAccHi(core)) << 16) |
24526                             read_phy_reg(pi, NPHY_IqestIqAccLo(core));
24527                 }
24528         }
24529 }
24530
24531 #define CAL_RETRY_CNT 2
24532 static void wlc_phy_calc_rx_iq_comp_nphy(phy_info_t *pi, u8 core_mask)
24533 {
24534         u8 curr_core;
24535         phy_iq_est_t est[PHY_CORE_MAX];
24536         nphy_iq_comp_t old_comp, new_comp;
24537         s32 iq = 0;
24538         u32 ii = 0, qq = 0;
24539         s16 iq_nbits, qq_nbits, brsh, arsh;
24540         s32 a, b, temp;
24541         int bcmerror = 0;
24542         uint cal_retry = 0;
24543
24544         if (core_mask == 0x0)
24545                 return;
24546
24547         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
24548         new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
24549         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
24550
24551  cal_try:
24552         wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
24553
24554         new_comp = old_comp;
24555
24556         for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
24557
24558                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
24559                         iq = est[curr_core].iq_prod;
24560                         ii = est[curr_core].i_pwr;
24561                         qq = est[curr_core].q_pwr;
24562                 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
24563                         iq = est[curr_core].iq_prod;
24564                         ii = est[curr_core].i_pwr;
24565                         qq = est[curr_core].q_pwr;
24566                 } else {
24567                         continue;
24568                 }
24569
24570                 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
24571                         bcmerror = -EBADE;
24572                         break;
24573                 }
24574
24575                 iq_nbits = wlc_phy_nbits(iq);
24576                 qq_nbits = wlc_phy_nbits(qq);
24577
24578                 arsh = 10 - (30 - iq_nbits);
24579                 if (arsh >= 0) {
24580                         a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
24581                         temp = (s32) (ii >> arsh);
24582                         if (temp == 0) {
24583                                 bcmerror = -EBADE;
24584                                 break;
24585                         }
24586                 } else {
24587                         a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
24588                         temp = (s32) (ii << -arsh);
24589                         if (temp == 0) {
24590                                 bcmerror = -EBADE;
24591                                 break;
24592                         }
24593                 }
24594
24595                 a /= temp;
24596
24597                 brsh = qq_nbits - 31 + 20;
24598                 if (brsh >= 0) {
24599                         b = (qq << (31 - qq_nbits));
24600                         temp = (s32) (ii >> brsh);
24601                         if (temp == 0) {
24602                                 bcmerror = -EBADE;
24603                                 break;
24604                         }
24605                 } else {
24606                         b = (qq << (31 - qq_nbits));
24607                         temp = (s32) (ii << -brsh);
24608                         if (temp == 0) {
24609                                 bcmerror = -EBADE;
24610                                 break;
24611                         }
24612                 }
24613                 b /= temp;
24614                 b -= a * a;
24615                 b = (s32) int_sqrt((unsigned long) b);
24616                 b -= (1 << 10);
24617
24618                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
24619                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24620                                 new_comp.a0 = (s16) a & 0x3ff;
24621                                 new_comp.b0 = (s16) b & 0x3ff;
24622                         } else {
24623
24624                                 new_comp.a0 = (s16) b & 0x3ff;
24625                                 new_comp.b0 = (s16) a & 0x3ff;
24626                         }
24627                 }
24628                 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
24629                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24630                                 new_comp.a1 = (s16) a & 0x3ff;
24631                                 new_comp.b1 = (s16) b & 0x3ff;
24632                         } else {
24633
24634                                 new_comp.a1 = (s16) b & 0x3ff;
24635                                 new_comp.b1 = (s16) a & 0x3ff;
24636                         }
24637                 }
24638         }
24639
24640         if (bcmerror != 0) {
24641                 printk("%s: Failed, cnt = %d\n", __func__, cal_retry);
24642
24643                 if (cal_retry < CAL_RETRY_CNT) {
24644                         cal_retry++;
24645                         goto cal_try;
24646                 }
24647
24648                 new_comp = old_comp;
24649         } else if (cal_retry > 0) {
24650         }
24651
24652         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
24653 }
24654
24655 static void wlc_phy_rxcal_radio_setup_nphy(phy_info_t *pi, u8 rx_core)
24656 {
24657         u16 offtune_val;
24658         u16 bias_g = 0;
24659         u16 bias_a = 0;
24660
24661         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24662                 if (rx_core == PHY_CORE_0) {
24663                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24664                                 pi->tx_rx_cal_radio_saveregs[0] =
24665                                     read_radio_reg(pi,
24666                                                    RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
24667                                 pi->tx_rx_cal_radio_saveregs[1] =
24668                                     read_radio_reg(pi,
24669                                                    RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
24670
24671                                 write_radio_reg(pi,
24672                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
24673                                                 0x3);
24674                                 write_radio_reg(pi,
24675                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
24676                                                 0xaf);
24677
24678                         } else {
24679                                 pi->tx_rx_cal_radio_saveregs[0] =
24680                                     read_radio_reg(pi,
24681                                                    RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
24682                                 pi->tx_rx_cal_radio_saveregs[1] =
24683                                     read_radio_reg(pi,
24684                                                    RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
24685
24686                                 write_radio_reg(pi,
24687                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
24688                                                 0x3);
24689                                 write_radio_reg(pi,
24690                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
24691                                                 0x7f);
24692                         }
24693
24694                 } else {
24695                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24696                                 pi->tx_rx_cal_radio_saveregs[0] =
24697                                     read_radio_reg(pi,
24698                                                    RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
24699                                 pi->tx_rx_cal_radio_saveregs[1] =
24700                                     read_radio_reg(pi,
24701                                                    RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
24702
24703                                 write_radio_reg(pi,
24704                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
24705                                                 0x3);
24706                                 write_radio_reg(pi,
24707                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
24708                                                 0xaf);
24709
24710                         } else {
24711                                 pi->tx_rx_cal_radio_saveregs[0] =
24712                                     read_radio_reg(pi,
24713                                                    RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
24714                                 pi->tx_rx_cal_radio_saveregs[1] =
24715                                     read_radio_reg(pi,
24716                                                    RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
24717
24718                                 write_radio_reg(pi,
24719                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
24720                                                 0x3);
24721                                 write_radio_reg(pi,
24722                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
24723                                                 0x7f);
24724                         }
24725                 }
24726
24727         } else {
24728                 if (rx_core == PHY_CORE_0) {
24729                         pi->tx_rx_cal_radio_saveregs[0] =
24730                             read_radio_reg(pi,
24731                                            RADIO_2056_TX_RXIQCAL_TXMUX |
24732                                            RADIO_2056_TX1);
24733                         pi->tx_rx_cal_radio_saveregs[1] =
24734                             read_radio_reg(pi,
24735                                            RADIO_2056_RX_RXIQCAL_RXMUX |
24736                                            RADIO_2056_RX0);
24737
24738                         if (pi->pubpi.radiorev >= 5) {
24739                                 pi->tx_rx_cal_radio_saveregs[2] =
24740                                     read_radio_reg(pi,
24741                                                    RADIO_2056_RX_RXSPARE2 |
24742                                                    RADIO_2056_RX0);
24743                                 pi->tx_rx_cal_radio_saveregs[3] =
24744                                     read_radio_reg(pi,
24745                                                    RADIO_2056_TX_TXSPARE2 |
24746                                                    RADIO_2056_TX1);
24747                         }
24748
24749                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24750
24751                                 if (pi->pubpi.radiorev >= 5) {
24752                                         pi->tx_rx_cal_radio_saveregs[4] =
24753                                             read_radio_reg(pi,
24754                                                            RADIO_2056_RX_LNAA_MASTER
24755                                                            | RADIO_2056_RX0);
24756
24757                                         write_radio_reg(pi,
24758                                                         RADIO_2056_RX_LNAA_MASTER
24759                                                         | RADIO_2056_RX0, 0x40);
24760
24761                                         write_radio_reg(pi,
24762                                                         RADIO_2056_TX_TXSPARE2 |
24763                                                         RADIO_2056_TX1, bias_a);
24764
24765                                         write_radio_reg(pi,
24766                                                         RADIO_2056_RX_RXSPARE2 |
24767                                                         RADIO_2056_RX0, bias_a);
24768                                 } else {
24769                                         pi->tx_rx_cal_radio_saveregs[4] =
24770                                             read_radio_reg(pi,
24771                                                            RADIO_2056_RX_LNAA_TUNE
24772                                                            | RADIO_2056_RX0);
24773
24774                                         offtune_val =
24775                                             (pi->
24776                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24777                                             >> 8;
24778                                         offtune_val =
24779                                             (offtune_val <= 0x7) ? 0xF : 0;
24780
24781                                         mod_radio_reg(pi,
24782                                                       RADIO_2056_RX_LNAA_TUNE |
24783                                                       RADIO_2056_RX0, 0xF0,
24784                                                       (offtune_val << 8));
24785                                 }
24786
24787                                 write_radio_reg(pi,
24788                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24789                                                 RADIO_2056_TX1, 0x9);
24790                                 write_radio_reg(pi,
24791                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24792                                                 RADIO_2056_RX0, 0x9);
24793                         } else {
24794                                 if (pi->pubpi.radiorev >= 5) {
24795                                         pi->tx_rx_cal_radio_saveregs[4] =
24796                                             read_radio_reg(pi,
24797                                                            RADIO_2056_RX_LNAG_MASTER
24798                                                            | RADIO_2056_RX0);
24799
24800                                         write_radio_reg(pi,
24801                                                         RADIO_2056_RX_LNAG_MASTER
24802                                                         | RADIO_2056_RX0, 0x40);
24803
24804                                         write_radio_reg(pi,
24805                                                         RADIO_2056_TX_TXSPARE2 |
24806                                                         RADIO_2056_TX1, bias_g);
24807
24808                                         write_radio_reg(pi,
24809                                                         RADIO_2056_RX_RXSPARE2 |
24810                                                         RADIO_2056_RX0, bias_g);
24811
24812                                 } else {
24813                                         pi->tx_rx_cal_radio_saveregs[4] =
24814                                             read_radio_reg(pi,
24815                                                            RADIO_2056_RX_LNAG_TUNE
24816                                                            | RADIO_2056_RX0);
24817
24818                                         offtune_val =
24819                                             (pi->
24820                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24821                                             >> 8;
24822                                         offtune_val =
24823                                             (offtune_val <= 0x7) ? 0xF : 0;
24824
24825                                         mod_radio_reg(pi,
24826                                                       RADIO_2056_RX_LNAG_TUNE |
24827                                                       RADIO_2056_RX0, 0xF0,
24828                                                       (offtune_val << 8));
24829                                 }
24830
24831                                 write_radio_reg(pi,
24832                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24833                                                 RADIO_2056_TX1, 0x6);
24834                                 write_radio_reg(pi,
24835                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24836                                                 RADIO_2056_RX0, 0x6);
24837                         }
24838
24839                 } else {
24840                         pi->tx_rx_cal_radio_saveregs[0] =
24841                             read_radio_reg(pi,
24842                                            RADIO_2056_TX_RXIQCAL_TXMUX |
24843                                            RADIO_2056_TX0);
24844                         pi->tx_rx_cal_radio_saveregs[1] =
24845                             read_radio_reg(pi,
24846                                            RADIO_2056_RX_RXIQCAL_RXMUX |
24847                                            RADIO_2056_RX1);
24848
24849                         if (pi->pubpi.radiorev >= 5) {
24850                                 pi->tx_rx_cal_radio_saveregs[2] =
24851                                     read_radio_reg(pi,
24852                                                    RADIO_2056_RX_RXSPARE2 |
24853                                                    RADIO_2056_RX1);
24854                                 pi->tx_rx_cal_radio_saveregs[3] =
24855                                     read_radio_reg(pi,
24856                                                    RADIO_2056_TX_TXSPARE2 |
24857                                                    RADIO_2056_TX0);
24858                         }
24859
24860                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24861
24862                                 if (pi->pubpi.radiorev >= 5) {
24863                                         pi->tx_rx_cal_radio_saveregs[4] =
24864                                             read_radio_reg(pi,
24865                                                            RADIO_2056_RX_LNAA_MASTER
24866                                                            | RADIO_2056_RX1);
24867
24868                                         write_radio_reg(pi,
24869                                                         RADIO_2056_RX_LNAA_MASTER
24870                                                         | RADIO_2056_RX1, 0x40);
24871
24872                                         write_radio_reg(pi,
24873                                                         RADIO_2056_TX_TXSPARE2 |
24874                                                         RADIO_2056_TX0, bias_a);
24875
24876                                         write_radio_reg(pi,
24877                                                         RADIO_2056_RX_RXSPARE2 |
24878                                                         RADIO_2056_RX1, bias_a);
24879                                 } else {
24880                                         pi->tx_rx_cal_radio_saveregs[4] =
24881                                             read_radio_reg(pi,
24882                                                            RADIO_2056_RX_LNAA_TUNE
24883                                                            | RADIO_2056_RX1);
24884
24885                                         offtune_val =
24886                                             (pi->
24887                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24888                                             >> 8;
24889                                         offtune_val =
24890                                             (offtune_val <= 0x7) ? 0xF : 0;
24891
24892                                         mod_radio_reg(pi,
24893                                                       RADIO_2056_RX_LNAA_TUNE |
24894                                                       RADIO_2056_RX1, 0xF0,
24895                                                       (offtune_val << 8));
24896                                 }
24897
24898                                 write_radio_reg(pi,
24899                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24900                                                 RADIO_2056_TX0, 0x9);
24901                                 write_radio_reg(pi,
24902                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24903                                                 RADIO_2056_RX1, 0x9);
24904                         } else {
24905                                 if (pi->pubpi.radiorev >= 5) {
24906                                         pi->tx_rx_cal_radio_saveregs[4] =
24907                                             read_radio_reg(pi,
24908                                                            RADIO_2056_RX_LNAG_MASTER
24909                                                            | RADIO_2056_RX1);
24910
24911                                         write_radio_reg(pi,
24912                                                         RADIO_2056_RX_LNAG_MASTER
24913                                                         | RADIO_2056_RX1, 0x40);
24914
24915                                         write_radio_reg(pi,
24916                                                         RADIO_2056_TX_TXSPARE2 |
24917                                                         RADIO_2056_TX0, bias_g);
24918
24919                                         write_radio_reg(pi,
24920                                                         RADIO_2056_RX_RXSPARE2 |
24921                                                         RADIO_2056_RX1, bias_g);
24922                                 } else {
24923                                         pi->tx_rx_cal_radio_saveregs[4] =
24924                                             read_radio_reg(pi,
24925                                                            RADIO_2056_RX_LNAG_TUNE
24926                                                            | RADIO_2056_RX1);
24927
24928                                         offtune_val =
24929                                             (pi->
24930                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24931                                             >> 8;
24932                                         offtune_val =
24933                                             (offtune_val <= 0x7) ? 0xF : 0;
24934
24935                                         mod_radio_reg(pi,
24936                                                       RADIO_2056_RX_LNAG_TUNE |
24937                                                       RADIO_2056_RX1, 0xF0,
24938                                                       (offtune_val << 8));
24939                                 }
24940
24941                                 write_radio_reg(pi,
24942                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24943                                                 RADIO_2056_TX0, 0x6);
24944                                 write_radio_reg(pi,
24945                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24946                                                 RADIO_2056_RX1, 0x6);
24947                         }
24948                 }
24949         }
24950 }
24951
24952 static void wlc_phy_rxcal_radio_cleanup_nphy(phy_info_t *pi, u8 rx_core)
24953 {
24954         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24955                 if (rx_core == PHY_CORE_0) {
24956                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24957                                 write_radio_reg(pi,
24958                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
24959                                                 pi->
24960                                                 tx_rx_cal_radio_saveregs[0]);
24961                                 write_radio_reg(pi,
24962                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
24963                                                 pi->
24964                                                 tx_rx_cal_radio_saveregs[1]);
24965
24966                         } else {
24967                                 write_radio_reg(pi,
24968                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
24969                                                 pi->
24970                                                 tx_rx_cal_radio_saveregs[0]);
24971                                 write_radio_reg(pi,
24972                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
24973                                                 pi->
24974                                                 tx_rx_cal_radio_saveregs[1]);
24975                         }
24976
24977                 } else {
24978                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24979                                 write_radio_reg(pi,
24980                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
24981                                                 pi->
24982                                                 tx_rx_cal_radio_saveregs[0]);
24983                                 write_radio_reg(pi,
24984                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
24985                                                 pi->
24986                                                 tx_rx_cal_radio_saveregs[1]);
24987
24988                         } else {
24989                                 write_radio_reg(pi,
24990                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
24991                                                 pi->
24992                                                 tx_rx_cal_radio_saveregs[0]);
24993                                 write_radio_reg(pi,
24994                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
24995                                                 pi->
24996                                                 tx_rx_cal_radio_saveregs[1]);
24997                         }
24998                 }
24999
25000         } else {
25001                 if (rx_core == PHY_CORE_0) {
25002                         write_radio_reg(pi,
25003                                         RADIO_2056_TX_RXIQCAL_TXMUX |
25004                                         RADIO_2056_TX1,
25005                                         pi->tx_rx_cal_radio_saveregs[0]);
25006
25007                         write_radio_reg(pi,
25008                                         RADIO_2056_RX_RXIQCAL_RXMUX |
25009                                         RADIO_2056_RX0,
25010                                         pi->tx_rx_cal_radio_saveregs[1]);
25011
25012                         if (pi->pubpi.radiorev >= 5) {
25013                                 write_radio_reg(pi,
25014                                                 RADIO_2056_RX_RXSPARE2 |
25015                                                 RADIO_2056_RX0,
25016                                                 pi->
25017                                                 tx_rx_cal_radio_saveregs[2]);
25018
25019                                 write_radio_reg(pi,
25020                                                 RADIO_2056_TX_TXSPARE2 |
25021                                                 RADIO_2056_TX1,
25022                                                 pi->
25023                                                 tx_rx_cal_radio_saveregs[3]);
25024                         }
25025
25026                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25027                                 if (pi->pubpi.radiorev >= 5) {
25028                                         write_radio_reg(pi,
25029                                                         RADIO_2056_RX_LNAA_MASTER
25030                                                         | RADIO_2056_RX0,
25031                                                         pi->
25032                                                         tx_rx_cal_radio_saveregs
25033                                                         [4]);
25034                                 } else {
25035                                         write_radio_reg(pi,
25036                                                         RADIO_2056_RX_LNAA_TUNE
25037                                                         | RADIO_2056_RX0,
25038                                                         pi->
25039                                                         tx_rx_cal_radio_saveregs
25040                                                         [4]);
25041                                 }
25042                         } else {
25043                                 if (pi->pubpi.radiorev >= 5) {
25044                                         write_radio_reg(pi,
25045                                                         RADIO_2056_RX_LNAG_MASTER
25046                                                         | RADIO_2056_RX0,
25047                                                         pi->
25048                                                         tx_rx_cal_radio_saveregs
25049                                                         [4]);
25050                                 } else {
25051                                         write_radio_reg(pi,
25052                                                         RADIO_2056_RX_LNAG_TUNE
25053                                                         | RADIO_2056_RX0,
25054                                                         pi->
25055                                                         tx_rx_cal_radio_saveregs
25056                                                         [4]);
25057                                 }
25058                         }
25059
25060                 } else {
25061                         write_radio_reg(pi,
25062                                         RADIO_2056_TX_RXIQCAL_TXMUX |
25063                                         RADIO_2056_TX0,
25064                                         pi->tx_rx_cal_radio_saveregs[0]);
25065
25066                         write_radio_reg(pi,
25067                                         RADIO_2056_RX_RXIQCAL_RXMUX |
25068                                         RADIO_2056_RX1,
25069                                         pi->tx_rx_cal_radio_saveregs[1]);
25070
25071                         if (pi->pubpi.radiorev >= 5) {
25072                                 write_radio_reg(pi,
25073                                                 RADIO_2056_RX_RXSPARE2 |
25074                                                 RADIO_2056_RX1,
25075                                                 pi->
25076                                                 tx_rx_cal_radio_saveregs[2]);
25077
25078                                 write_radio_reg(pi,
25079                                                 RADIO_2056_TX_TXSPARE2 |
25080                                                 RADIO_2056_TX0,
25081                                                 pi->
25082                                                 tx_rx_cal_radio_saveregs[3]);
25083                         }
25084
25085                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25086                                 if (pi->pubpi.radiorev >= 5) {
25087                                         write_radio_reg(pi,
25088                                                         RADIO_2056_RX_LNAA_MASTER
25089                                                         | RADIO_2056_RX1,
25090                                                         pi->
25091                                                         tx_rx_cal_radio_saveregs
25092                                                         [4]);
25093                                 } else {
25094                                         write_radio_reg(pi,
25095                                                         RADIO_2056_RX_LNAA_TUNE
25096                                                         | RADIO_2056_RX1,
25097                                                         pi->
25098                                                         tx_rx_cal_radio_saveregs
25099                                                         [4]);
25100                                 }
25101                         } else {
25102                                 if (pi->pubpi.radiorev >= 5) {
25103                                         write_radio_reg(pi,
25104                                                         RADIO_2056_RX_LNAG_MASTER
25105                                                         | RADIO_2056_RX1,
25106                                                         pi->
25107                                                         tx_rx_cal_radio_saveregs
25108                                                         [4]);
25109                                 } else {
25110                                         write_radio_reg(pi,
25111                                                         RADIO_2056_RX_LNAG_TUNE
25112                                                         | RADIO_2056_RX1,
25113                                                         pi->
25114                                                         tx_rx_cal_radio_saveregs
25115                                                         [4]);
25116                                 }
25117                         }
25118                 }
25119         }
25120 }
25121
25122 static void wlc_phy_rxcal_physetup_nphy(phy_info_t *pi, u8 rx_core)
25123 {
25124         u8 tx_core;
25125         u16 rx_antval, tx_antval;
25126
25127         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25128
25129                 tx_core = rx_core;
25130         } else {
25131                 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
25132         }
25133
25134         pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
25135         pi->tx_rx_cal_phy_saveregs[1] =
25136             read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
25137         pi->tx_rx_cal_phy_saveregs[2] =
25138             read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
25139         pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
25140         pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
25141         pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
25142         pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
25143         pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
25144         pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
25145         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25146                 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
25147                 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
25148                 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
25149                 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
25150         }
25151
25152         pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
25153         pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
25154         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25155                     0x29b, (0x1 << 0), (0) << 0);
25156
25157         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25158                     0x29b, (0x1 << 0), (0) << 0);
25159
25160         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25161
25162                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
25163
25164                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
25165
25166         } else {
25167
25168                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
25169                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
25170                 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
25171                 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
25172         }
25173
25174         mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
25175         mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
25176                     (0x1 << 2), (0x1 << 2));
25177         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
25178                 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
25179                             (0x1 << 0) | (0x1 << 1), 0);
25180                 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
25181                             0x8f : 0xa5,
25182                             (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
25183         }
25184
25185         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
25186                                          RADIO_MIMO_CORESEL_CORE1 |
25187                                          RADIO_MIMO_CORESEL_CORE2);
25188
25189         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25190                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25191                                                   0, 0, 0,
25192                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
25193                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
25194                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25195                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
25196                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25197                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
25198                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25199                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
25200                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
25201                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
25202                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25203                 if (CHSPEC_IS40(pi->radio_chanspec)) {
25204                         wlc_phy_rfctrl_override_nphy_rev7(pi,
25205                                                           (0x1 << 7),
25206                                                           2, 0, 0,
25207                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
25208                 } else {
25209                         wlc_phy_rfctrl_override_nphy_rev7(pi,
25210                                                           (0x1 << 7),
25211                                                           0, 0, 0,
25212                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
25213                 }
25214                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
25215                                                   0, 0, 0,
25216                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25217                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
25218                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25219         } else {
25220                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
25221         }
25222
25223         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
25224
25225         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25226
25227                 wlc_phy_rfctrlintc_override_nphy(pi,
25228                                                  NPHY_RfctrlIntc_override_TRSW,
25229                                                  0x1, rx_core + 1);
25230         } else {
25231
25232                 if (rx_core == PHY_CORE_0) {
25233                         rx_antval = 0x1;
25234                         tx_antval = 0x8;
25235                 } else {
25236                         rx_antval = 0x4;
25237                         tx_antval = 0x2;
25238                 }
25239
25240                 wlc_phy_rfctrlintc_override_nphy(pi,
25241                                                  NPHY_RfctrlIntc_override_TRSW,
25242                                                  rx_antval, rx_core + 1);
25243                 wlc_phy_rfctrlintc_override_nphy(pi,
25244                                                  NPHY_RfctrlIntc_override_TRSW,
25245                                                  tx_antval, tx_core + 1);
25246         }
25247 }
25248
25249 static void wlc_phy_rxcal_phycleanup_nphy(phy_info_t *pi, u8 rx_core)
25250 {
25251
25252         write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
25253         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
25254                       pi->tx_rx_cal_phy_saveregs[1]);
25255         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
25256                       pi->tx_rx_cal_phy_saveregs[2]);
25257         write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
25258         write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
25259
25260         write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
25261         write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
25262         write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
25263         write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
25264         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25265                 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
25266                 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
25267                 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
25268                 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
25269         }
25270
25271         write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
25272         write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
25273 }
25274
25275 static void
25276 wlc_phy_rxcal_gainctrl_nphy_rev5(phy_info_t *pi, u8 rx_core,
25277                                  u16 *rxgain, u8 cal_type)
25278 {
25279
25280         u16 num_samps;
25281         phy_iq_est_t est[PHY_CORE_MAX];
25282         u8 tx_core;
25283         nphy_iq_comp_t save_comp, zero_comp;
25284         u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0, thresh_pwr =
25285             10000;
25286         s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
25287         bool gainctrl_done = false;
25288         u8 mix_tia_gain = 3;
25289         s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
25290         s8 curr_gaintbl_index = 3;
25291         u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
25292         nphy_ipa_txrxgain_t *nphy_rxcal_gaintbl;
25293         u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
25294         int fine_gain_idx;
25295         s8 txpwrindex;
25296         u16 nphy_rxcal_txgain[2];
25297
25298         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25299
25300                 tx_core = rx_core;
25301         } else {
25302                 tx_core = 1 - rx_core;
25303         }
25304
25305         num_samps = 1024;
25306         desired_log2_pwr = (cal_type == 0) ? 13 : 13;
25307
25308         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
25309         zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
25310         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
25311
25312         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25313                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25314                         mix_tia_gain = 3;
25315                 } else if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25316                         mix_tia_gain = 4;
25317                 } else {
25318                         mix_tia_gain = 6;
25319                 }
25320                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25321                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
25322                 } else {
25323                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
25324                 }
25325         } else {
25326                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25327                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
25328                 } else {
25329                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
25330                 }
25331         }
25332
25333         do {
25334
25335                 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
25336                     0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
25337                 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
25338                 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
25339                 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
25340                 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
25341                 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
25342
25343                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25344                         wlc_phy_rfctrl_override_1tomany_nphy(pi,
25345                                                              NPHY_REV7_RfctrlOverride_cmd_rxgain,
25346                                                              ((lpf_biq1 << 12) |
25347                                                               (lpf_biq0 << 8) |
25348                                                               (mix_tia_gain <<
25349                                                                4) | (lna2 << 2)
25350                                                               | lna1), 0x3, 0);
25351                 } else {
25352                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
25353                                                      ((hpvga << 12) |
25354                                                       (lpf_biq1 << 10) |
25355                                                       (lpf_biq0 << 8) |
25356                                                       (mix_tia_gain << 4) |
25357                                                       (lna2 << 2) | lna1), 0x3,
25358                                                      0);
25359                 }
25360
25361                 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
25362
25363                 if (txpwrindex == -1) {
25364                         nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
25365                         nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
25366                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
25367                                                  2, 0x110, 16,
25368                                                  nphy_rxcal_txgain);
25369                 } else {
25370                         wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
25371                                                  false);
25372                 }
25373
25374                 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
25375                                      NPHY_RXCAL_TONEFREQ_40MHz :
25376                                      NPHY_RXCAL_TONEFREQ_20MHz,
25377                                      NPHY_RXCAL_TONEAMP, 0, cal_type, false);
25378
25379                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
25380                 i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
25381                 q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
25382                 curr_pwr = i_pwr + q_pwr;
25383
25384                 switch (gainctrl_dirn) {
25385                 case NPHY_RXCAL_GAIN_INIT:
25386                         if (curr_pwr > thresh_pwr) {
25387                                 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
25388                                 prev_gaintbl_index = curr_gaintbl_index;
25389                                 curr_gaintbl_index--;
25390                         } else {
25391                                 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
25392                                 prev_gaintbl_index = curr_gaintbl_index;
25393                                 curr_gaintbl_index++;
25394                         }
25395                         break;
25396
25397                 case NPHY_RXCAL_GAIN_UP:
25398                         if (curr_pwr > thresh_pwr) {
25399                                 gainctrl_done = true;
25400                                 optim_pwr = prev_pwr;
25401                                 optim_gaintbl_index = prev_gaintbl_index;
25402                         } else {
25403                                 prev_gaintbl_index = curr_gaintbl_index;
25404                                 curr_gaintbl_index++;
25405                         }
25406                         break;
25407
25408                 case NPHY_RXCAL_GAIN_DOWN:
25409                         if (curr_pwr > thresh_pwr) {
25410                                 prev_gaintbl_index = curr_gaintbl_index;
25411                                 curr_gaintbl_index--;
25412                         } else {
25413                                 gainctrl_done = true;
25414                                 optim_pwr = curr_pwr;
25415                                 optim_gaintbl_index = curr_gaintbl_index;
25416                         }
25417                         break;
25418
25419                 default:
25420                         break;
25421                 }
25422
25423                 if ((curr_gaintbl_index < 0) ||
25424                     (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
25425                         gainctrl_done = true;
25426                         optim_pwr = curr_pwr;
25427                         optim_gaintbl_index = prev_gaintbl_index;
25428                 } else {
25429                         prev_pwr = curr_pwr;
25430                 }
25431
25432                 wlc_phy_stopplayback_nphy(pi);
25433         } while (!gainctrl_done);
25434
25435         hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
25436         lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
25437         lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
25438         lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
25439         lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
25440         txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
25441
25442         actual_log2_pwr = wlc_phy_nbits(optim_pwr);
25443         delta_pwr = desired_log2_pwr - actual_log2_pwr;
25444
25445         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25446                 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
25447
25448                 if (fine_gain_idx + (int)lpf_biq0 > 10) {
25449                         lpf_biq1 = 10 - lpf_biq0;
25450                 } else {
25451                         lpf_biq1 = (u16) max(fine_gain_idx, 0);
25452                 }
25453                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
25454                                                      NPHY_REV7_RfctrlOverride_cmd_rxgain,
25455                                                      ((lpf_biq1 << 12) |
25456                                                       (lpf_biq0 << 8) |
25457                                                       (mix_tia_gain << 4) |
25458                                                       (lna2 << 2) | lna1), 0x3,
25459                                                      0);
25460         } else {
25461                 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
25462                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
25463                                              ((hpvga << 12) | (lpf_biq1 << 10) |
25464                                               (lpf_biq0 << 8) | (mix_tia_gain <<
25465                                                                  4) | (lna2 <<
25466                                                                        2) |
25467                                               lna1), 0x3, 0);
25468
25469         }
25470
25471         if (rxgain != NULL) {
25472                 *rxgain++ = lna1;
25473                 *rxgain++ = lna2;
25474                 *rxgain++ = mix_tia_gain;
25475                 *rxgain++ = lpf_biq0;
25476                 *rxgain++ = lpf_biq1;
25477                 *rxgain = hpvga;
25478         }
25479
25480         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
25481 }
25482
25483 static void
25484 wlc_phy_rxcal_gainctrl_nphy(phy_info_t *pi, u8 rx_core, u16 *rxgain,
25485                             u8 cal_type)
25486 {
25487         wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
25488 }
25489
25490 static u8
25491 wlc_phy_rc_sweep_nphy(phy_info_t *pi, u8 core_idx, u8 loopback_type)
25492 {
25493         u32 target_bws[2] = { 9500, 21000 };
25494         u32 ref_tones[2] = { 3000, 6000 };
25495         u32 target_bw, ref_tone;
25496
25497         u32 target_pwr_ratios[2] = { 28606, 18468 };
25498         u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
25499
25500         u16 start_rccal_ovr_val = 128;
25501         u16 txlpf_rccal_lpc_ovr_val = 128;
25502         u16 rxlpf_rccal_hpc_ovr_val = 159;
25503
25504         u16 orig_txlpf_rccal_lpc_ovr_val;
25505         u16 orig_rxlpf_rccal_hpc_ovr_val;
25506         u16 radio_addr_offset_rx;
25507         u16 radio_addr_offset_tx;
25508         u16 orig_dcBypass;
25509         u16 orig_RxStrnFilt40Num[6];
25510         u16 orig_RxStrnFilt40Den[4];
25511         u16 orig_rfctrloverride[2];
25512         u16 orig_rfctrlauxreg[2];
25513         u16 orig_rfctrlrssiothers;
25514         u16 tx_lpf_bw = 4;
25515
25516         u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
25517         u16 lpf_hpc = 7, hpvga_hpc = 7;
25518
25519         s8 rccal_stepsize;
25520         u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
25521         u32 ref_iq_vals = 0, target_iq_vals = 0;
25522         u16 num_samps, log_num_samps = 10;
25523         phy_iq_est_t est[PHY_CORE_MAX];
25524
25525         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25526                 return 0;
25527         }
25528
25529         num_samps = (1 << log_num_samps);
25530
25531         if (CHSPEC_IS40(pi->radio_chanspec)) {
25532                 target_bw = target_bws[1];
25533                 target_pwr_ratio = target_pwr_ratios[1];
25534                 ref_tone = ref_tones[1];
25535                 rx_lpf_bw = rx_lpf_bws[1];
25536         } else {
25537                 target_bw = target_bws[0];
25538                 target_pwr_ratio = target_pwr_ratios[0];
25539                 ref_tone = ref_tones[0];
25540                 rx_lpf_bw = rx_lpf_bws[0];
25541         }
25542
25543         if (core_idx == 0) {
25544                 radio_addr_offset_rx = RADIO_2056_RX0;
25545                 radio_addr_offset_tx =
25546                     (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
25547         } else {
25548                 radio_addr_offset_rx = RADIO_2056_RX1;
25549                 radio_addr_offset_tx =
25550                     (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
25551         }
25552
25553         orig_txlpf_rccal_lpc_ovr_val =
25554             read_radio_reg(pi,
25555                            (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx));
25556         orig_rxlpf_rccal_hpc_ovr_val =
25557             read_radio_reg(pi,
25558                            (RADIO_2056_RX_RXLPF_RCCAL_HPC |
25559                             radio_addr_offset_rx));
25560
25561         orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
25562
25563         orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
25564         orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
25565         orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
25566         orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
25567         orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
25568         orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
25569         orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
25570         orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
25571         orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
25572         orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
25573
25574         orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
25575         orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
25576         orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
25577         orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
25578         orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
25579
25580         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
25581                         txlpf_rccal_lpc_ovr_val);
25582
25583         write_radio_reg(pi,
25584                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
25585                         rxlpf_rccal_hpc_ovr_val);
25586
25587         mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
25588
25589         write_phy_reg(pi, 0x267, 0x02d4);
25590         write_phy_reg(pi, 0x268, 0x0000);
25591         write_phy_reg(pi, 0x269, 0x0000);
25592         write_phy_reg(pi, 0x26a, 0x0000);
25593         write_phy_reg(pi, 0x26b, 0x0000);
25594         write_phy_reg(pi, 0x26c, 0x02d4);
25595         write_phy_reg(pi, 0x26d, 0x0000);
25596         write_phy_reg(pi, 0x26e, 0x0000);
25597         write_phy_reg(pi, 0x26f, 0x0000);
25598         write_phy_reg(pi, 0x270, 0x0000);
25599
25600         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
25601         or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
25602         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
25603         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
25604
25605         mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
25606                     (0x7 << 10), (tx_lpf_bw << 10));
25607         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
25608                     (0x7 << 0), (hpvga_hpc << 0));
25609         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
25610                     (0x7 << 4), (lpf_hpc << 4));
25611         mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
25612                     (0x7 << 8), (rx_lpf_bw << 8));
25613
25614         rccal_stepsize = 16;
25615         rccal_val = start_rccal_ovr_val + rccal_stepsize;
25616
25617         while (rccal_stepsize >= 0) {
25618                 write_radio_reg(pi,
25619                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
25620                                  radio_addr_offset_rx), rccal_val);
25621
25622                 if (rccal_stepsize == 16) {
25623
25624                         wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
25625                                              0, 1, false);
25626                         udelay(2);
25627
25628                         wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
25629
25630                         if (core_idx == 0) {
25631                                 ref_iq_vals =
25632                                     max_t(u32, (est[0].i_pwr +
25633                                          est[0].q_pwr) >> (log_num_samps + 1),
25634                                         1);
25635                         } else {
25636                                 ref_iq_vals =
25637                                     max_t(u32, (est[1].i_pwr +
25638                                          est[1].q_pwr) >> (log_num_samps + 1),
25639                                         1);
25640                         }
25641
25642                         wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
25643                                              0, 1, false);
25644                         udelay(2);
25645                 }
25646
25647                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
25648
25649                 if (core_idx == 0) {
25650                         target_iq_vals =
25651                             (est[0].i_pwr + est[0].q_pwr) >> (log_num_samps +
25652                                                               1);
25653                 } else {
25654                         target_iq_vals =
25655                             (est[1].i_pwr + est[1].q_pwr) >> (log_num_samps +
25656                                                               1);
25657                 }
25658                 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
25659
25660                 if (rccal_stepsize == 0) {
25661                         rccal_stepsize--;
25662                 } else if (rccal_stepsize == 1) {
25663                         last_rccal_val = rccal_val;
25664                         rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
25665                         last_pwr_ratio = pwr_ratio;
25666                         rccal_stepsize--;
25667                 } else {
25668                         rccal_stepsize = (rccal_stepsize >> 1);
25669                         rccal_val += ((pwr_ratio > target_pwr_ratio) ?
25670                                       rccal_stepsize : (-rccal_stepsize));
25671                 }
25672
25673                 if (rccal_stepsize == -1) {
25674                         best_rccal_val =
25675                             (ABS((int)last_pwr_ratio - (int)target_pwr_ratio) <
25676                              ABS((int)pwr_ratio -
25677                                  (int)target_pwr_ratio)) ? last_rccal_val :
25678                             rccal_val;
25679
25680                         if (CHSPEC_IS40(pi->radio_chanspec)) {
25681                                 if ((best_rccal_val > 140)
25682                                     || (best_rccal_val < 135)) {
25683                                         best_rccal_val = 138;
25684                                 }
25685                         } else {
25686                                 if ((best_rccal_val > 142)
25687                                     || (best_rccal_val < 137)) {
25688                                         best_rccal_val = 140;
25689                                 }
25690                         }
25691
25692                         write_radio_reg(pi,
25693                                         (RADIO_2056_RX_RXLPF_RCCAL_LPC |
25694                                          radio_addr_offset_rx), best_rccal_val);
25695                 }
25696         }
25697
25698         wlc_phy_stopplayback_nphy(pi);
25699
25700         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
25701                         orig_txlpf_rccal_lpc_ovr_val);
25702         write_radio_reg(pi,
25703                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
25704                         orig_rxlpf_rccal_hpc_ovr_val);
25705
25706         mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
25707
25708         write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
25709         write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
25710         write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
25711         write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
25712         write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
25713         write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
25714         write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
25715         write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
25716         write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
25717         write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
25718
25719         write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
25720         write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
25721         write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
25722         write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
25723         write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
25724
25725         pi->nphy_anarxlpf_adjusted = false;
25726
25727         return best_rccal_val - 0x80;
25728 }
25729
25730 #define WAIT_FOR_SCOPE  4000
25731 static int
25732 wlc_phy_cal_rxiq_nphy_rev3(phy_info_t *pi, nphy_txgains_t target_gain,
25733                            u8 cal_type, bool debug)
25734 {
25735         u16 orig_BBConfig;
25736         u8 core_no, rx_core;
25737         u8 best_rccal[2];
25738         u16 gain_save[2];
25739         u16 cal_gain[2];
25740         nphy_iqcal_params_t cal_params[2];
25741         u8 rxcore_state;
25742         s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
25743         s8 txlpf_idac;
25744         bool phyhang_avoid_state = false;
25745         bool skip_rxiqcal = false;
25746
25747         orig_BBConfig = read_phy_reg(pi, 0x01);
25748         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25749
25750         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25751
25752         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25753                 phyhang_avoid_state = pi->phyhang_avoid;
25754                 pi->phyhang_avoid = false;
25755         }
25756
25757         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25758
25759         for (core_no = 0; core_no <= 1; core_no++) {
25760                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25761                                               &cal_params[core_no]);
25762                 cal_gain[core_no] = cal_params[core_no].cal_gain;
25763         }
25764
25765         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25766
25767         rxcore_state = wlc_phy_rxcore_getstate_nphy((wlc_phy_t *) pi);
25768
25769         for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
25770
25771                 skip_rxiqcal =
25772                     ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
25773
25774                 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
25775
25776                 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
25777
25778                 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
25779
25780                         wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
25781
25782                         wlc_phy_tx_tone_nphy(pi,
25783                                              (CHSPEC_IS40(pi->radio_chanspec)) ?
25784                                              NPHY_RXCAL_TONEFREQ_40MHz :
25785                                              NPHY_RXCAL_TONEFREQ_20MHz,
25786                                              NPHY_RXCAL_TONEAMP, 0, cal_type,
25787                                              false);
25788
25789                         if (debug)
25790                                 mdelay(WAIT_FOR_SCOPE);
25791
25792                         wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
25793                         wlc_phy_stopplayback_nphy(pi);
25794                 }
25795
25796                 if (((cal_type == 1) || (cal_type == 2))
25797                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
25798
25799                         if (rx_core == PHY_CORE_1) {
25800
25801                                 if (rxcore_state == 1) {
25802                                         wlc_phy_rxcore_setstate_nphy((wlc_phy_t
25803                                                                       *) pi, 3);
25804                                 }
25805
25806                                 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
25807                                                             1);
25808
25809                                 best_rccal[rx_core] =
25810                                     wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
25811                                 pi->nphy_rccal_value = best_rccal[rx_core];
25812
25813                                 if (rxcore_state == 1) {
25814                                         wlc_phy_rxcore_setstate_nphy((wlc_phy_t
25815                                                                       *) pi,
25816                                                                      rxcore_state);
25817                                 }
25818                         }
25819                 }
25820
25821                 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
25822
25823                 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
25824                 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
25825         }
25826
25827         if ((cal_type == 1) || (cal_type == 2)) {
25828
25829                 best_rccal[0] = best_rccal[1];
25830                 write_radio_reg(pi,
25831                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
25832                                  RADIO_2056_RX0), (best_rccal[0] | 0x80));
25833
25834                 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
25835                         rxlpf_rccal_hpc =
25836                             (((int)best_rccal[rx_core] - 12) >> 1) + 10;
25837                         txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
25838
25839                         if (PHY_IPA(pi)) {
25840                                 txlpf_rccal_lpc += IS40MHZ(pi) ? 24 : 12;
25841                                 txlpf_idac = IS40MHZ(pi) ? 0x0e : 0x13;
25842                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
25843                                                  TXLPF_IDAC_4, txlpf_idac);
25844                         }
25845
25846                         rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31), 0);
25847                         txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31), 0);
25848
25849                         write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
25850                                              ((rx_core ==
25851                                                PHY_CORE_0) ? RADIO_2056_RX0 :
25852                                               RADIO_2056_RX1)),
25853                                         (rxlpf_rccal_hpc | 0x80));
25854
25855                         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
25856                                              ((rx_core ==
25857                                                PHY_CORE_0) ? RADIO_2056_TX0 :
25858                                               RADIO_2056_TX1)),
25859                                         (txlpf_rccal_lpc | 0x80));
25860                 }
25861         }
25862
25863         write_phy_reg(pi, 0x01, orig_BBConfig);
25864
25865         wlc_phy_resetcca_nphy(pi);
25866
25867         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25868                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
25869                                                      NPHY_REV7_RfctrlOverride_cmd_rxgain,
25870                                                      0, 0x3, 1);
25871         } else {
25872                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
25873         }
25874         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
25875
25876         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
25877                                  gain_save);
25878
25879         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25880                 pi->phyhang_avoid = phyhang_avoid_state;
25881         }
25882
25883         wlc_phy_stay_in_carriersearch_nphy(pi, false);
25884
25885         return 0;
25886 }
25887
25888 static int
25889 wlc_phy_cal_rxiq_nphy_rev2(phy_info_t *pi, nphy_txgains_t target_gain,
25890                            bool debug)
25891 {
25892         phy_iq_est_t est[PHY_CORE_MAX];
25893         u8 core_num, rx_core, tx_core;
25894         u16 lna_vals[] = { 0x3, 0x3, 0x1 };
25895         u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
25896         u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
25897         s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
25898         s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
25899         u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
25900         u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
25901         u16 num_samps;
25902         u32 i_pwr, q_pwr, tot_pwr[3];
25903         u8 gain_pass, use_hpf_num;
25904         u16 mask, val1, val2;
25905         u16 core_no;
25906         u16 gain_save[2];
25907         u16 cal_gain[2];
25908         nphy_iqcal_params_t cal_params[2];
25909         u8 phy_bw;
25910         int bcmerror = 0;
25911         bool first_playtone = true;
25912
25913         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25914
25915         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
25916
25917                 wlc_phy_reapply_txcal_coeffs_nphy(pi);
25918         }
25919
25920         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25921
25922         for (core_no = 0; core_no <= 1; core_no++) {
25923                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25924                                               &cal_params[core_no]);
25925                 cal_gain[core_no] = cal_params[core_no].cal_gain;
25926         }
25927
25928         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25929
25930         num_samps = 1024;
25931         desired_log2_pwr = 13;
25932
25933         for (core_num = 0; core_num < 2; core_num++) {
25934
25935                 rx_core = core_num;
25936                 tx_core = 1 - core_num;
25937
25938                 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
25939                 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
25940                                                 0xa6 : 0xa7);
25941                 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
25942                 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
25943                                                  0x91 : 0x92);
25944                 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
25945                                                  0x91 : 0x92);
25946
25947                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
25948                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
25949
25950                 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
25951                            ((0x1 << 1) | (0x1 << 2)));
25952                 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
25953
25954                 if (((pi->nphy_rxcalparams) & 0xff000000)) {
25955
25956                         write_phy_reg(pi,
25957                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
25958                                       (CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 :
25959                                        0x110));
25960                 } else {
25961
25962                         write_phy_reg(pi,
25963                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
25964                                       (CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 :
25965                                        0x120));
25966                 }
25967
25968                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
25969                               (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
25970                                0x114));
25971
25972                 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
25973                 if (rx_core == PHY_CORE_0) {
25974                         val1 = RADIO_2055_COUPLE_RX_MASK;
25975                         val2 = RADIO_2055_COUPLE_TX_MASK;
25976                 } else {
25977                         val1 = RADIO_2055_COUPLE_TX_MASK;
25978                         val2 = RADIO_2055_COUPLE_RX_MASK;
25979                 }
25980
25981                 if ((pi->nphy_rxcalparams & 0x10000)) {
25982                         mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
25983                                       val1);
25984                         mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
25985                                       val2);
25986                 }
25987
25988                 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
25989
25990                         if (debug)
25991                                 mdelay(WAIT_FOR_SCOPE);
25992
25993                         if (gain_pass < 3) {
25994                                 curr_lna = lna_vals[gain_pass];
25995                                 curr_hpf1 = hpf1_vals[gain_pass];
25996                                 curr_hpf2 = hpf2_vals[gain_pass];
25997                         } else {
25998
25999                                 if (tot_pwr[1] > 10000) {
26000                                         curr_lna = lna_vals[2];
26001                                         curr_hpf1 = hpf1_vals[2];
26002                                         curr_hpf2 = hpf2_vals[2];
26003                                         use_hpf_num = 1;
26004                                         curr_hpf = curr_hpf1;
26005                                         actual_log2_pwr =
26006                                             wlc_phy_nbits(tot_pwr[2]);
26007                                 } else {
26008                                         if (tot_pwr[0] > 10000) {
26009                                                 curr_lna = lna_vals[1];
26010                                                 curr_hpf1 = hpf1_vals[1];
26011                                                 curr_hpf2 = hpf2_vals[1];
26012                                                 use_hpf_num = 1;
26013                                                 curr_hpf = curr_hpf1;
26014                                                 actual_log2_pwr =
26015                                                     wlc_phy_nbits(tot_pwr[1]);
26016                                         } else {
26017                                                 curr_lna = lna_vals[0];
26018                                                 curr_hpf1 = hpf1_vals[0];
26019                                                 curr_hpf2 = hpf2_vals[0];
26020                                                 use_hpf_num = 2;
26021                                                 curr_hpf = curr_hpf2;
26022                                                 actual_log2_pwr =
26023                                                     wlc_phy_nbits(tot_pwr[0]);
26024                                         }
26025                                 }
26026
26027                                 hpf_change = desired_log2_pwr - actual_log2_pwr;
26028                                 curr_hpf += hpf_change;
26029                                 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
26030                                 if (use_hpf_num == 1) {
26031                                         curr_hpf1 = curr_hpf;
26032                                 } else {
26033                                         curr_hpf2 = curr_hpf;
26034                                 }
26035                         }
26036
26037                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
26038                                                      ((curr_hpf2 << 8) |
26039                                                       (curr_hpf1 << 4) |
26040                                                       (curr_lna << 2)), 0x3, 0);
26041                         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
26042
26043                         wlc_phy_stopplayback_nphy(pi);
26044
26045                         if (first_playtone) {
26046                                 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
26047                                                                 (u16) (pi->
26048                                                                           nphy_rxcalparams
26049                                                                           &
26050                                                                           0xffff),
26051                                                                 0, 0, true);
26052                                 first_playtone = false;
26053                         } else {
26054                                 phy_bw =
26055                                     (CHSPEC_IS40(pi->radio_chanspec)) ? 40 : 20;
26056                                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
26057                                                         0, 0, 0, true);
26058                         }
26059
26060                         if (bcmerror == 0) {
26061                                 if (gain_pass < 3) {
26062
26063                                         wlc_phy_rx_iq_est_nphy(pi, est,
26064                                                                num_samps, 32,
26065                                                                0);
26066                                         i_pwr =
26067                                             (est[rx_core].i_pwr +
26068                                              num_samps / 2) / num_samps;
26069                                         q_pwr =
26070                                             (est[rx_core].q_pwr +
26071                                              num_samps / 2) / num_samps;
26072                                         tot_pwr[gain_pass] = i_pwr + q_pwr;
26073                                 } else {
26074
26075                                         wlc_phy_calc_rx_iq_comp_nphy(pi,
26076                                                                      (1 <<
26077                                                                       rx_core));
26078                                 }
26079
26080                                 wlc_phy_stopplayback_nphy(pi);
26081                         }
26082
26083                         if (bcmerror != 0)
26084                                 break;
26085                 }
26086
26087                 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
26088                 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
26089
26090                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
26091                               0x92, orig_RfctrlIntcTx);
26092                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
26093                               0x92, orig_RfctrlIntcRx);
26094                 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
26095                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
26096                               0xa7, orig_AfectrlCore);
26097                 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
26098
26099                 if (bcmerror != 0)
26100                         break;
26101         }
26102
26103         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
26104         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
26105
26106         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26107                                  gain_save);
26108
26109         wlc_phy_stay_in_carriersearch_nphy(pi, false);
26110
26111         return bcmerror;
26112 }
26113
26114 int
26115 wlc_phy_cal_rxiq_nphy(phy_info_t *pi, nphy_txgains_t target_gain,
26116                       u8 cal_type, bool debug)
26117 {
26118         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26119
26120                 cal_type = 0;
26121         }
26122         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26123                 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
26124                                                   debug);
26125         } else {
26126                 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
26127         }
26128 }
26129
26130 static void wlc_phy_extpa_set_tx_digi_filts_nphy(phy_info_t *pi)
26131 {
26132         int j, type = 2;
26133         u16 addr_offset = 0x2c5;
26134
26135         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26136                 write_phy_reg(pi, addr_offset + j,
26137                               NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
26138         }
26139 }
26140
26141 static void wlc_phy_ipa_set_tx_digi_filts_nphy(phy_info_t *pi)
26142 {
26143         int j, type;
26144         u16 addr_offset[] = { 0x186, 0x195,
26145                 0x2c5
26146         };
26147
26148         for (type = 0; type < 3; type++) {
26149                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26150                         write_phy_reg(pi, addr_offset[type] + j,
26151                                       NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
26152                 }
26153         }
26154
26155         if (IS40MHZ(pi)) {
26156                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26157                         write_phy_reg(pi, 0x186 + j,
26158                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
26159                 }
26160         } else {
26161                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26162                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26163                                 write_phy_reg(pi, 0x186 + j,
26164                                               NPHY_IPA_REV4_txdigi_filtcoeffs[5]
26165                                               [j]);
26166                         }
26167                 }
26168
26169                 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
26170                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26171                                 write_phy_reg(pi, 0x2c5 + j,
26172                                               NPHY_IPA_REV4_txdigi_filtcoeffs[6]
26173                                               [j]);
26174                         }
26175                 }
26176         }
26177 }
26178
26179 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(phy_info_t *pi)
26180 {
26181         int j;
26182
26183         if (IS40MHZ(pi)) {
26184                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26185                         write_phy_reg(pi, 0x195 + j,
26186                                       NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
26187                 }
26188         } else {
26189                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26190                         write_phy_reg(pi, 0x186 + j,
26191                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
26192                 }
26193         }
26194 }
26195
26196 static u16 wlc_phy_ipa_get_bbmult_nphy(phy_info_t *pi)
26197 {
26198         u16 m0m1;
26199
26200         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
26201
26202         return m0m1;
26203 }
26204
26205 static void wlc_phy_ipa_set_bbmult_nphy(phy_info_t *pi, u8 m0, u8 m1)
26206 {
26207         u16 m0m1 = (u16) ((m0 << 8) | m1);
26208
26209         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
26210         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
26211 }
26212
26213 static u32 *wlc_phy_get_ipa_gaintbl_nphy(phy_info_t *pi)
26214 {
26215         u32 *tx_pwrctrl_tbl = NULL;
26216
26217         if (CHSPEC_IS2G(pi->radio_chanspec)) {
26218
26219                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26220
26221                         if ((pi->pubpi.radiorev == 4)
26222                             || (pi->pubpi.radiorev == 6)) {
26223
26224                                 tx_pwrctrl_tbl =
26225                                     nphy_tpc_txgain_ipa_2g_2057rev4n6;
26226                         } else if (pi->pubpi.radiorev == 3) {
26227
26228                                 tx_pwrctrl_tbl =
26229                                     nphy_tpc_txgain_ipa_2g_2057rev3;
26230                         } else if (pi->pubpi.radiorev == 5) {
26231
26232                                 tx_pwrctrl_tbl =
26233                                     nphy_tpc_txgain_ipa_2g_2057rev5;
26234                         } else if ((pi->pubpi.radiorev == 7)
26235                                    || (pi->pubpi.radiorev == 8)) {
26236
26237                                 tx_pwrctrl_tbl =
26238                                     nphy_tpc_txgain_ipa_2g_2057rev7;
26239                         }
26240
26241                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
26242
26243                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
26244                         if (pi->sh->chip == BCM47162_CHIP_ID) {
26245
26246                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
26247                         }
26248
26249                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
26250
26251                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
26252                 } else {
26253
26254                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
26255                 }
26256
26257         } else {
26258
26259                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26260                         if ((pi->pubpi.radiorev == 3) ||
26261                             (pi->pubpi.radiorev == 4) ||
26262                             (pi->pubpi.radiorev == 6)) {
26263
26264                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
26265                         } else if ((pi->pubpi.radiorev == 7)
26266                                    || (pi->pubpi.radiorev == 8)) {
26267
26268                                 tx_pwrctrl_tbl =
26269                                     nphy_tpc_txgain_ipa_5g_2057rev7;
26270                         }
26271
26272                 } else {
26273                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
26274                 }
26275         }
26276
26277         return tx_pwrctrl_tbl;
26278 }
26279
26280 static void
26281 wlc_phy_papd_cal_setup_nphy(phy_info_t *pi, nphy_papd_restore_state *state,
26282                             u8 core)
26283 {
26284         s32 tone_freq;
26285         u8 off_core;
26286         u16 mixgain = 0;
26287
26288         off_core = core ^ 0x1;
26289         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26290
26291                 if (NREV_IS(pi->pubpi.phy_rev, 7)
26292                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
26293                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26294                                                           wlc_phy_read_lpf_bw_ctl_nphy
26295                                                           (pi, 0), 0, 0,
26296                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
26297                 }
26298
26299                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26300                         if (pi->pubpi.radiorev == 5) {
26301                                 mixgain = (core == 0) ? 0x20 : 0x00;
26302
26303                         } else if ((pi->pubpi.radiorev == 7)
26304                                    || (pi->pubpi.radiorev == 8)) {
26305
26306                                 mixgain = 0x00;
26307
26308                         } else if ((pi->pubpi.radiorev <= 4)
26309                                    || (pi->pubpi.radiorev == 6)) {
26310
26311                                 mixgain = 0x00;
26312                         }
26313
26314                 } else {
26315                         if ((pi->pubpi.radiorev == 4) ||
26316                             (pi->pubpi.radiorev == 6)) {
26317
26318                                 mixgain = 0x50;
26319                         } else if ((pi->pubpi.radiorev == 3)
26320                                    || (pi->pubpi.radiorev == 7)
26321                                    || (pi->pubpi.radiorev == 8)) {
26322
26323                                 mixgain = 0x0;
26324                         }
26325                 }
26326
26327                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
26328                                                   mixgain, (1 << core), 0,
26329                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26330
26331                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26332                                                      NPHY_REV7_RfctrlOverride_cmd_tx_pu,
26333                                                      1, (1 << core), 0);
26334                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26335                                                      NPHY_REV7_RfctrlOverride_cmd_tx_pu,
26336                                                      0, (1 << off_core), 0);
26337
26338                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26339                                                   0, 0x3, 0,
26340                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26341                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
26342                                                   (1 << core), 0,
26343                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26344                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
26345                                                   (1 << core), 0,
26346                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26347                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
26348                                                   (1 << core), 0,
26349                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26350                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
26351                                                   (1 << core), 0,
26352                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26353                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
26354                                                   (1 << core), 0,
26355                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26356                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
26357                                                   (1 << core), 0,
26358                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26359                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
26360                                                   (1 << core), 0,
26361                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26362
26363                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
26364                                                   0, (1 << core), 0,
26365                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26366                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
26367                                                   (1 << core), 0,
26368                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26369
26370                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
26371                                                     0xa6 : 0xa7);
26372                 state->afeoverride[core] =
26373                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
26374                 state->afectrl[off_core] =
26375                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
26376                 state->afeoverride[off_core] =
26377                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
26378
26379                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
26380                             (0x1 << 2), 0);
26381                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
26382                                  0xa5), (0x1 << 2), (0x1 << 2));
26383
26384                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
26385                             (0x1 << 2), (0x1 << 2));
26386                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
26387                                  0x8f), (0x1 << 2), (0x1 << 2));
26388
26389                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26390                         state->pwrup[core] =
26391                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26392                                             TXRXCOUPLE_2G_PWRUP);
26393                         state->atten[core] =
26394                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26395                                             TXRXCOUPLE_2G_ATTEN);
26396                         state->pwrup[off_core] =
26397                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26398                                             TXRXCOUPLE_2G_PWRUP);
26399                         state->atten[off_core] =
26400                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26401                                             TXRXCOUPLE_2G_ATTEN);
26402
26403                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26404                                          TXRXCOUPLE_2G_PWRUP, 0xc);
26405
26406                         if ((pi->pubpi.radiorev == 3) ||
26407                             (pi->pubpi.radiorev == 4) ||
26408                             (pi->pubpi.radiorev == 6)) {
26409
26410                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26411                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
26412
26413                         } else if (pi->pubpi.radiorev == 5) {
26414
26415                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26416                                                  TXRXCOUPLE_2G_ATTEN,
26417                                                  (core == 0) ? 0xf7 : 0xf2);
26418
26419                         } else if ((pi->pubpi.radiorev == 7)
26420                                    || (pi->pubpi.radiorev == 8)) {
26421
26422                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26423                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
26424
26425                         }
26426
26427                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26428                                          TXRXCOUPLE_2G_PWRUP, 0x0);
26429                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26430                                          TXRXCOUPLE_2G_ATTEN, 0xff);
26431
26432                 } else {
26433                         state->pwrup[core] =
26434                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26435                                             TXRXCOUPLE_5G_PWRUP);
26436                         state->atten[core] =
26437                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26438                                             TXRXCOUPLE_5G_ATTEN);
26439                         state->pwrup[off_core] =
26440                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26441                                             TXRXCOUPLE_5G_PWRUP);
26442                         state->atten[off_core] =
26443                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26444                                             TXRXCOUPLE_5G_ATTEN);
26445
26446                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26447                                          TXRXCOUPLE_5G_PWRUP, 0xc);
26448
26449                         if ((pi->pubpi.radiorev == 7)
26450                             || (pi->pubpi.radiorev == 8)) {
26451
26452                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26453                                                  TXRXCOUPLE_5G_ATTEN, 0xf4);
26454
26455                         } else {
26456                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26457                                                  TXRXCOUPLE_5G_ATTEN, 0xf0);
26458                         }
26459
26460                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26461                                          TXRXCOUPLE_5G_PWRUP, 0x0);
26462                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26463                                          TXRXCOUPLE_5G_ATTEN, 0xff);
26464                 }
26465
26466                 tone_freq = 4000;
26467
26468                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
26469
26470                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26471                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
26472
26473                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26474                             0x2a4, (0x1 << 13), (1) << 13);
26475
26476                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
26477                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
26478
26479                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
26480                             0x2a4, (0x1 << 13), (0) << 13);
26481
26482         } else {
26483
26484                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
26485
26486                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
26487
26488                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
26489
26490                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
26491                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
26492
26493                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
26494                                                     0xa6 : 0xa7);
26495                 state->afeoverride[core] =
26496                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
26497
26498                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
26499                             (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
26500                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
26501                                  0xa5),
26502                             (0x1 << 0) |
26503                             (0x1 << 1) |
26504                             (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
26505
26506                 state->vga_master[core] =
26507                     READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
26508                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
26509                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26510                         state->fbmix[core] =
26511                             READ_RADIO_REG2(pi, RADIO_2056, RX, core,
26512                                             TXFBMIX_G);
26513                         state->intpa_master[core] =
26514                             READ_RADIO_REG2(pi, RADIO_2056, TX, core,
26515                                             INTPAG_MASTER);
26516
26517                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
26518                                          0x03);
26519                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26520                                          INTPAG_MASTER, 0x04);
26521                 } else {
26522                         state->fbmix[core] =
26523                             READ_RADIO_REG2(pi, RADIO_2056, RX, core,
26524                                             TXFBMIX_A);
26525                         state->intpa_master[core] =
26526                             READ_RADIO_REG2(pi, RADIO_2056, TX, core,
26527                                             INTPAA_MASTER);
26528
26529                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
26530                                          0x03);
26531                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26532                                          INTPAA_MASTER, 0x04);
26533
26534                 }
26535
26536                 tone_freq = 4000;
26537
26538                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
26539
26540                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26541                             0x29b, (0x1 << 0), (1) << 0);
26542
26543                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
26544                             0x29b, (0x1 << 0), (0) << 0);
26545
26546                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
26547         }
26548 }
26549
26550 static void
26551 wlc_phy_papd_cal_cleanup_nphy(phy_info_t *pi, nphy_papd_restore_state *state)
26552 {
26553         u8 core;
26554
26555         wlc_phy_stopplayback_nphy(pi);
26556
26557         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26558
26559                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26560
26561                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
26562                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26563                                                  TXRXCOUPLE_2G_PWRUP, 0);
26564                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26565                                                  TXRXCOUPLE_2G_ATTEN,
26566                                                  state->atten[core]);
26567                         } else {
26568                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26569                                                  TXRXCOUPLE_5G_PWRUP, 0);
26570                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26571                                                  TXRXCOUPLE_5G_ATTEN,
26572                                                  state->atten[core]);
26573                         }
26574                 }
26575
26576                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6)) {
26577                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
26578                                                           1, 0x3, 0,
26579                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
26580                 } else {
26581                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
26582                                                           0, 0x3, 1,
26583                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
26584                 }
26585                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
26586                                                   0, 0x3, 1,
26587                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26588                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
26589                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26590                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
26591                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26592                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
26593                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26594                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
26595                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26596                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
26597                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26598                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
26599                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26600                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
26601                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26602                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
26603                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26604                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
26605                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26606                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
26607                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26608                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
26609                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26610                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
26611                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26612                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
26613                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26614                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
26615                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26616                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
26617                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26618
26619                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26620
26621                         write_phy_reg(pi, (core == PHY_CORE_0) ?
26622                                       0xa6 : 0xa7, state->afectrl[core]);
26623                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
26624                                       0xa5, state->afeoverride[core]);
26625                 }
26626
26627                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
26628                                             (state->mm & 0xff));
26629
26630                 if (NREV_IS(pi->pubpi.phy_rev, 7)
26631                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
26632                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7), 0, 0,
26633                                                           1,
26634                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
26635                 }
26636         } else {
26637
26638                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
26639                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
26640                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
26641
26642                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
26643                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
26644
26645                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26646
26647                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
26648                                          state->vga_master[core]);
26649                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
26650                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
26651                                                  TXFBMIX_G, state->fbmix[core]);
26652                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26653                                                  INTPAG_MASTER,
26654                                                  state->intpa_master[core]);
26655                         } else {
26656                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
26657                                                  TXFBMIX_A, state->fbmix[core]);
26658                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26659                                                  INTPAA_MASTER,
26660                                                  state->intpa_master[core]);
26661                         }
26662
26663                         write_phy_reg(pi, (core == PHY_CORE_0) ?
26664                                       0xa6 : 0xa7, state->afectrl[core]);
26665                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
26666                                       0xa5, state->afeoverride[core]);
26667                 }
26668
26669                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
26670                                             (state->mm & 0xff));
26671
26672                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
26673         }
26674 }
26675
26676 static void
26677 wlc_phy_a1_nphy(phy_info_t *pi, u8 core, u32 winsz, u32 start,
26678                 u32 end)
26679 {
26680         u32 *buf, *src, *dst, sz;
26681
26682         sz = end - start + 1;
26683
26684         buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
26685         if (NULL == buf) {
26686                 return;
26687         }
26688
26689         src = buf;
26690         dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
26691
26692         wlc_phy_table_read_nphy(pi,
26693                                 (core ==
26694                                  PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
26695                                  NPHY_TBL_ID_EPSILONTBL1),
26696                                 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
26697
26698         do {
26699                 u32 phy_a1, phy_a2;
26700                 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
26701
26702                 phy_a1 = end - min(end, (winsz >> 1));
26703                 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1, end + (winsz >> 1));
26704                 phy_a3 = phy_a2 - phy_a1 + 1;
26705                 phy_a6 = 0;
26706                 phy_a7 = 0;
26707
26708                 do {
26709                         wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
26710                                                     &phy_a5);
26711                         phy_a6 += phy_a4;
26712                         phy_a7 += phy_a5;
26713                 } while (phy_a2-- != phy_a1);
26714
26715                 phy_a6 /= phy_a3;
26716                 phy_a7 /= phy_a3;
26717                 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
26718         } while (end-- != start);
26719
26720         wlc_phy_table_write_nphy(pi,
26721                                  (core ==
26722                                   PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
26723                                  NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
26724
26725         kfree(buf);
26726 }
26727
26728 static void
26729 wlc_phy_a2_nphy(phy_info_t *pi, nphy_ipa_txcalgains_t *txgains,
26730                 phy_cal_mode_t cal_mode, u8 core)
26731 {
26732         u16 phy_a1, phy_a2, phy_a3;
26733         u16 phy_a4, phy_a5;
26734         bool phy_a6;
26735         u8 phy_a7, m[2];
26736         u32 phy_a8 = 0;
26737         nphy_txgains_t phy_a9;
26738
26739         if (NREV_LT(pi->pubpi.phy_rev, 3))
26740                 return;
26741
26742         phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
26743
26744         phy_a6 = ((cal_mode == CAL_GCTRL)
26745                   || (cal_mode == CAL_SOFT)) ? true : false;
26746
26747         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26748
26749                 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
26750
26751                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26752                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
26753                                   (phy_a9.txgm[core] << 12) |
26754                                   (phy_a9.pga[core] << 8) |
26755                                   (txgains->gains.pad[core] << 3) |
26756                                   (phy_a9.ipa[core]));
26757                 } else {
26758                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
26759                                   (phy_a9.txgm[core] << 12) |
26760                                   (txgains->gains.pga[core] << 8) |
26761                                   (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
26762                 }
26763
26764                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26765                                                      NPHY_REV7_RfctrlOverride_cmd_txgain,
26766                                                      phy_a5, (1 << core), 0);
26767
26768                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26769                         if ((pi->pubpi.radiorev <= 4)
26770                             || (pi->pubpi.radiorev == 6)) {
26771
26772                                 m[core] = IS40MHZ(pi) ? 60 : 79;
26773                         } else {
26774
26775                                 m[core] = IS40MHZ(pi) ? 45 : 64;
26776                         }
26777
26778                 } else {
26779                         m[core] = IS40MHZ(pi) ? 75 : 107;
26780                 }
26781
26782                 m[phy_a7] = 0;
26783                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
26784
26785                 phy_a2 = 63;
26786
26787                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26788                         if (pi->sh->chip == BCM6362_CHIP_ID) {
26789                                 phy_a1 = 35;
26790                                 phy_a3 = 35;
26791                         } else if ((pi->pubpi.radiorev == 4)
26792                                    || (pi->pubpi.radiorev == 6)) {
26793                                 phy_a1 = 30;
26794                                 phy_a3 = 30;
26795                         } else {
26796                                 phy_a1 = 25;
26797                                 phy_a3 = 25;
26798                         }
26799                 } else {
26800                         if ((pi->pubpi.radiorev == 5)
26801                             || (pi->pubpi.radiorev == 7)
26802                             || (pi->pubpi.radiorev == 8)) {
26803                                 phy_a1 = 25;
26804                                 phy_a3 = 25;
26805                         } else {
26806                                 phy_a1 = 35;
26807                                 phy_a3 = 35;
26808                         }
26809                 }
26810
26811                 if (cal_mode == CAL_GCTRL) {
26812                         if ((pi->pubpi.radiorev == 5)
26813                             && (CHSPEC_IS2G(pi->radio_chanspec))) {
26814                                 phy_a1 = 55;
26815                         } else if (((pi->pubpi.radiorev == 7) &&
26816                                     (CHSPEC_IS2G(pi->radio_chanspec))) ||
26817                                    ((pi->pubpi.radiorev == 8) &&
26818                                     (CHSPEC_IS2G(pi->radio_chanspec)))) {
26819                                 phy_a1 = 60;
26820                         } else {
26821                                 phy_a1 = 63;
26822                         }
26823
26824                 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
26825
26826                         phy_a1 = 35;
26827                         phy_a3 = 35;
26828                 }
26829
26830                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26831                             0x29b, (0x1 << 0), (1) << 0);
26832
26833                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
26834                             0x29b, (0x1 << 0), (0) << 0);
26835
26836                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26837                             0x2a4, (0x1 << 13), (1) << 13);
26838
26839                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
26840                             0x2a4, (0x1 << 13), (0) << 13);
26841
26842                 write_phy_reg(pi, 0x2a1, 0x80);
26843                 write_phy_reg(pi, 0x2a2, 0x100);
26844
26845                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26846                             0x2a4, (0x7 << 4), (11) << 4);
26847
26848                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26849                             0x2a4, (0x7 << 8), (11) << 8);
26850
26851                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26852                             0x2a4, (0x7 << 0), (0x3) << 0);
26853
26854                 write_phy_reg(pi, 0x2e5, 0x20);
26855
26856                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
26857
26858                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
26859
26860                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
26861
26862                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26863                                                   1, ((core == 0) ? 1 : 2), 0,
26864                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26865                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26866                                                   0, ((core == 0) ? 2 : 1), 0,
26867                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26868
26869                 write_phy_reg(pi, 0x2be, 1);
26870                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
26871
26872                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26873                                                   0, 0x3, 0,
26874                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26875
26876                 wlc_phy_table_write_nphy(pi,
26877                                          (core ==
26878                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
26879                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
26880                                          32, &phy_a8);
26881
26882                 if (cal_mode != CAL_GCTRL) {
26883                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26884                                 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
26885                         }
26886                 }
26887
26888                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26889                                                      NPHY_REV7_RfctrlOverride_cmd_txgain,
26890                                                      phy_a5, (1 << core), 1);
26891
26892         } else {
26893
26894                 if (txgains) {
26895                         if (txgains->useindex) {
26896                                 phy_a4 = 15 - ((txgains->index) >> 3);
26897                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26898                                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
26899                                                 phy_a5 = 0x00f7 | (phy_a4 << 8);
26900
26901                                                 if (pi->sh->chip ==
26902                                                     BCM47162_CHIP_ID) {
26903                                                         phy_a5 =
26904                                                             0x10f7 | (phy_a4 <<
26905                                                                       8);
26906                                                 }
26907                                         } else
26908                                             if (NREV_IS(pi->pubpi.phy_rev, 5))
26909                                                 phy_a5 = 0x10f7 | (phy_a4 << 8);
26910                                         else
26911                                                 phy_a5 = 0x50f7 | (phy_a4 << 8);
26912                                 } else {
26913                                         phy_a5 = 0x70f7 | (phy_a4 << 8);
26914                                 }
26915                                 wlc_phy_rfctrl_override_nphy(pi,
26916                                                              (0x1 << 13),
26917                                                              phy_a5,
26918                                                              (1 << core), 0);
26919                         } else {
26920                                 wlc_phy_rfctrl_override_nphy(pi,
26921                                                              (0x1 << 13),
26922                                                              0x5bf7,
26923                                                              (1 << core), 0);
26924                         }
26925                 }
26926
26927                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26928                         m[core] = IS40MHZ(pi) ? 45 : 64;
26929                 } else {
26930                         m[core] = IS40MHZ(pi) ? 75 : 107;
26931                 }
26932
26933                 m[phy_a7] = 0;
26934                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
26935
26936                 phy_a2 = 63;
26937
26938                 if (cal_mode == CAL_FULL) {
26939                         phy_a1 = 25;
26940                         phy_a3 = 25;
26941                 } else if (cal_mode == CAL_SOFT) {
26942                         phy_a1 = 25;
26943                         phy_a3 = 25;
26944                 } else if (cal_mode == CAL_GCTRL) {
26945                         phy_a1 = 63;
26946                         phy_a3 = 25;
26947                 } else {
26948
26949                         phy_a1 = 25;
26950                         phy_a3 = 25;
26951                 }
26952
26953                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26954                             0x29b, (0x1 << 0), (1) << 0);
26955
26956                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
26957                             0x29b, (0x1 << 0), (0) << 0);
26958
26959                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
26960                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26961                                     0x2a4, (0x1 << 13), (1) << 13);
26962
26963                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
26964                                     0x2a4, (0x1 << 13), (0) << 13);
26965
26966                         write_phy_reg(pi, 0x2a1, 0x20);
26967                         write_phy_reg(pi, 0x2a2, 0x60);
26968
26969                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26970                                     0x2a4, (0xf << 4), (9) << 4);
26971
26972                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26973                                     0x2a4, (0xf << 8), (9) << 8);
26974
26975                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26976                                     0x2a4, (0xf << 0), (0x2) << 0);
26977
26978                         write_phy_reg(pi, 0x2e5, 0x20);
26979                 } else {
26980                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26981                                     0x2a4, (0x1 << 11), (1) << 11);
26982
26983                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
26984                                     0x2a4, (0x1 << 11), (0) << 11);
26985
26986                         write_phy_reg(pi, 0x2a1, 0x80);
26987                         write_phy_reg(pi, 0x2a2, 0x600);
26988
26989                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26990                                     0x2a4, (0x7 << 4), (0) << 4);
26991
26992                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26993                                     0x2a4, (0x7 << 8), (0) << 8);
26994
26995                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26996                                     0x2a4, (0x7 << 0), (0x3) << 0);
26997
26998                         mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
26999
27000                 }
27001
27002                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
27003
27004                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
27005
27006                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
27007
27008                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
27009
27010                 write_phy_reg(pi, 0x2be, 1);
27011                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
27012
27013                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
27014
27015                 wlc_phy_table_write_nphy(pi,
27016                                          (core ==
27017                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
27018                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
27019                                          32, &phy_a8);
27020
27021                 if (cal_mode != CAL_GCTRL) {
27022                         wlc_phy_a1_nphy(pi, core, 5, 0, 40);
27023                 }
27024         }
27025 }
27026
27027 static u8 wlc_phy_a3_nphy(phy_info_t *pi, u8 start_gain, u8 core)
27028 {
27029         int phy_a1;
27030         int phy_a2;
27031         bool phy_a3;
27032         nphy_ipa_txcalgains_t phy_a4;
27033         bool phy_a5 = false;
27034         bool phy_a6 = true;
27035         s32 phy_a7, phy_a8;
27036         u32 phy_a9;
27037         int phy_a10;
27038         bool phy_a11 = false;
27039         int phy_a12;
27040         u8 phy_a13 = 0;
27041         u8 phy_a14;
27042         u8 *phy_a15 = NULL;
27043
27044         phy_a4.useindex = true;
27045         phy_a12 = start_gain;
27046
27047         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27048
27049                 phy_a2 = 20;
27050                 phy_a1 = 1;
27051
27052                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
27053                         if (pi->pubpi.radiorev == 5) {
27054
27055                                 phy_a15 = pad_gain_codes_used_2057rev5;
27056                                 phy_a13 = sizeof(pad_gain_codes_used_2057rev5) /
27057                                     sizeof(pad_gain_codes_used_2057rev5[0]) - 1;
27058
27059                         } else if ((pi->pubpi.radiorev == 7)
27060                                    || (pi->pubpi.radiorev == 8)) {
27061
27062                                 phy_a15 = pad_gain_codes_used_2057rev7;
27063                                 phy_a13 = sizeof(pad_gain_codes_used_2057rev7) /
27064                                     sizeof(pad_gain_codes_used_2057rev7[0]) - 1;
27065
27066                         } else {
27067
27068                                 phy_a15 = pad_all_gain_codes_2057;
27069                                 phy_a13 = sizeof(pad_all_gain_codes_2057) /
27070                                     sizeof(pad_all_gain_codes_2057[0]) - 1;
27071                         }
27072
27073                 } else {
27074
27075                         phy_a15 = pga_all_gain_codes_2057;
27076                         phy_a13 = sizeof(pga_all_gain_codes_2057) /
27077                             sizeof(pga_all_gain_codes_2057[0]) - 1;
27078                 }
27079
27080                 phy_a14 = 0;
27081
27082                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
27083                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27084                                 phy_a4.gains.pad[core] =
27085                                     (u16) phy_a15[phy_a12];
27086                         } else {
27087                                 phy_a4.gains.pga[core] =
27088                                     (u16) phy_a15[phy_a12];
27089                         }
27090
27091                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
27092
27093                         wlc_phy_table_read_nphy(pi,
27094                                                 (core ==
27095                                                  PHY_CORE_0 ?
27096                                                  NPHY_TBL_ID_EPSILONTBL0 :
27097                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
27098                                                 63, 32, &phy_a9);
27099
27100                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
27101
27102                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
27103                                   (phy_a8 == 4095) || (phy_a8 == -4096));
27104
27105                         if (!phy_a6 && (phy_a3 != phy_a5)) {
27106                                 if (!phy_a3) {
27107                                         phy_a12 -= (u8) phy_a1;
27108                                 }
27109                                 phy_a11 = true;
27110                                 break;
27111                         }
27112
27113                         if (phy_a3)
27114                                 phy_a12 += (u8) phy_a1;
27115                         else
27116                                 phy_a12 -= (u8) phy_a1;
27117
27118                         if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
27119                                 if (phy_a12 < phy_a14) {
27120                                         phy_a12 = phy_a14;
27121                                 } else {
27122                                         phy_a12 = phy_a13;
27123                                 }
27124                                 phy_a11 = true;
27125                                 break;
27126                         }
27127
27128                         phy_a6 = false;
27129                         phy_a5 = phy_a3;
27130                 }
27131
27132         } else {
27133                 phy_a2 = 10;
27134                 phy_a1 = 8;
27135                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
27136                         phy_a4.index = (u8) phy_a12;
27137                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
27138
27139                         wlc_phy_table_read_nphy(pi,
27140                                                 (core ==
27141                                                  PHY_CORE_0 ?
27142                                                  NPHY_TBL_ID_EPSILONTBL0 :
27143                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
27144                                                 63, 32, &phy_a9);
27145
27146                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
27147
27148                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
27149                                   (phy_a8 == 4095) || (phy_a8 == -4096));
27150
27151                         if (!phy_a6 && (phy_a3 != phy_a5)) {
27152                                 if (!phy_a3) {
27153                                         phy_a12 -= (u8) phy_a1;
27154                                 }
27155                                 phy_a11 = true;
27156                                 break;
27157                         }
27158
27159                         if (phy_a3)
27160                                 phy_a12 += (u8) phy_a1;
27161                         else
27162                                 phy_a12 -= (u8) phy_a1;
27163
27164                         if ((phy_a12 < 0) || (phy_a12 > 127)) {
27165                                 if (phy_a12 < 0) {
27166                                         phy_a12 = 0;
27167                                 } else {
27168                                         phy_a12 = 127;
27169                                 }
27170                                 phy_a11 = true;
27171                                 break;
27172                         }
27173
27174                         phy_a6 = false;
27175                         phy_a5 = phy_a3;
27176                 }
27177
27178         }
27179
27180         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27181                 return (u8) phy_a15[phy_a12];
27182         } else {
27183                 return (u8) phy_a12;
27184         }
27185
27186 }
27187
27188 static void wlc_phy_a4(phy_info_t *pi, bool full_cal)
27189 {
27190         nphy_ipa_txcalgains_t phy_b1[2];
27191         nphy_papd_restore_state phy_b2;
27192         bool phy_b3;
27193         u8 phy_b4;
27194         u8 phy_b5;
27195         s16 phy_b6, phy_b7, phy_b8;
27196         u16 phy_b9;
27197         s16 phy_b10, phy_b11, phy_b12;
27198
27199         phy_b11 = 0;
27200         phy_b12 = 0;
27201         phy_b7 = 0;
27202         phy_b8 = 0;
27203         phy_b6 = 0;
27204
27205         if (pi->nphy_papd_skip == 1)
27206                 return;
27207
27208         phy_b3 =
27209             (0 == (R_REG(&pi->regs->maccontrol) & MCTL_EN_MAC));
27210         if (!phy_b3) {
27211                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
27212         }
27213
27214         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27215
27216         pi->nphy_force_papd_cal = false;
27217
27218         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
27219                 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
27220                     wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
27221
27222         pi->nphy_papd_last_cal = pi->sh->now;
27223         pi->nphy_papd_recal_counter++;
27224
27225         if (NORADIO_ENAB(pi->pubpi))
27226                 return;
27227
27228         phy_b4 = pi->nphy_txpwrctrl;
27229         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
27230
27231         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
27232                                  nphy_papd_scaltbl);
27233         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
27234                                  nphy_papd_scaltbl);
27235
27236         phy_b9 = read_phy_reg(pi, 0x01);
27237         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27238
27239         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
27240                 s32 i, val = 0;
27241                 for (i = 0; i < 64; i++) {
27242                         wlc_phy_table_write_nphy(pi,
27243                                                  ((phy_b5 ==
27244                                                    PHY_CORE_0) ?
27245                                                   NPHY_TBL_ID_EPSILONTBL0 :
27246                                                   NPHY_TBL_ID_EPSILONTBL1), 1,
27247                                                  i, 32, &val);
27248                 }
27249         }
27250
27251         wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
27252
27253         phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
27254         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
27255                 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
27256
27257                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27258                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27259
27260                                 if ((pi->pubpi.radiorev == 3)
27261                                     || (pi->pubpi.radiorev == 4)
27262                                     || (pi->pubpi.radiorev == 6)) {
27263
27264                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27265                                             23;
27266
27267                                 } else if (pi->pubpi.radiorev == 5) {
27268
27269                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27270                                             0;
27271                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27272                                             wlc_phy_a3_nphy(pi,
27273                                                             pi->
27274                                                             nphy_papd_cal_gain_index
27275                                                             [phy_b5], phy_b5);
27276
27277                                 } else if ((pi->pubpi.radiorev == 7)
27278                                            || (pi->pubpi.radiorev == 8)) {
27279
27280                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27281                                             0;
27282                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27283                                             wlc_phy_a3_nphy(pi,
27284                                                             pi->
27285                                                             nphy_papd_cal_gain_index
27286                                                             [phy_b5], phy_b5);
27287
27288                                 }
27289
27290                                 phy_b1[phy_b5].gains.pad[phy_b5] =
27291                                     pi->nphy_papd_cal_gain_index[phy_b5];
27292
27293                         } else {
27294                                 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
27295                                 pi->nphy_papd_cal_gain_index[phy_b5] =
27296                                     wlc_phy_a3_nphy(pi,
27297                                                     pi->
27298                                                     nphy_papd_cal_gain_index
27299                                                     [phy_b5], phy_b5);
27300                                 phy_b1[phy_b5].gains.pga[phy_b5] =
27301                                     pi->nphy_papd_cal_gain_index[phy_b5];
27302                         }
27303                 } else {
27304                         phy_b1[phy_b5].useindex = true;
27305                         phy_b1[phy_b5].index = 16;
27306                         phy_b1[phy_b5].index =
27307                             wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index, phy_b5);
27308
27309                         pi->nphy_papd_cal_gain_index[phy_b5] =
27310                             15 - ((phy_b1[phy_b5].index) >> 3);
27311                 }
27312
27313                 switch (pi->nphy_papd_cal_type) {
27314                 case 0:
27315                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
27316                         break;
27317                 case 1:
27318                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
27319                         break;
27320                 }
27321
27322                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27323                         wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
27324                 }
27325         }
27326
27327         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27328                 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
27329         }
27330
27331         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
27332                 int eps_offset = 0;
27333
27334                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27335                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27336                                 if (pi->pubpi.radiorev == 3) {
27337                                         eps_offset = -2;
27338                                 } else if (pi->pubpi.radiorev == 5) {
27339                                         eps_offset = 3;
27340                                 } else {
27341                                         eps_offset = -1;
27342                                 }
27343                         } else {
27344                                 eps_offset = 2;
27345                         }
27346
27347                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27348                                 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
27349                                 phy_b10 = 0;
27350                                 if ((pi->pubpi.radiorev == 3) ||
27351                                     (pi->pubpi.radiorev == 4) ||
27352                                     (pi->pubpi.radiorev == 6)) {
27353                                         phy_b12 =
27354                                             -
27355                                             (nphy_papd_padgain_dlt_2g_2057rev3n4
27356                                              [phy_b8]
27357                                              + 1) / 2;
27358                                         phy_b10 = -1;
27359                                 } else if (pi->pubpi.radiorev == 5) {
27360                                         phy_b12 =
27361                                             -(nphy_papd_padgain_dlt_2g_2057rev5
27362                                               [phy_b8]
27363                                               + 1) / 2;
27364                                 } else if ((pi->pubpi.radiorev == 7) ||
27365                                            (pi->pubpi.radiorev == 8)) {
27366                                         phy_b12 =
27367                                             -(nphy_papd_padgain_dlt_2g_2057rev7
27368                                               [phy_b8]
27369                                               + 1) / 2;
27370                                 }
27371                         } else {
27372                                 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
27373                                 if ((pi->pubpi.radiorev == 3) ||
27374                                     (pi->pubpi.radiorev == 4) ||
27375                                     (pi->pubpi.radiorev == 6)) {
27376                                         phy_b11 =
27377                                             -(nphy_papd_pgagain_dlt_5g_2057
27378                                               [phy_b7]
27379                                               + 1) / 2;
27380                                 } else if ((pi->pubpi.radiorev == 7)
27381                                            || (pi->pubpi.radiorev == 8)) {
27382                                         phy_b11 =
27383                                             -(nphy_papd_pgagain_dlt_5g_2057rev7
27384                                               [phy_b7]
27385                                               + 1) / 2;
27386                                 }
27387
27388                                 phy_b10 = -9;
27389                         }
27390
27391                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27392                                 phy_b6 =
27393                                     -60 + 27 + eps_offset + phy_b12 + phy_b10;
27394                         } else {
27395                                 phy_b6 =
27396                                     -60 + 27 + eps_offset + phy_b11 + phy_b10;
27397                         }
27398
27399                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
27400                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
27401
27402                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
27403                 } else {
27404                         if (NREV_LT(pi->pubpi.phy_rev, 5)) {
27405                                 eps_offset = 4;
27406                         } else {
27407                                 eps_offset = 2;
27408                         }
27409
27410                         phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
27411
27412                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27413                                 phy_b11 =
27414                                     -(nphy_papd_pga_gain_delta_ipa_2g[phy_b7] +
27415                                       1) / 2;
27416                                 phy_b10 = 0;
27417                         } else {
27418                                 phy_b11 =
27419                                     -(nphy_papd_pga_gain_delta_ipa_5g[phy_b7] +
27420                                       1) / 2;
27421                                 phy_b10 = -9;
27422                         }
27423
27424                         phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
27425
27426                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
27427                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
27428
27429                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
27430                 }
27431         }
27432
27433         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
27434                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
27435
27436         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
27437                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
27438
27439         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
27440                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
27441                             0x2a4, (0x1 << 13), (0) << 13);
27442
27443                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
27444                             0x2a4, (0x1 << 13), (0) << 13);
27445
27446         } else {
27447                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
27448                             0x2a4, (0x1 << 11), (0) << 11);
27449
27450                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
27451                             0x2a4, (0x1 << 11), (0) << 11);
27452
27453         }
27454         pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
27455
27456         write_phy_reg(pi, 0x01, phy_b9);
27457
27458         wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
27459
27460         wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
27461         if (phy_b4 == PHY_TPC_HW_OFF) {
27462                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
27463                                          (s8) (pi->nphy_txpwrindex[0].
27464                                                  index_internal), false);
27465                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
27466                                          (s8) (pi->nphy_txpwrindex[1].
27467                                                  index_internal), false);
27468         }
27469
27470         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27471
27472         if (!phy_b3) {
27473                 wlapi_enable_mac(pi->sh->physhim);
27474         }
27475 }
27476
27477 void wlc_phy_txpwr_fixpower_nphy(phy_info_t *pi)
27478 {
27479         uint core;
27480         u32 txgain;
27481         u16 rad_gain, dac_gain, bbmult, m1m2;
27482         u8 txpi[2], chan_freq_range;
27483         s32 rfpwr_offset;
27484
27485         if (pi->phyhang_avoid)
27486                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27487
27488         if (pi->sh->sromrev < 4) {
27489                 txpi[0] = txpi[1] = 72;
27490         } else {
27491
27492                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27493                 switch (chan_freq_range) {
27494                 case WL_CHAN_FREQ_RANGE_2G:
27495                         txpi[0] = pi->nphy_txpid2g[0];
27496                         txpi[1] = pi->nphy_txpid2g[1];
27497                         break;
27498                 case WL_CHAN_FREQ_RANGE_5GL:
27499                         txpi[0] = pi->nphy_txpid5gl[0];
27500                         txpi[1] = pi->nphy_txpid5gl[1];
27501                         break;
27502                 case WL_CHAN_FREQ_RANGE_5GM:
27503                         txpi[0] = pi->nphy_txpid5g[0];
27504                         txpi[1] = pi->nphy_txpid5g[1];
27505                         break;
27506                 case WL_CHAN_FREQ_RANGE_5GH:
27507                         txpi[0] = pi->nphy_txpid5gh[0];
27508                         txpi[1] = pi->nphy_txpid5gh[1];
27509                         break;
27510                 default:
27511                         txpi[0] = txpi[1] = 91;
27512                         break;
27513                 }
27514         }
27515
27516         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27517                 txpi[0] = txpi[1] = 30;
27518         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27519                 txpi[0] = txpi[1] = 40;
27520         }
27521
27522         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27523
27524                 if ((txpi[0] < 40) || (txpi[0] > 100) ||
27525                     (txpi[1] < 40) || (txpi[1] > 100))
27526                         txpi[0] = txpi[1] = 91;
27527         }
27528
27529         pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27530         pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27531         pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27532         pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27533
27534         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27535                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27536                         if (PHY_IPA(pi)) {
27537                                 u32 *tx_gaintbl =
27538                                     wlc_phy_get_ipa_gaintbl_nphy(pi);
27539                                 txgain = tx_gaintbl[txpi[core]];
27540                         } else {
27541                                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27542                                         if NREV_IS
27543                                                 (pi->pubpi.phy_rev, 3) {
27544                                                 txgain =
27545                                                     nphy_tpc_5GHz_txgain_rev3
27546                                                     [txpi[core]];
27547                                         } else if NREV_IS
27548                                                 (pi->pubpi.phy_rev, 4) {
27549                                                 txgain =
27550                                                     (pi->srom_fem5g.extpagain ==
27551                                                      3) ?
27552                                                     nphy_tpc_5GHz_txgain_HiPwrEPA
27553                                                     [txpi[core]] :
27554                                                     nphy_tpc_5GHz_txgain_rev4
27555                                                     [txpi[core]];
27556                                         } else {
27557                                                 txgain =
27558                                                     nphy_tpc_5GHz_txgain_rev5
27559                                                     [txpi[core]];
27560                                         }
27561                                 } else {
27562                                         if (NREV_GE(pi->pubpi.phy_rev, 5) &&
27563                                             (pi->srom_fem2g.extpagain == 3)) {
27564                                                 txgain =
27565                                                     nphy_tpc_txgain_HiPwrEPA
27566                                                     [txpi[core]];
27567                                         } else {
27568                                                 txgain =
27569                                                     nphy_tpc_txgain_rev3[txpi
27570                                                                          [core]];
27571                                         }
27572                                 }
27573                         }
27574                 } else {
27575                         txgain = nphy_tpc_txgain[txpi[core]];
27576                 }
27577
27578                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27579                         rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27580                 } else {
27581                         rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27582                 }
27583
27584                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27585                         dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27586                 } else {
27587                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27588                 }
27589                 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27590
27591                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27592                         mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27593                                          0xa5), (0x1 << 8), (0x1 << 8));
27594                 } else {
27595                         mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27596                 }
27597                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27598
27599                 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27600                                          &rad_gain);
27601
27602                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27603                 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27604                 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27605                 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27606
27607                 if (PHY_IPA(pi)) {
27608                         wlc_phy_table_read_nphy(pi,
27609                                                 (core ==
27610                                                  PHY_CORE_0 ?
27611                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
27612                                                  NPHY_TBL_ID_CORE2TXPWRCTL), 1,
27613                                                 576 + txpi[core], 32,
27614                                                 &rfpwr_offset);
27615
27616                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27617                                     0x29b, (0x1ff << 4),
27618                                     ((s16) rfpwr_offset) << 4);
27619
27620                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27621                                     0x29b, (0x1 << 2), (1) << 2);
27622
27623                 }
27624         }
27625
27626         and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
27627
27628         if (pi->phyhang_avoid)
27629                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27630 }
27631
27632 static void
27633 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
27634                                 u8 tmp_max_pwr, u8 rate_start,
27635                                 u8 rate_end)
27636 {
27637         u8 rate;
27638         u8 word_num, nibble_num;
27639         u8 tmp_nibble;
27640
27641         for (rate = rate_start; rate <= rate_end; rate++) {
27642                 word_num = (rate - rate_start) >> 2;
27643                 nibble_num = (rate - rate_start) & 0x3;
27644                 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
27645
27646                 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
27647         }
27648 }
27649
27650 static void
27651 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
27652                             u8 rate_start, u8 rate_end)
27653 {
27654         u8 rate;
27655
27656         for (rate = rate_start; rate <= rate_end; rate++) {
27657                 srom_max[rate] -= 2 * pwr_offset;
27658         }
27659 }
27660
27661 void
27662 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
27663                                 u8 rate_mcs_end, u8 rate_ofdm_start)
27664 {
27665         u8 rate1, rate2;
27666
27667         rate2 = rate_ofdm_start;
27668         for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
27669                 power[rate1] = power[rate2];
27670                 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
27671         }
27672         power[rate_mcs_end] = power[rate_mcs_end - 1];
27673 }
27674
27675 void
27676 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
27677                                 u8 rate_ofdm_end, u8 rate_mcs_start)
27678 {
27679         u8 rate1, rate2;
27680
27681         for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
27682              rate1 <= rate_ofdm_end; rate1++, rate2++) {
27683                 power[rate1] = power[rate2];
27684                 if (rate1 == rate_ofdm_start)
27685                         power[++rate1] = power[rate2];
27686         }
27687 }
27688
27689 void wlc_phy_txpwr_apply_nphy(phy_info_t *pi)
27690 {
27691         uint rate1, rate2, band_num;
27692         u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
27693         u8 tmp_max_pwr = 0;
27694         u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
27695         u8 *tx_srom_max_rate = NULL;
27696
27697         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP); band_num++) {
27698                 switch (band_num) {
27699                 case 0:
27700
27701                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
27702                                           pi->nphy_pwrctrl_info[1].max_pwr_2g);
27703
27704                         pwr_offsets1[0] = pi->cck2gpo;
27705                         wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
27706                                                         pwr_offsets1,
27707                                                         tmp_max_pwr,
27708                                                         TXP_FIRST_CCK,
27709                                                         TXP_LAST_CCK);
27710
27711                         pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
27712                         pwr_offsets1[1] =
27713                             (u16) (pi->ofdm2gpo >> 16) & 0xffff;
27714
27715                         pwr_offsets2 = pi->mcs2gpo;
27716
27717                         tmp_cddpo = pi->cdd2gpo;
27718                         tmp_stbcpo = pi->stbc2gpo;
27719                         tmp_bw40po = pi->bw402gpo;
27720
27721                         tx_srom_max_rate = pi->tx_srom_max_rate_2g;
27722                         break;
27723                 case 1:
27724
27725                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
27726                                           pi->nphy_pwrctrl_info[1].max_pwr_5gm);
27727
27728                         pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
27729                         pwr_offsets1[1] =
27730                             (u16) (pi->ofdm5gpo >> 16) & 0xffff;
27731
27732                         pwr_offsets2 = pi->mcs5gpo;
27733
27734                         tmp_cddpo = pi->cdd5gpo;
27735                         tmp_stbcpo = pi->stbc5gpo;
27736                         tmp_bw40po = pi->bw405gpo;
27737
27738                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
27739                         break;
27740                 case 2:
27741
27742                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
27743                                           pi->nphy_pwrctrl_info[1].max_pwr_5gl);
27744
27745                         pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
27746                         pwr_offsets1[1] =
27747                             (u16) (pi->ofdm5glpo >> 16) & 0xffff;
27748
27749                         pwr_offsets2 = pi->mcs5glpo;
27750
27751                         tmp_cddpo = pi->cdd5glpo;
27752                         tmp_stbcpo = pi->stbc5glpo;
27753                         tmp_bw40po = pi->bw405glpo;
27754
27755                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
27756                         break;
27757                 case 3:
27758
27759                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
27760                                           pi->nphy_pwrctrl_info[1].max_pwr_5gh);
27761
27762                         pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
27763                         pwr_offsets1[1] =
27764                             (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
27765
27766                         pwr_offsets2 = pi->mcs5ghpo;
27767
27768                         tmp_cddpo = pi->cdd5ghpo;
27769                         tmp_stbcpo = pi->stbc5ghpo;
27770                         tmp_bw40po = pi->bw405ghpo;
27771
27772                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
27773                         break;
27774                 }
27775
27776                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
27777                                                 tmp_max_pwr, TXP_FIRST_OFDM,
27778                                                 TXP_LAST_OFDM);
27779
27780                 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
27781                                                 TXP_FIRST_MCS_20_SISO,
27782                                                 TXP_LAST_MCS_20_SISO,
27783                                                 TXP_FIRST_OFDM);
27784
27785                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
27786                                                 tmp_max_pwr,
27787                                                 TXP_FIRST_MCS_20_CDD,
27788                                                 TXP_LAST_MCS_20_CDD);
27789
27790                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27791
27792                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
27793                                                     TXP_FIRST_MCS_20_CDD,
27794                                                     TXP_LAST_MCS_20_CDD);
27795                 }
27796
27797                 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
27798                                                 TXP_FIRST_OFDM_20_CDD,
27799                                                 TXP_LAST_OFDM_20_CDD,
27800                                                 TXP_FIRST_MCS_20_CDD);
27801
27802                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
27803                                                 tmp_max_pwr,
27804                                                 TXP_FIRST_MCS_20_STBC,
27805                                                 TXP_LAST_MCS_20_STBC);
27806
27807                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27808
27809                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
27810                                                     tmp_stbcpo,
27811                                                     TXP_FIRST_MCS_20_STBC,
27812                                                     TXP_LAST_MCS_20_STBC);
27813                 }
27814
27815                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27816                                                 &pwr_offsets2[2], tmp_max_pwr,
27817                                                 TXP_FIRST_MCS_20_SDM,
27818                                                 TXP_LAST_MCS_20_SDM);
27819
27820                 if (NPHY_IS_SROM_REINTERPRET) {
27821
27822                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27823                                                         &pwr_offsets2[4],
27824                                                         tmp_max_pwr,
27825                                                         TXP_FIRST_MCS_40_SISO,
27826                                                         TXP_LAST_MCS_40_SISO);
27827
27828                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
27829                                                         TXP_FIRST_OFDM_40_SISO,
27830                                                         TXP_LAST_OFDM_40_SISO,
27831                                                         TXP_FIRST_MCS_40_SISO);
27832
27833                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27834                                                         &pwr_offsets2[4],
27835                                                         tmp_max_pwr,
27836                                                         TXP_FIRST_MCS_40_CDD,
27837                                                         TXP_LAST_MCS_40_CDD);
27838
27839                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
27840                                                     TXP_FIRST_MCS_40_CDD,
27841                                                     TXP_LAST_MCS_40_CDD);
27842
27843                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
27844                                                         TXP_FIRST_OFDM_40_CDD,
27845                                                         TXP_LAST_OFDM_40_CDD,
27846                                                         TXP_FIRST_MCS_40_CDD);
27847
27848                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27849                                                         &pwr_offsets2[4],
27850                                                         tmp_max_pwr,
27851                                                         TXP_FIRST_MCS_40_STBC,
27852                                                         TXP_LAST_MCS_40_STBC);
27853
27854                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
27855                                                     tmp_stbcpo,
27856                                                     TXP_FIRST_MCS_40_STBC,
27857                                                     TXP_LAST_MCS_40_STBC);
27858
27859                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27860                                                         &pwr_offsets2[6],
27861                                                         tmp_max_pwr,
27862                                                         TXP_FIRST_MCS_40_SDM,
27863                                                         TXP_LAST_MCS_40_SDM);
27864                 } else {
27865
27866                         for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
27867                              TXP_FIRST_OFDM; rate1 <= TXP_LAST_MCS_40_SDM;
27868                              rate1++, rate2++)
27869                                 tx_srom_max_rate[rate1] =
27870                                     tx_srom_max_rate[rate2];
27871                 }
27872
27873                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27874                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
27875                                                     tmp_bw40po,
27876                                                     TXP_FIRST_OFDM_40_SISO,
27877                                                     TXP_LAST_MCS_40_SDM);
27878                 }
27879
27880                 tx_srom_max_rate[TXP_MCS_32] =
27881                     tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
27882         }
27883
27884         return;
27885 }
27886
27887 static void wlc_phy_txpwr_srom_read_ppr_nphy(phy_info_t *pi)
27888 {
27889         u16 bw40po, cddpo, stbcpo, bwduppo;
27890         uint band_num;
27891
27892         if (pi->sh->sromrev >= 9) {
27893
27894                 return;
27895         }
27896
27897         bw40po = (u16) PHY_GETINTVAR(pi, "bw40po");
27898         pi->bw402gpo = bw40po & 0xf;
27899         pi->bw405gpo = (bw40po & 0xf0) >> 4;
27900         pi->bw405glpo = (bw40po & 0xf00) >> 8;
27901         pi->bw405ghpo = (bw40po & 0xf000) >> 12;
27902
27903         cddpo = (u16) PHY_GETINTVAR(pi, "cddpo");
27904         pi->cdd2gpo = cddpo & 0xf;
27905         pi->cdd5gpo = (cddpo & 0xf0) >> 4;
27906         pi->cdd5glpo = (cddpo & 0xf00) >> 8;
27907         pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
27908
27909         stbcpo = (u16) PHY_GETINTVAR(pi, "stbcpo");
27910         pi->stbc2gpo = stbcpo & 0xf;
27911         pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
27912         pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
27913         pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
27914
27915         bwduppo = (u16) PHY_GETINTVAR(pi, "bwduppo");
27916         pi->bwdup2gpo = bwduppo & 0xf;
27917         pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
27918         pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
27919         pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
27920
27921         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP); band_num++) {
27922                 switch (band_num) {
27923                 case 0:
27924
27925                         pi->nphy_txpid2g[PHY_CORE_0] =
27926                             (u8) PHY_GETINTVAR(pi, "txpid2ga0");
27927                         pi->nphy_txpid2g[PHY_CORE_1] =
27928                             (u8) PHY_GETINTVAR(pi, "txpid2ga1");
27929                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
27930                             (s8) PHY_GETINTVAR(pi, "maxp2ga0");
27931                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
27932                             (s8) PHY_GETINTVAR(pi, "maxp2ga1");
27933                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
27934                             (s16) PHY_GETINTVAR(pi, "pa2gw0a0");
27935                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
27936                             (s16) PHY_GETINTVAR(pi, "pa2gw0a1");
27937                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
27938                             (s16) PHY_GETINTVAR(pi, "pa2gw1a0");
27939                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
27940                             (s16) PHY_GETINTVAR(pi, "pa2gw1a1");
27941                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
27942                             (s16) PHY_GETINTVAR(pi, "pa2gw2a0");
27943                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
27944                             (s16) PHY_GETINTVAR(pi, "pa2gw2a1");
27945                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
27946                             (s8) PHY_GETINTVAR(pi, "itt2ga0");
27947                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
27948                             (s8) PHY_GETINTVAR(pi, "itt2ga1");
27949
27950                         pi->cck2gpo = (u16) PHY_GETINTVAR(pi, "cck2gpo");
27951
27952                         pi->ofdm2gpo = (u32) PHY_GETINTVAR(pi, "ofdm2gpo");
27953
27954                         pi->mcs2gpo[0] = (u16) PHY_GETINTVAR(pi, "mcs2gpo0");
27955                         pi->mcs2gpo[1] = (u16) PHY_GETINTVAR(pi, "mcs2gpo1");
27956                         pi->mcs2gpo[2] = (u16) PHY_GETINTVAR(pi, "mcs2gpo2");
27957                         pi->mcs2gpo[3] = (u16) PHY_GETINTVAR(pi, "mcs2gpo3");
27958                         pi->mcs2gpo[4] = (u16) PHY_GETINTVAR(pi, "mcs2gpo4");
27959                         pi->mcs2gpo[5] = (u16) PHY_GETINTVAR(pi, "mcs2gpo5");
27960                         pi->mcs2gpo[6] = (u16) PHY_GETINTVAR(pi, "mcs2gpo6");
27961                         pi->mcs2gpo[7] = (u16) PHY_GETINTVAR(pi, "mcs2gpo7");
27962                         break;
27963                 case 1:
27964
27965                         pi->nphy_txpid5g[PHY_CORE_0] =
27966                             (u8) PHY_GETINTVAR(pi, "txpid5ga0");
27967                         pi->nphy_txpid5g[PHY_CORE_1] =
27968                             (u8) PHY_GETINTVAR(pi, "txpid5ga1");
27969                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
27970                             (s8) PHY_GETINTVAR(pi, "maxp5ga0");
27971                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
27972                             (s8) PHY_GETINTVAR(pi, "maxp5ga1");
27973                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
27974                             (s16) PHY_GETINTVAR(pi, "pa5gw0a0");
27975                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
27976                             (s16) PHY_GETINTVAR(pi, "pa5gw0a1");
27977                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
27978                             (s16) PHY_GETINTVAR(pi, "pa5gw1a0");
27979                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
27980                             (s16) PHY_GETINTVAR(pi, "pa5gw1a1");
27981                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
27982                             (s16) PHY_GETINTVAR(pi, "pa5gw2a0");
27983                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
27984                             (s16) PHY_GETINTVAR(pi, "pa5gw2a1");
27985                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
27986                             (s8) PHY_GETINTVAR(pi, "itt5ga0");
27987                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
27988                             (s8) PHY_GETINTVAR(pi, "itt5ga1");
27989
27990                         pi->ofdm5gpo = (u32) PHY_GETINTVAR(pi, "ofdm5gpo");
27991
27992                         pi->mcs5gpo[0] = (u16) PHY_GETINTVAR(pi, "mcs5gpo0");
27993                         pi->mcs5gpo[1] = (u16) PHY_GETINTVAR(pi, "mcs5gpo1");
27994                         pi->mcs5gpo[2] = (u16) PHY_GETINTVAR(pi, "mcs5gpo2");
27995                         pi->mcs5gpo[3] = (u16) PHY_GETINTVAR(pi, "mcs5gpo3");
27996                         pi->mcs5gpo[4] = (u16) PHY_GETINTVAR(pi, "mcs5gpo4");
27997                         pi->mcs5gpo[5] = (u16) PHY_GETINTVAR(pi, "mcs5gpo5");
27998                         pi->mcs5gpo[6] = (u16) PHY_GETINTVAR(pi, "mcs5gpo6");
27999                         pi->mcs5gpo[7] = (u16) PHY_GETINTVAR(pi, "mcs5gpo7");
28000                         break;
28001                 case 2:
28002
28003                         pi->nphy_txpid5gl[0] =
28004                             (u8) PHY_GETINTVAR(pi, "txpid5gla0");
28005                         pi->nphy_txpid5gl[1] =
28006                             (u8) PHY_GETINTVAR(pi, "txpid5gla1");
28007                         pi->nphy_pwrctrl_info[0].max_pwr_5gl =
28008                             (s8) PHY_GETINTVAR(pi, "maxp5gla0");
28009                         pi->nphy_pwrctrl_info[1].max_pwr_5gl =
28010                             (s8) PHY_GETINTVAR(pi, "maxp5gla1");
28011                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
28012                             (s16) PHY_GETINTVAR(pi, "pa5glw0a0");
28013                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
28014                             (s16) PHY_GETINTVAR(pi, "pa5glw0a1");
28015                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
28016                             (s16) PHY_GETINTVAR(pi, "pa5glw1a0");
28017                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
28018                             (s16) PHY_GETINTVAR(pi, "pa5glw1a1");
28019                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
28020                             (s16) PHY_GETINTVAR(pi, "pa5glw2a0");
28021                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
28022                             (s16) PHY_GETINTVAR(pi, "pa5glw2a1");
28023                         pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
28024                         pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
28025
28026                         pi->ofdm5glpo = (u32) PHY_GETINTVAR(pi, "ofdm5glpo");
28027
28028                         pi->mcs5glpo[0] =
28029                             (u16) PHY_GETINTVAR(pi, "mcs5glpo0");
28030                         pi->mcs5glpo[1] =
28031                             (u16) PHY_GETINTVAR(pi, "mcs5glpo1");
28032                         pi->mcs5glpo[2] =
28033                             (u16) PHY_GETINTVAR(pi, "mcs5glpo2");
28034                         pi->mcs5glpo[3] =
28035                             (u16) PHY_GETINTVAR(pi, "mcs5glpo3");
28036                         pi->mcs5glpo[4] =
28037                             (u16) PHY_GETINTVAR(pi, "mcs5glpo4");
28038                         pi->mcs5glpo[5] =
28039                             (u16) PHY_GETINTVAR(pi, "mcs5glpo5");
28040                         pi->mcs5glpo[6] =
28041                             (u16) PHY_GETINTVAR(pi, "mcs5glpo6");
28042                         pi->mcs5glpo[7] =
28043                             (u16) PHY_GETINTVAR(pi, "mcs5glpo7");
28044                         break;
28045                 case 3:
28046
28047                         pi->nphy_txpid5gh[0] =
28048                             (u8) PHY_GETINTVAR(pi, "txpid5gha0");
28049                         pi->nphy_txpid5gh[1] =
28050                             (u8) PHY_GETINTVAR(pi, "txpid5gha1");
28051                         pi->nphy_pwrctrl_info[0].max_pwr_5gh =
28052                             (s8) PHY_GETINTVAR(pi, "maxp5gha0");
28053                         pi->nphy_pwrctrl_info[1].max_pwr_5gh =
28054                             (s8) PHY_GETINTVAR(pi, "maxp5gha1");
28055                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
28056                             (s16) PHY_GETINTVAR(pi, "pa5ghw0a0");
28057                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
28058                             (s16) PHY_GETINTVAR(pi, "pa5ghw0a1");
28059                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
28060                             (s16) PHY_GETINTVAR(pi, "pa5ghw1a0");
28061                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
28062                             (s16) PHY_GETINTVAR(pi, "pa5ghw1a1");
28063                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
28064                             (s16) PHY_GETINTVAR(pi, "pa5ghw2a0");
28065                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
28066                             (s16) PHY_GETINTVAR(pi, "pa5ghw2a1");
28067                         pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
28068                         pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
28069
28070                         pi->ofdm5ghpo = (u32) PHY_GETINTVAR(pi, "ofdm5ghpo");
28071
28072                         pi->mcs5ghpo[0] =
28073                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo0");
28074                         pi->mcs5ghpo[1] =
28075                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo1");
28076                         pi->mcs5ghpo[2] =
28077                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo2");
28078                         pi->mcs5ghpo[3] =
28079                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo3");
28080                         pi->mcs5ghpo[4] =
28081                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo4");
28082                         pi->mcs5ghpo[5] =
28083                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo5");
28084                         pi->mcs5ghpo[6] =
28085                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo6");
28086                         pi->mcs5ghpo[7] =
28087                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo7");
28088                         break;
28089                 }
28090         }
28091
28092         wlc_phy_txpwr_apply_nphy(pi);
28093 }
28094
28095 static bool wlc_phy_txpwr_srom_read_nphy(phy_info_t *pi)
28096 {
28097
28098         pi->antswitch = (u8) PHY_GETINTVAR(pi, "antswitch");
28099         pi->aa2g = (u8) PHY_GETINTVAR(pi, "aa2g");
28100         pi->aa5g = (u8) PHY_GETINTVAR(pi, "aa5g");
28101
28102         pi->srom_fem2g.tssipos = (u8) PHY_GETINTVAR(pi, "tssipos2g");
28103         pi->srom_fem2g.extpagain = (u8) PHY_GETINTVAR(pi, "extpagain2g");
28104         pi->srom_fem2g.pdetrange = (u8) PHY_GETINTVAR(pi, "pdetrange2g");
28105         pi->srom_fem2g.triso = (u8) PHY_GETINTVAR(pi, "triso2g");
28106         pi->srom_fem2g.antswctrllut = (u8) PHY_GETINTVAR(pi, "antswctl2g");
28107
28108         pi->srom_fem5g.tssipos = (u8) PHY_GETINTVAR(pi, "tssipos5g");
28109         pi->srom_fem5g.extpagain = (u8) PHY_GETINTVAR(pi, "extpagain5g");
28110         pi->srom_fem5g.pdetrange = (u8) PHY_GETINTVAR(pi, "pdetrange5g");
28111         pi->srom_fem5g.triso = (u8) PHY_GETINTVAR(pi, "triso5g");
28112         if (PHY_GETVAR(pi, "antswctl5g")) {
28113
28114                 pi->srom_fem5g.antswctrllut =
28115                     (u8) PHY_GETINTVAR(pi, "antswctl5g");
28116         } else {
28117
28118                 pi->srom_fem5g.antswctrllut =
28119                     (u8) PHY_GETINTVAR(pi, "antswctl2g");
28120         }
28121
28122         wlc_phy_txpower_ipa_upd(pi);
28123
28124         pi->phy_txcore_disable_temp = (s16) PHY_GETINTVAR(pi, "tempthresh");
28125         if (pi->phy_txcore_disable_temp == 0) {
28126                 pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
28127         }
28128
28129         pi->phy_tempsense_offset = (s8) PHY_GETINTVAR(pi, "tempoffset");
28130         if (pi->phy_tempsense_offset != 0) {
28131                 if (pi->phy_tempsense_offset >
28132                     (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET)) {
28133                         pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
28134                 } else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
28135                                                     NPHY_SROM_MINTEMPOFFSET)) {
28136                         pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
28137                 } else {
28138                         pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
28139                 }
28140         }
28141
28142         pi->phy_txcore_enable_temp =
28143             pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
28144
28145         pi->phycal_tempdelta = (u8) PHY_GETINTVAR(pi, "phycal_tempdelta");
28146         if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA) {
28147                 pi->phycal_tempdelta = 0;
28148         }
28149
28150         wlc_phy_txpwr_srom_read_ppr_nphy(pi);
28151
28152         return true;
28153 }
28154
28155 void wlc_phy_txpower_recalc_target_nphy(phy_info_t *pi)
28156 {
28157         u8 tx_pwr_ctrl_state;
28158         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28159         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28160
28161         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28162
28163         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28164                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28165                 (void)R_REG(&pi->regs->maccontrol);
28166                 udelay(1);
28167         }
28168
28169         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28170
28171         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28172                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28173 }
28174
28175 static void wlc_phy_txpwrctrl_coeff_setup_nphy(phy_info_t *pi)
28176 {
28177         u32 idx;
28178         u16 iqloCalbuf[7];
28179         u32 iqcomp, locomp, curr_locomp;
28180         s8 locomp_i, locomp_q;
28181         s8 curr_locomp_i, curr_locomp_q;
28182         u32 tbl_id, tbl_len, tbl_offset;
28183         u32 regval[128];
28184
28185         if (pi->phyhang_avoid)
28186                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28187
28188         wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
28189
28190         tbl_len = 128;
28191         tbl_offset = 320;
28192         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
28193              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
28194                 iqcomp =
28195                     (tbl_id ==
28196                      26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
28197                     (iqloCalbuf[1] & 0x3ff)
28198                     : (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
28199                     (iqloCalbuf[3] & 0x3ff);
28200
28201                 for (idx = 0; idx < tbl_len; idx++) {
28202                         regval[idx] = iqcomp;
28203                 }
28204                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
28205                                          regval);
28206         }
28207
28208         tbl_offset = 448;
28209         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
28210              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
28211
28212                 locomp =
28213                     (u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
28214                 locomp_i = (s8) ((locomp >> 8) & 0xff);
28215                 locomp_q = (s8) ((locomp) & 0xff);
28216                 for (idx = 0; idx < tbl_len; idx++) {
28217                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28218                                 curr_locomp_i = locomp_i;
28219                                 curr_locomp_q = locomp_q;
28220                         } else {
28221                                 curr_locomp_i = (s8) ((locomp_i *
28222                                                          nphy_tpc_loscale[idx] +
28223                                                          128) >> 8);
28224                                 curr_locomp_q =
28225                                     (s8) ((locomp_q * nphy_tpc_loscale[idx] +
28226                                              128) >> 8);
28227                         }
28228                         curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
28229                         curr_locomp |= (u32) (curr_locomp_q & 0xff);
28230                         regval[idx] = curr_locomp;
28231                 }
28232                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
28233                                          regval);
28234         }
28235
28236         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
28237
28238                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
28239                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
28240         }
28241
28242         if (pi->phyhang_avoid)
28243                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28244 }
28245
28246 static void wlc_phy_ipa_internal_tssi_setup_nphy(phy_info_t *pi)
28247 {
28248         u8 core;
28249
28250         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28251                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28252                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
28253                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28254                                                  TX_SSI_MASTER, 0x5);
28255                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28256                                                  TX_SSI_MUX, 0xe);
28257
28258                                 if (pi->pubpi.radiorev != 5)
28259                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
28260                                                          core, TSSIA, 0);
28261
28262                                 if (!NREV_IS(pi->pubpi.phy_rev, 7)) {
28263
28264                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
28265                                                          core, TSSIG, 0x1);
28266                                 } else {
28267
28268                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
28269                                                          core, TSSIG, 0x31);
28270                                 }
28271                         } else {
28272                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28273                                                  TX_SSI_MASTER, 0x9);
28274                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28275                                                  TX_SSI_MUX, 0xc);
28276                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28277                                                  TSSIG, 0);
28278
28279                                 if (pi->pubpi.radiorev != 5) {
28280                                         if (!NREV_IS(pi->pubpi.phy_rev, 7)) {
28281
28282                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28283                                                                  TX, core,
28284                                                                  TSSIA, 0x1);
28285                                         } else {
28286
28287                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28288                                                                  TX, core,
28289                                                                  TSSIA, 0x31);
28290                                         }
28291                                 }
28292                         }
28293                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
28294                                          0);
28295                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
28296                                          0);
28297                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
28298                                          0x3);
28299                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
28300                                          0x0);
28301                 }
28302         } else {
28303                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
28304                                 (CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
28305                                 0x80);
28306                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
28307                 WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
28308
28309                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28310                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
28311                                          0x0);
28312                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
28313                                          0x0);
28314                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
28315                                          0x3);
28316                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
28317                                          0x0);
28318                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
28319                                          0x8);
28320                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
28321                                          0x0);
28322                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
28323                                          0x0);
28324
28325                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
28326                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28327                                                  TX_SSI_MASTER, 0x5);
28328
28329                                 if (pi->pubpi.radiorev != 5)
28330                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
28331                                                          core, TSSIA, 0x0);
28332                                 if (NREV_GE(pi->pubpi.phy_rev, 5)) {
28333
28334                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
28335                                                          core, TSSIG, 0x31);
28336                                 } else {
28337                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
28338                                                          core, TSSIG, 0x11);
28339                                 }
28340                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28341                                                  TX_SSI_MUX, 0xe);
28342                         } else {
28343                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28344                                                  TX_SSI_MASTER, 0x9);
28345                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28346                                                  TSSIA, 0x31);
28347                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28348                                                  TSSIG, 0x0);
28349                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28350                                                  TX_SSI_MUX, 0xc);
28351                         }
28352                 }
28353         }
28354 }
28355
28356 static void wlc_phy_txpwrctrl_idle_tssi_nphy(phy_info_t *pi)
28357 {
28358         s32 rssi_buf[4];
28359         s32 int_val;
28360
28361         if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
28362
28363                 return;
28364
28365         if (PHY_IPA(pi)) {
28366                 wlc_phy_ipa_internal_tssi_setup_nphy(pi);
28367         }
28368
28369         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28370                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
28371                                                   0, 0x3, 0,
28372                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
28373         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28374                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
28375         }
28376
28377         wlc_phy_stopplayback_nphy(pi);
28378
28379         wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
28380
28381         udelay(20);
28382         int_val =
28383             wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
28384                                    1);
28385         wlc_phy_stopplayback_nphy(pi);
28386         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
28387
28388         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28389                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
28390                                                   0, 0x3, 1,
28391                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
28392         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28393                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
28394         }
28395
28396         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28397
28398                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
28399                     (u8) ((int_val >> 24) & 0xff);
28400                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
28401                     (u8) ((int_val >> 24) & 0xff);
28402
28403                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
28404                     (u8) ((int_val >> 8) & 0xff);
28405                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
28406                     (u8) ((int_val >> 8) & 0xff);
28407         } else {
28408                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
28409                     (u8) ((int_val >> 24) & 0xff);
28410
28411                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
28412                     (u8) ((int_val >> 8) & 0xff);
28413
28414                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
28415                     (u8) ((int_val >> 16) & 0xff);
28416                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
28417                     (u8) ((int_val) & 0xff);
28418         }
28419
28420 }
28421
28422 static void wlc_phy_txpwrctrl_pwr_setup_nphy(phy_info_t *pi)
28423 {
28424         u32 idx;
28425         s16 a1[2], b0[2], b1[2];
28426         s8 target_pwr_qtrdbm[2];
28427         s32 num, den, pwr_est;
28428         u8 chan_freq_range;
28429         u8 idle_tssi[2];
28430         u32 tbl_id, tbl_len, tbl_offset;
28431         u32 regval[64];
28432         u8 core;
28433
28434         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28435                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28436                 (void)R_REG(&pi->regs->maccontrol);
28437                 udelay(1);
28438         }
28439
28440         if (pi->phyhang_avoid)
28441                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28442
28443         or_phy_reg(pi, 0x122, (0x1 << 0));
28444
28445         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28446                 and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
28447         } else {
28448
28449                 or_phy_reg(pi, 0x1e7, (0x1 << 15));
28450         }
28451
28452         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28453                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28454
28455         if (pi->sh->sromrev < 4) {
28456                 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
28457                 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
28458                 target_pwr_qtrdbm[0] = 13 * 4;
28459                 target_pwr_qtrdbm[1] = 13 * 4;
28460                 a1[0] = -424;
28461                 a1[1] = -424;
28462                 b0[0] = 5612;
28463                 b0[1] = 5612;
28464                 b1[1] = -1393;
28465                 b1[0] = -1393;
28466         } else {
28467
28468                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
28469                 switch (chan_freq_range) {
28470                 case WL_CHAN_FREQ_RANGE_2G:
28471                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
28472                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
28473                         target_pwr_qtrdbm[0] =
28474                             pi->nphy_pwrctrl_info[0].max_pwr_2g;
28475                         target_pwr_qtrdbm[1] =
28476                             pi->nphy_pwrctrl_info[1].max_pwr_2g;
28477                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
28478                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
28479                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
28480                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
28481                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
28482                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
28483                         break;
28484                 case WL_CHAN_FREQ_RANGE_5GL:
28485                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
28486                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
28487                         target_pwr_qtrdbm[0] =
28488                             pi->nphy_pwrctrl_info[0].max_pwr_5gl;
28489                         target_pwr_qtrdbm[1] =
28490                             pi->nphy_pwrctrl_info[1].max_pwr_5gl;
28491                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
28492                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
28493                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
28494                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
28495                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
28496                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
28497                         break;
28498                 case WL_CHAN_FREQ_RANGE_5GM:
28499                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
28500                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
28501                         target_pwr_qtrdbm[0] =
28502                             pi->nphy_pwrctrl_info[0].max_pwr_5gm;
28503                         target_pwr_qtrdbm[1] =
28504                             pi->nphy_pwrctrl_info[1].max_pwr_5gm;
28505                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
28506                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
28507                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
28508                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
28509                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
28510                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
28511                         break;
28512                 case WL_CHAN_FREQ_RANGE_5GH:
28513                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
28514                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
28515                         target_pwr_qtrdbm[0] =
28516                             pi->nphy_pwrctrl_info[0].max_pwr_5gh;
28517                         target_pwr_qtrdbm[1] =
28518                             pi->nphy_pwrctrl_info[1].max_pwr_5gh;
28519                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
28520                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
28521                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
28522                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
28523                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
28524                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
28525                         break;
28526                 default:
28527                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
28528                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
28529                         target_pwr_qtrdbm[0] = 13 * 4;
28530                         target_pwr_qtrdbm[1] = 13 * 4;
28531                         a1[0] = -424;
28532                         a1[1] = -424;
28533                         b0[0] = 5612;
28534                         b0[1] = 5612;
28535                         b1[1] = -1393;
28536                         b1[0] = -1393;
28537                         break;
28538                 }
28539         }
28540
28541         target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
28542         target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
28543
28544         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28545                 if (pi->srom_fem2g.tssipos) {
28546                         or_phy_reg(pi, 0x1e9, (0x1 << 14));
28547                 }
28548
28549                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28550                         for (core = 0; core <= 1; core++) {
28551                                 if (PHY_IPA(pi)) {
28552
28553                                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
28554                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28555                                                                  TX, core,
28556                                                                  TX_SSI_MUX,
28557                                                                  0xe);
28558                                         } else {
28559                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28560                                                                  TX, core,
28561                                                                  TX_SSI_MUX,
28562                                                                  0xc);
28563                                         }
28564                                 } else {
28565                                 }
28566                         }
28567                 } else {
28568                         if (PHY_IPA(pi)) {
28569
28570                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
28571                                                 RADIO_2056_TX0,
28572                                                 (CHSPEC_IS5G
28573                                                  (pi->
28574                                                   radio_chanspec)) ? 0xc : 0xe);
28575                                 write_radio_reg(pi,
28576                                                 RADIO_2056_TX_TX_SSI_MUX |
28577                                                 RADIO_2056_TX1,
28578                                                 (CHSPEC_IS5G
28579                                                  (pi->
28580                                                   radio_chanspec)) ? 0xc : 0xe);
28581                         } else {
28582
28583                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
28584                                                 RADIO_2056_TX0, 0x11);
28585                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
28586                                                 RADIO_2056_TX1, 0x11);
28587                         }
28588                 }
28589         }
28590
28591         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28592                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28593                 (void)R_REG(&pi->regs->maccontrol);
28594                 udelay(1);
28595         }
28596
28597         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28598                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
28599                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
28600         } else {
28601                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
28602                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
28603         }
28604
28605         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28606                 mod_phy_reg(pi, 0x222, (0xff << 0),
28607                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
28608         } else if (NREV_GT(pi->pubpi.phy_rev, 1)) {
28609                 mod_phy_reg(pi, 0x222, (0xff << 0),
28610                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
28611         }
28612
28613         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28614                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28615
28616         write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
28617
28618         write_phy_reg(pi, 0x1e9,
28619                       (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
28620
28621         write_phy_reg(pi, 0x1ea,
28622                       (target_pwr_qtrdbm[0] << 0) |
28623                       (target_pwr_qtrdbm[1] << 8));
28624
28625         tbl_len = 64;
28626         tbl_offset = 0;
28627         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
28628              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
28629
28630                 for (idx = 0; idx < tbl_len; idx++) {
28631                         num =
28632                             8 * (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
28633                         den = 32768 + a1[tbl_id - 26] * idx;
28634                         pwr_est = max(((4 * num + den / 2) / den), -8);
28635                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
28636                                 if (idx <=
28637                                     (uint) (31 - idle_tssi[tbl_id - 26] + 1))
28638                                         pwr_est =
28639                                             max(pwr_est,
28640                                                 target_pwr_qtrdbm[tbl_id - 26] +
28641                                                 1);
28642                         }
28643                         regval[idx] = (u32) pwr_est;
28644                 }
28645                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
28646                                          regval);
28647         }
28648
28649         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28650         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
28651                                  pi->adj_pwr_tbl_nphy);
28652         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
28653                                  pi->adj_pwr_tbl_nphy);
28654
28655         if (pi->phyhang_avoid)
28656                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28657 }
28658
28659 static bool wlc_phy_txpwr_ison_nphy(phy_info_t *pi)
28660 {
28661         return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28662                                              (0x1 << 14) | (0x1 << 13));
28663 }
28664
28665 static u8 wlc_phy_txpwr_idx_cur_get_nphy(phy_info_t *pi, u8 core)
28666 {
28667         u16 tmp;
28668         tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
28669
28670         tmp = (tmp & (0x7f << 8)) >> 8;
28671         return (u8) tmp;
28672 }
28673
28674 static void
28675 wlc_phy_txpwr_idx_cur_set_nphy(phy_info_t *pi, u8 idx0, u8 idx1)
28676 {
28677         mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
28678
28679         if (NREV_GT(pi->pubpi.phy_rev, 1))
28680                 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
28681 }
28682
28683 u16 wlc_phy_txpwr_idx_get_nphy(phy_info_t *pi)
28684 {
28685         u16 tmp;
28686         u16 pwr_idx[2];
28687
28688         if (wlc_phy_txpwr_ison_nphy(pi)) {
28689                 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28690                 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28691
28692                 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28693         } else {
28694                 tmp =
28695                     ((pi->nphy_txpwrindex[PHY_CORE_0].
28696                       index_internal & 0xff) << 8) | (pi->
28697                                                       nphy_txpwrindex
28698                                                       [PHY_CORE_1].
28699                                                       index_internal & 0xff);
28700         }
28701
28702         return tmp;
28703 }
28704
28705 void wlc_phy_txpwr_papd_cal_nphy(phy_info_t *pi)
28706 {
28707         if (PHY_IPA(pi)
28708             && (pi->nphy_force_papd_cal
28709                 || (wlc_phy_txpwr_ison_nphy(pi)
28710                     &&
28711                     (((u32)
28712                       ABS(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28713                           pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28714                      || ((u32)
28715                          ABS(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28716                              pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4))))) {
28717                 wlc_phy_a4(pi, true);
28718         }
28719 }
28720
28721 void wlc_phy_txpwrctrl_enable_nphy(phy_info_t *pi, u8 ctrl_type)
28722 {
28723         u16 mask = 0, val = 0, ishw = 0;
28724         u8 ctr;
28725         uint core;
28726         u32 tbl_offset;
28727         u32 tbl_len;
28728         u16 regval[84];
28729
28730         if (pi->phyhang_avoid)
28731                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28732
28733         switch (ctrl_type) {
28734         case PHY_TPC_HW_OFF:
28735         case PHY_TPC_HW_ON:
28736                 pi->nphy_txpwrctrl = ctrl_type;
28737                 break;
28738         default:
28739                 break;
28740         }
28741
28742         if (ctrl_type == PHY_TPC_HW_OFF) {
28743                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28744
28745                         if (wlc_phy_txpwr_ison_nphy(pi)) {
28746                                 for (core = 0; core < pi->pubpi.phy_corenum;
28747                                      core++)
28748                                         pi->nphy_txpwr_idx[core] =
28749                                             wlc_phy_txpwr_idx_cur_get_nphy(pi,
28750                                                                            (u8)
28751                                                                            core);
28752                         }
28753
28754                 }
28755
28756                 tbl_len = 84;
28757                 tbl_offset = 64;
28758                 for (ctr = 0; ctr < tbl_len; ctr++) {
28759                         regval[ctr] = 0;
28760                 }
28761                 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28762                                          regval);
28763                 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28764                                          regval);
28765
28766                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28767
28768                         and_phy_reg(pi, 0x1e7,
28769                                     (u16) (~((0x1 << 15) |
28770                                                 (0x1 << 14) | (0x1 << 13))));
28771                 } else {
28772                         and_phy_reg(pi, 0x1e7,
28773                                     (u16) (~((0x1 << 14) | (0x1 << 13))));
28774                 }
28775
28776                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28777                         or_phy_reg(pi, 0x8f, (0x1 << 8));
28778                         or_phy_reg(pi, 0xa5, (0x1 << 8));
28779                 } else {
28780                         or_phy_reg(pi, 0xa5, (0x1 << 14));
28781                 }
28782
28783                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28784                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28785                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28786                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28787
28788                 if (NREV_LT(pi->pubpi.phy_rev, 2) && IS40MHZ(pi))
28789                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28790                                        MHF1_IQSWAP_WAR, WLC_BAND_ALL);
28791
28792         } else {
28793
28794                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28795                                          8, pi->adj_pwr_tbl_nphy);
28796                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28797                                          8, pi->adj_pwr_tbl_nphy);
28798
28799                 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28800                 mask = (0x1 << 14) | (0x1 << 13);
28801                 val = (ishw << 14) | (ishw << 13);
28802
28803                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28804                         mask |= (0x1 << 15);
28805                         val |= (ishw << 15);
28806                 }
28807
28808                 mod_phy_reg(pi, 0x1e7, mask, val);
28809
28810                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28811                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28812                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28813                                 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28814                         } else {
28815                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28816                                 if (NREV_GT(pi->pubpi.phy_rev, 1))
28817                                         mod_phy_reg(pi, 0x222,
28818                                                     (0xff << 0), 0x64);
28819                         }
28820                 }
28821
28822                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28823                         if ((pi->nphy_txpwr_idx[0] != 128)
28824                             && (pi->nphy_txpwr_idx[1] != 128)) {
28825                                 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28826                                                                pi->
28827                                                                nphy_txpwr_idx
28828                                                                [0],
28829                                                                pi->
28830                                                                nphy_txpwr_idx
28831                                                                [1]);
28832                         }
28833                 }
28834
28835                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28836                         and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28837                         and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28838                 } else {
28839                         and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28840                 }
28841
28842                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28843                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28844                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28845                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28846
28847                 if (NREV_LT(pi->pubpi.phy_rev, 2) && IS40MHZ(pi))
28848                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28849                                        0x0, WLC_BAND_ALL);
28850
28851                 if (PHY_IPA(pi)) {
28852                         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28853                                     0x29b, (0x1 << 2), (0) << 2);
28854
28855                         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28856                                     0x29b, (0x1 << 2), (0) << 2);
28857
28858                 }
28859
28860         }
28861
28862         if (pi->phyhang_avoid)
28863                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28864 }
28865
28866 void
28867 wlc_phy_txpwr_index_nphy(phy_info_t *pi, u8 core_mask, s8 txpwrindex,
28868                          bool restore_cals)
28869 {
28870         u8 core, txpwrctl_tbl;
28871         u16 tx_ind0, iq_ind0, lo_ind0;
28872         u16 m1m2;
28873         u32 txgain;
28874         u16 rad_gain, dac_gain;
28875         u8 bbmult;
28876         u32 iqcomp;
28877         u16 iqcomp_a, iqcomp_b;
28878         u32 locomp;
28879         u16 tmpval;
28880         u8 tx_pwr_ctrl_state;
28881         s32 rfpwr_offset;
28882         u16 regval[2];
28883
28884         if (pi->phyhang_avoid)
28885                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28886
28887         tx_ind0 = 192;
28888         iq_ind0 = 320;
28889         lo_ind0 = 448;
28890
28891         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28892
28893                 if ((core_mask & (1 << core)) == 0) {
28894                         continue;
28895                 }
28896
28897                 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28898
28899                 if (txpwrindex < 0) {
28900                         if (pi->nphy_txpwrindex[core].index < 0) {
28901
28902                                 continue;
28903                         }
28904
28905                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28906                                 mod_phy_reg(pi, 0x8f,
28907                                             (0x1 << 8),
28908                                             pi->nphy_txpwrindex[core].
28909                                             AfectrlOverride);
28910                                 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28911                                             pi->nphy_txpwrindex[core].
28912                                             AfectrlOverride);
28913                         } else {
28914                                 mod_phy_reg(pi, 0xa5,
28915                                             (0x1 << 14),
28916                                             pi->nphy_txpwrindex[core].
28917                                             AfectrlOverride);
28918                         }
28919
28920                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28921                                       0xaa : 0xab,
28922                                       pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28923
28924                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28925                                                  &pi->nphy_txpwrindex[core].
28926                                                  rad_gain);
28927
28928                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28929                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28930                         m1m2 |= ((core == PHY_CORE_0) ?
28931                                  (pi->nphy_txpwrindex[core].bbmult << 8) :
28932                                  (pi->nphy_txpwrindex[core].bbmult << 0));
28933                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28934
28935                         if (restore_cals) {
28936
28937                                 wlc_phy_table_write_nphy(pi, 15, 2,
28938                                                          (80 + 2 * core), 16,
28939                                                          (void *)&pi->
28940                                                          nphy_txpwrindex[core].
28941                                                          iqcomp_a);
28942
28943                                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28944                                                          16,
28945                                                          &pi->
28946                                                          nphy_txpwrindex[core].
28947                                                          locomp);
28948                                 wlc_phy_table_write_nphy(pi, 15, 1, (93 + core),
28949                                                          16,
28950                                                          (void *)&pi->
28951                                                          nphy_txpwrindex[core].
28952                                                          locomp);
28953                         }
28954
28955                         wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28956
28957                         pi->nphy_txpwrindex[core].index_internal =
28958                             pi->nphy_txpwrindex[core].index_internal_save;
28959                 } else {
28960
28961                         if (pi->nphy_txpwrindex[core].index < 0) {
28962
28963                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28964                                         mod_phy_reg(pi, 0x8f,
28965                                                     (0x1 << 8),
28966                                                     pi->nphy_txpwrindex[core].
28967                                                     AfectrlOverride);
28968                                         mod_phy_reg(pi, 0xa5, (0x1 << 8),
28969                                                     pi->nphy_txpwrindex[core].
28970                                                     AfectrlOverride);
28971                                 } else {
28972                                         pi->nphy_txpwrindex[core].
28973                                             AfectrlOverride =
28974                                             read_phy_reg(pi, 0xa5);
28975                                 }
28976
28977                                 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28978                                     read_phy_reg(pi,
28979                                                  (core ==
28980                                                   PHY_CORE_0) ? 0xaa : 0xab);
28981
28982                                 wlc_phy_table_read_nphy(pi, 7, 1,
28983                                                         (0x110 + core), 16,
28984                                                         &pi->
28985                                                         nphy_txpwrindex[core].
28986                                                         rad_gain);
28987
28988                                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28989                                                         &tmpval);
28990                                 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28991                                 tmpval &= 0xff;
28992                                 pi->nphy_txpwrindex[core].bbmult =
28993                                     (u8) tmpval;
28994
28995                                 wlc_phy_table_read_nphy(pi, 15, 2,
28996                                                         (80 + 2 * core), 16,
28997                                                         (void *)&pi->
28998                                                         nphy_txpwrindex[core].
28999                                                         iqcomp_a);
29000
29001                                 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
29002                                                         16,
29003                                                         (void *)&pi->
29004                                                         nphy_txpwrindex[core].
29005                                                         locomp);
29006
29007                                 pi->nphy_txpwrindex[core].index_internal_save =
29008                                     pi->nphy_txpwrindex[core].index_internal;
29009                         }
29010
29011                         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
29012                         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
29013
29014                         if (NREV_IS(pi->pubpi.phy_rev, 1))
29015                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
29016
29017                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
29018                                                 (tx_ind0 + txpwrindex), 32,
29019                                                 &txgain);
29020
29021                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
29022                                 rad_gain =
29023                                     (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
29024                         } else {
29025                                 rad_gain =
29026                                     (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
29027                         }
29028                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
29029                         bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
29030
29031                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
29032                                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
29033                                                  0xa5), (0x1 << 8), (0x1 << 8));
29034                         } else {
29035                                 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
29036                         }
29037                         write_phy_reg(pi, (core == PHY_CORE_0) ?
29038                                       0xaa : 0xab, dac_gain);
29039
29040                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
29041                                                  &rad_gain);
29042
29043                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
29044                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
29045                         m1m2 |=
29046                             ((core ==
29047                               PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
29048
29049                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
29050
29051                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
29052                                                 (iq_ind0 + txpwrindex), 32,
29053                                                 &iqcomp);
29054                         iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
29055                         iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
29056
29057                         if (restore_cals) {
29058                                 regval[0] = (u16) iqcomp_a;
29059                                 regval[1] = (u16) iqcomp_b;
29060                                 wlc_phy_table_write_nphy(pi, 15, 2,
29061                                                          (80 + 2 * core), 16,
29062                                                          regval);
29063                         }
29064
29065                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
29066                                                 (lo_ind0 + txpwrindex), 32,
29067                                                 &locomp);
29068                         if (restore_cals) {
29069                                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
29070                                                          16, &locomp);
29071                         }
29072
29073                         if (NREV_IS(pi->pubpi.phy_rev, 1))
29074                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
29075
29076                         if (PHY_IPA(pi)) {
29077                                 wlc_phy_table_read_nphy(pi,
29078                                                         (core ==
29079                                                          PHY_CORE_0 ?
29080                                                          NPHY_TBL_ID_CORE1TXPWRCTL
29081                                                          :
29082                                                          NPHY_TBL_ID_CORE2TXPWRCTL),
29083                                                         1, 576 + txpwrindex, 32,
29084                                                         &rfpwr_offset);
29085
29086                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
29087                                             0x29b, (0x1ff << 4),
29088                                             ((s16) rfpwr_offset) << 4);
29089
29090                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
29091                                             0x29b, (0x1 << 2), (1) << 2);
29092
29093                         }
29094
29095                         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
29096                 }
29097
29098                 pi->nphy_txpwrindex[core].index = txpwrindex;
29099         }
29100
29101         if (pi->phyhang_avoid)
29102                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
29103 }
29104
29105 void
29106 wlc_phy_txpower_sromlimit_get_nphy(phy_info_t *pi, uint chan, u8 *max_pwr,
29107                                    u8 txp_rate_idx)
29108 {
29109         u8 chan_freq_range;
29110
29111         chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
29112         switch (chan_freq_range) {
29113         case WL_CHAN_FREQ_RANGE_2G:
29114                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
29115                 break;
29116         case WL_CHAN_FREQ_RANGE_5GM:
29117                 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
29118                 break;
29119         case WL_CHAN_FREQ_RANGE_5GL:
29120                 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
29121                 break;
29122         case WL_CHAN_FREQ_RANGE_5GH:
29123                 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
29124                 break;
29125         default:
29126                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
29127                 break;
29128         }
29129
29130         return;
29131 }
29132
29133 void wlc_phy_stay_in_carriersearch_nphy(phy_info_t *pi, bool enable)
29134 {
29135         u16 clip_off[] = { 0xffff, 0xffff };
29136
29137         if (enable) {
29138                 if (pi->nphy_deaf_count == 0) {
29139                         pi->classifier_state =
29140                             wlc_phy_classifier_nphy(pi, 0, 0);
29141                         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
29142                         wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
29143                         wlc_phy_clip_det_nphy(pi, 1, clip_off);
29144                 }
29145
29146                 pi->nphy_deaf_count++;
29147
29148                 wlc_phy_resetcca_nphy(pi);
29149
29150         } else {
29151                 pi->nphy_deaf_count--;
29152
29153                 if (pi->nphy_deaf_count == 0) {
29154                         wlc_phy_classifier_nphy(pi, (0x7 << 0),
29155                                                 pi->classifier_state);
29156                         wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
29157                 }
29158         }
29159 }
29160
29161 void wlc_nphy_deaf_mode(phy_info_t *pi, bool mode)
29162 {
29163         wlapi_suspend_mac_and_wait(pi->sh->physhim);
29164
29165         if (mode) {
29166                 if (pi->nphy_deaf_count == 0)
29167                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
29168         } else {
29169                 if (pi->nphy_deaf_count > 0)
29170                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
29171         }
29172         wlapi_enable_mac(pi->sh->physhim);
29173 }