]> git.karo-electronics.de Git - mv-sheeva.git/blob - drivers/net/wireless/brcm80211/brcmsmac/phy/phy_n.c
brcm80211: removed duplicate defines
[mv-sheeva.git] / drivers / net / wireless / 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/delay.h>
19 #include <linux/cordic.h>
20
21 #include <brcm_hw_ids.h>
22 #include <aiutils.h>
23 #include <chipcommon.h>
24 #include <pmu.h>
25 #include <d11.h>
26 #include <phy_shim.h>
27 #include "phy_int.h"
28 #include "phy_hal.h"
29 #include "phy_radio.h"
30 #include "phyreg_n.h"
31 #include "phytbl_n.h"
32 #include "soc.h"
33
34 #define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name) \
35         read_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
36                        ((core == PHY_CORE_0) ? \
37                         radio_type##_##jspace##0 : \
38                         radio_type##_##jspace##1))
39
40 #define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value) \
41         write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
42                         ((core ==  PHY_CORE_0) ? \
43                          radio_type##_##jspace##0 : \
44                          radio_type##_##jspace##1), value)
45
46 #define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
47         write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value)
48
49 #define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name) \
50         read_radio_reg(pi, ((core == PHY_CORE_0) ? \
51                             radio_type##_##jspace##0##_##reg_name : \
52                             radio_type##_##jspace##1##_##reg_name))
53
54 #define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value) \
55         write_radio_reg(pi, ((core ==  PHY_CORE_0) ? \
56                              radio_type##_##jspace##0##_##reg_name : \
57                              radio_type##_##jspace##1##_##reg_name), \
58                         value)
59
60 #define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name) \
61         read_radio_reg(pi, ((core == PHY_CORE_0) ? \
62                              radio_type##_##reg_name##_##jspace##0 : \
63                              radio_type##_##reg_name##_##jspace##1))
64
65 #define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value) \
66         write_radio_reg(pi, ((core == PHY_CORE_0) ? \
67                         radio_type##_##reg_name##_##jspace##0 : \
68                         radio_type##_##reg_name##_##jspace##1), \
69                         value)
70
71 #define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
72 #define NPHY_ACI_CHANNEL_DELTA 5
73 #define NPHY_ACI_CHANNEL_SKIP 4
74 #define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
75 #define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
76 #define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
77 #define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
78 #define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
79 #define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
80
81 #define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
82
83 #define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
84
85 #define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
86
87 #define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
88
89 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
90
91 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
92
93 #define NPHY_NOISE_NOASSOC_ENTER_TH  400
94
95 #define NPHY_NOISE_ASSOC_ENTER_TH  400
96
97 #define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH  400
98
99 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
100 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
101
102 #define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
103
104 #define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
105
106 #define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
107
108 #define NPHY_RSSICAL_MAXREAD 31
109
110 #define NPHY_RSSICAL_NPOLL 8
111 #define NPHY_RSSICAL_MAXD  (1<<20)
112 #define NPHY_MIN_RXIQ_PWR 2
113
114 #define NPHY_RSSICAL_W1_TARGET 25
115 #define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
116 #define NPHY_RSSICAL_NB_TARGET 0
117
118 #define NPHY_RSSICAL_W1_TARGET_REV3 29
119 #define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
120
121 #define NPHY_CALSANITY_RSSI_NB_MAX_POS  9
122 #define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
123 #define NPHY_CALSANITY_RSSI_W1_MAX_POS  12
124 #define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - \
125                                         NPHY_RSSICAL_MAXREAD)
126 #define NPHY_CALSANITY_RSSI_W2_MAX_POS  NPHY_CALSANITY_RSSI_W1_MAX_POS
127 #define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - \
128                                         NPHY_RSSICAL_MAXREAD)
129 #define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
130 #define NPHY_RSSI_NB_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
131                                ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
132 #define NPHY_RSSI_W1_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
133                                ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
134 #define NPHY_RSSI_W2_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
135                                ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
136
137 #define NPHY_IQCAL_NUMGAINS 9
138 #define NPHY_N_GCTL 0x66
139
140 #define NPHY_PAPD_EPS_TBL_SIZE 64
141 #define NPHY_PAPD_SCL_TBL_SIZE 64
142 #define NPHY_NUM_DIG_FILT_COEFFS 15
143
144 #define NPHY_PAPD_COMP_OFF 0
145 #define NPHY_PAPD_COMP_ON  1
146
147 #define NPHY_SROM_TEMPSHIFT             32
148 #define NPHY_SROM_MAXTEMPOFFSET         16
149 #define NPHY_SROM_MINTEMPOFFSET         -16
150
151 #define NPHY_CAL_MAXTEMPDELTA           64
152
153 #define NPHY_NOISEVAR_TBLLEN40 256
154 #define NPHY_NOISEVAR_TBLLEN20 128
155
156 #define NPHY_ANARXLPFBW_REDUCTIONFACT 7
157
158 #define NPHY_ADJUSTED_MINCRSPOWER 0x1e
159
160 /* 5357 Chip specific ChipControl register bits */
161 #define CCTRL5357_EXTPA            (1<<14) /* extPA in ChipControl 1, bit 14 */
162 #define CCTRL5357_ANT_MUX_2o3      (1<<15) /* 2o3 in ChipControl 1, bit 15 */
163
164 #define NPHY_CAL_TSSISAMPS      64
165 #define NPHY_TEST_TONE_FREQ_40MHz 4000
166 #define NPHY_TEST_TONE_FREQ_20MHz 2500
167
168 #define MAX_205x_RCAL_WAITLOOPS 10000
169
170 #define NPHY_RXCAL_TONEAMP 181
171 #define NPHY_RXCAL_TONEFREQ_40MHz 4000
172 #define NPHY_RXCAL_TONEFREQ_20MHz 2000
173
174 #define TXFILT_SHAPING_OFDM20   0
175 #define TXFILT_SHAPING_OFDM40   1
176 #define TXFILT_SHAPING_CCK      2
177 #define TXFILT_DEFAULT_OFDM20   3
178 #define TXFILT_DEFAULT_OFDM40   4
179
180 struct nphy_iqcal_params {
181         u16 txlpf;
182         u16 txgm;
183         u16 pga;
184         u16 pad;
185         u16 ipa;
186         u16 cal_gain;
187         u16 ncorr[5];
188 };
189
190 struct nphy_txiqcal_ladder {
191         u8 percent;
192         u8 g_env;
193 };
194
195 struct nphy_ipa_txcalgains {
196         struct nphy_txgains gains;
197         bool useindex;
198         u8 index;
199 };
200
201 struct nphy_papd_restore_state {
202         u16 fbmix[2];
203         u16 vga_master[2];
204         u16 intpa_master[2];
205         u16 afectrl[2];
206         u16 afeoverride[2];
207         u16 pwrup[2];
208         u16 atten[2];
209         u16 mm;
210 };
211
212 struct nphy_ipa_txrxgain {
213         u16 hpvga;
214         u16 lpf_biq1;
215         u16 lpf_biq0;
216         u16 lna2;
217         u16 lna1;
218         s8 txpwrindex;
219 };
220
221 #define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
222
223 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz[] = {
224         {0, 0, 0, 0, 0, 100},
225         {0, 0, 0, 0, 0, 50},
226         {0, 0, 0, 0, 0, -1},
227         {0, 0, 0, 3, 0, -1},
228         {0, 0, 3, 3, 0, -1},
229         {0, 2, 3, 3, 0, -1}
230 };
231
232 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz[] = {
233         {0, 0, 0, 0, 0, 128},
234         {0, 0, 0, 0, 0, 70},
235         {0, 0, 0, 0, 0, 20},
236         {0, 0, 0, 3, 0, 20},
237         {0, 0, 3, 3, 0, 20},
238         {0, 2, 3, 3, 0, 20}
239 };
240
241 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = {
242         {0, 0, 0, 0, 0, 100},
243         {0, 0, 0, 0, 0, 50},
244         {0, 0, 0, 0, 0, -1},
245         {0, 0, 0, 3, 0, -1},
246         {0, 0, 3, 3, 0, -1},
247         {0, 0, 5, 3, 0, -1}
248 };
249
250 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = {
251         {0, 0, 0, 0, 0, 10},
252         {0, 0, 0, 1, 0, 10},
253         {0, 0, 1, 2, 0, 10},
254         {0, 0, 1, 3, 0, 10},
255         {0, 0, 4, 3, 0, 10},
256         {0, 0, 6, 3, 0, 10}
257 };
258
259 enum {
260         NPHY_RXCAL_GAIN_INIT = 0,
261         NPHY_RXCAL_GAIN_UP,
262         NPHY_RXCAL_GAIN_DOWN
263 };
264
265 #define wlc_phy_get_papd_nphy(pi) \
266         (read_phy_reg((pi), 0x1e7) & \
267          ((0x1 << 15) | \
268           (0x1 << 14) | \
269           (0x1 << 13)))
270
271 static const u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
272         {-377, 137, -407, 208, -1527, 956, 93, 186, 93,
273          230, -44, 230, 201, -191, 201},
274         {-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
275          26, 34, -32, 34},
276         {-360, 164, -376, 164, -1533, 576, 308, -314, 308,
277          121, -73, 121, 91, 124, 91},
278         {-295, 200, -363, 142, -1391, 826, 151, 301, 151,
279          151, 301, 151, 602, -752, 602},
280         {-92, 58, -96, 49, -104, 44, 17, 35, 17,
281          12, 25, 12, 13, 27, 13},
282         {-375, 136, -399, 209, -1479, 949, 130, 260, 130,
283          230, -44, 230, 201, -191, 201},
284         {0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
285          0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
286 };
287
288 struct chan_info_nphy_2055 {
289         u16 chan;
290         u16 freq;
291         uint unknown;
292         u8 RF_pll_ref;
293         u8 RF_rf_pll_mod1;
294         u8 RF_rf_pll_mod0;
295         u8 RF_vco_cap_tail;
296         u8 RF_vco_cal1;
297         u8 RF_vco_cal2;
298         u8 RF_pll_lf_c1;
299         u8 RF_pll_lf_r1;
300         u8 RF_pll_lf_c2;
301         u8 RF_lgbuf_cen_buf;
302         u8 RF_lgen_tune1;
303         u8 RF_lgen_tune2;
304         u8 RF_core1_lgbuf_a_tune;
305         u8 RF_core1_lgbuf_g_tune;
306         u8 RF_core1_rxrf_reg1;
307         u8 RF_core1_tx_pga_pad_tn;
308         u8 RF_core1_tx_mx_bgtrim;
309         u8 RF_core2_lgbuf_a_tune;
310         u8 RF_core2_lgbuf_g_tune;
311         u8 RF_core2_rxrf_reg1;
312         u8 RF_core2_tx_pga_pad_tn;
313         u8 RF_core2_tx_mx_bgtrim;
314         u16 PHY_BW1a;
315         u16 PHY_BW2;
316         u16 PHY_BW3;
317         u16 PHY_BW4;
318         u16 PHY_BW5;
319         u16 PHY_BW6;
320 };
321
322 struct chan_info_nphy_radio205x {
323         u16 chan;
324         u16 freq;
325         u8 RF_SYN_pll_vcocal1;
326         u8 RF_SYN_pll_vcocal2;
327         u8 RF_SYN_pll_refdiv;
328         u8 RF_SYN_pll_mmd2;
329         u8 RF_SYN_pll_mmd1;
330         u8 RF_SYN_pll_loopfilter1;
331         u8 RF_SYN_pll_loopfilter2;
332         u8 RF_SYN_pll_loopfilter3;
333         u8 RF_SYN_pll_loopfilter4;
334         u8 RF_SYN_pll_loopfilter5;
335         u8 RF_SYN_reserved_addr27;
336         u8 RF_SYN_reserved_addr28;
337         u8 RF_SYN_reserved_addr29;
338         u8 RF_SYN_logen_VCOBUF1;
339         u8 RF_SYN_logen_MIXER2;
340         u8 RF_SYN_logen_BUF3;
341         u8 RF_SYN_logen_BUF4;
342         u8 RF_RX0_lnaa_tune;
343         u8 RF_RX0_lnag_tune;
344         u8 RF_TX0_intpaa_boost_tune;
345         u8 RF_TX0_intpag_boost_tune;
346         u8 RF_TX0_pada_boost_tune;
347         u8 RF_TX0_padg_boost_tune;
348         u8 RF_TX0_pgaa_boost_tune;
349         u8 RF_TX0_pgag_boost_tune;
350         u8 RF_TX0_mixa_boost_tune;
351         u8 RF_TX0_mixg_boost_tune;
352         u8 RF_RX1_lnaa_tune;
353         u8 RF_RX1_lnag_tune;
354         u8 RF_TX1_intpaa_boost_tune;
355         u8 RF_TX1_intpag_boost_tune;
356         u8 RF_TX1_pada_boost_tune;
357         u8 RF_TX1_padg_boost_tune;
358         u8 RF_TX1_pgaa_boost_tune;
359         u8 RF_TX1_pgag_boost_tune;
360         u8 RF_TX1_mixa_boost_tune;
361         u8 RF_TX1_mixg_boost_tune;
362         u16 PHY_BW1a;
363         u16 PHY_BW2;
364         u16 PHY_BW3;
365         u16 PHY_BW4;
366         u16 PHY_BW5;
367         u16 PHY_BW6;
368 };
369
370 struct chan_info_nphy_radio2057 {
371         u16 chan;
372         u16 freq;
373         u8 RF_vcocal_countval0;
374         u8 RF_vcocal_countval1;
375         u8 RF_rfpll_refmaster_sparextalsize;
376         u8 RF_rfpll_loopfilter_r1;
377         u8 RF_rfpll_loopfilter_c2;
378         u8 RF_rfpll_loopfilter_c1;
379         u8 RF_cp_kpd_idac;
380         u8 RF_rfpll_mmd0;
381         u8 RF_rfpll_mmd1;
382         u8 RF_vcobuf_tune;
383         u8 RF_logen_mx2g_tune;
384         u8 RF_logen_mx5g_tune;
385         u8 RF_logen_indbuf2g_tune;
386         u8 RF_logen_indbuf5g_tune;
387         u8 RF_txmix2g_tune_boost_pu_core0;
388         u8 RF_pad2g_tune_pus_core0;
389         u8 RF_pga_boost_tune_core0;
390         u8 RF_txmix5g_boost_tune_core0;
391         u8 RF_pad5g_tune_misc_pus_core0;
392         u8 RF_lna2g_tune_core0;
393         u8 RF_lna5g_tune_core0;
394         u8 RF_txmix2g_tune_boost_pu_core1;
395         u8 RF_pad2g_tune_pus_core1;
396         u8 RF_pga_boost_tune_core1;
397         u8 RF_txmix5g_boost_tune_core1;
398         u8 RF_pad5g_tune_misc_pus_core1;
399         u8 RF_lna2g_tune_core1;
400         u8 RF_lna5g_tune_core1;
401         u16 PHY_BW1a;
402         u16 PHY_BW2;
403         u16 PHY_BW3;
404         u16 PHY_BW4;
405         u16 PHY_BW5;
406         u16 PHY_BW6;
407 };
408
409 struct chan_info_nphy_radio2057_rev5 {
410         u16 chan;
411         u16 freq;
412         u8 RF_vcocal_countval0;
413         u8 RF_vcocal_countval1;
414         u8 RF_rfpll_refmaster_sparextalsize;
415         u8 RF_rfpll_loopfilter_r1;
416         u8 RF_rfpll_loopfilter_c2;
417         u8 RF_rfpll_loopfilter_c1;
418         u8 RF_cp_kpd_idac;
419         u8 RF_rfpll_mmd0;
420         u8 RF_rfpll_mmd1;
421         u8 RF_vcobuf_tune;
422         u8 RF_logen_mx2g_tune;
423         u8 RF_logen_indbuf2g_tune;
424         u8 RF_txmix2g_tune_boost_pu_core0;
425         u8 RF_pad2g_tune_pus_core0;
426         u8 RF_lna2g_tune_core0;
427         u8 RF_txmix2g_tune_boost_pu_core1;
428         u8 RF_pad2g_tune_pus_core1;
429         u8 RF_lna2g_tune_core1;
430         u16 PHY_BW1a;
431         u16 PHY_BW2;
432         u16 PHY_BW3;
433         u16 PHY_BW4;
434         u16 PHY_BW5;
435         u16 PHY_BW6;
436 };
437
438 struct nphy_sfo_cfg {
439         u16 PHY_BW1a;
440         u16 PHY_BW2;
441         u16 PHY_BW3;
442         u16 PHY_BW4;
443         u16 PHY_BW5;
444         u16 PHY_BW6;
445 };
446
447 static const struct chan_info_nphy_2055 chan_info_nphy_2055[] = {
448         {
449          184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
450          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
451          0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
452         {
453          186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
454          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
455          0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
456         {
457          188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
458          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
459          0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
460         {
461          190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
462          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
463          0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
464         {
465          192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
466          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
467          0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
468         {
469          194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
470          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
471          0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
472         {
473          196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
474          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
475          0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
476         {
477          198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
478          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
479          0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
480         {
481          200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
482          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
483          0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
484         {
485          202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
486          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
487          0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
488         {
489          204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
490          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
491          0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
492         {
493          206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
494          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
495          0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
496         {
497          208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
498          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
499          0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
500         {
501          210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
502          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
503          0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
504         {
505          212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
506          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
507          0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
508         {
509          214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
510          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
511          0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
512         {
513          216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
514          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
515          0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
516         {
517          218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
518          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
519          0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
520         {
521          220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
522          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
523          0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
524         {
525          222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
526          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
527          0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
528         {
529          224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
530          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
531          0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
532         {
533          226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
534          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
535          0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
536         {
537          228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
538          0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
539          0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
540         {
541          32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
542          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
543          0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
544         {
545          34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
546          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
547          0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
548         {
549          36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
550          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
551          0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
552         {
553          38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
554          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
555          0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
556         {
557          40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
558          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
559          0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
560         {
561          42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
562          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
563          0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
564         {
565          44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
566          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
567          0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
568         {
569          46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
570          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
571          0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
572         {
573          48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
574          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
575          0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
576         {
577          50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
578          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
579          0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
580         {
581          52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
582          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
583          0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
584         {
585          54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
586          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
587          0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
588         {
589          56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
590          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
591          0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
592         {
593          58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
594          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
595          0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
596         {
597          60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
598          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
599          0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
600         {
601          62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
602          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
603          0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
604         {
605          64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
606          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
607          0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
608         {
609          66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
610          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
611          0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
612         {
613          68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
614          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
615          0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
616         {
617          70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
618          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
619          0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
620         {
621          72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
622          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
623          0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
624         {
625          74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
626          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
627          0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
628         {
629          76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
630          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
631          0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
632         {
633          78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
634          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
635          0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
636         {
637          80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
638          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
639          0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
640         {
641          82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
642          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
643          0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
644         {
645          84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
646          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
647          0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
648         {
649          86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
650          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
651          0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
652         {
653          88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
654          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
655          0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
656         {
657          90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
658          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
659          0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
660         {
661          92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
662          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
663          0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
664         {
665          94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
666          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
667          0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
668         {
669          96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
670          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
671          0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
672         {
673          98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
674          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
675          0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
676         {
677          100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
678          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
679          0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
680         {
681          102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
682          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
683          0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
684         {
685          104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
686          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
687          0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
688         {
689          106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
690          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
691          0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
692         {
693          108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
694          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
695          0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
696         {
697          110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
698          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
699          0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
700         {
701          112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
702          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
703          0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
704         {
705          114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
706          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
707          0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
708         {
709          116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
710          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
711          0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
712         {
713          118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
714          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
715          0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
716         {
717          120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
718          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
719          0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
720         {
721          122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
722          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
723          0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
724         {
725          124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
726          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
727          0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
728         {
729          126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
730          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
731          0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
732         {
733          128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
734          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
735          0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
736         {
737          130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
738          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
739          0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
740         {
741          132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
742          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
743          0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
744         {
745          134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
746          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
747          0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
748         {
749          136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
750          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
751          0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
752         {
753          138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
754          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
755          0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
756         {
757          140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
758          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
759          0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
760         {
761          142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
762          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
763          0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
764         {
765          144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
766          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
767          0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
768         {
769          145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
770          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
771          0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
772         {
773          146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
774          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
775          0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
776         {
777          147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
778          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
779          0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
780         {
781          148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
782          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
783          0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
784         {
785          149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
786          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
787          0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
788         {
789          150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
790          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
791          0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
792         {
793          151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
794          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
795          0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
796         {
797          152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
798          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
799          0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
800         {
801          153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
802          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
803          0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
804         {
805          154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
806          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
807          0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
808         {
809          155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
810          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
811          0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
812         {
813          156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
814          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
815          0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
816         {
817          157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
818          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
819          0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
820         {
821          158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
822          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
823          0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
824         {
825          159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
826          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
827          0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
828         {
829          160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
830          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
831          0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
832         {
833          161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
834          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
835          0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
836         {
837          162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
838          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
839          0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
840         {
841          163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
842          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
843          0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
844         {
845          164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
846          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
847          0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
848         {
849          165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
850          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
851          0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
852         {
853          166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
854          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
855          0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
856         {
857          168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
858          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
859          0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
860         {
861          170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
862          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
863          0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
864         {
865          172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
866          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
867          0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
868         {
869          174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
870          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
871          0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
872         {
873          176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
874          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
875          0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
876         {
877          178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
878          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
879          0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
880         {
881          180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
882          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
883          0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
884         {
885          182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
886          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
887          0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
888         {
889          1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
890          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
891          0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
892         {
893          2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
894          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
895          0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
896         {
897          3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
898          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
899          0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
900         {
901          4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
902          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
903          0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
904         {
905          5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
906          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
907          0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
908         {
909          6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
910          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
911          0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
912         {
913          7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
914          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
915          0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
916         {
917          8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
918          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
919          0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
920         {
921          9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
922          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
923          0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
924         {
925          10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
926          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
927          0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
928         {
929          11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
930          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
931          0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
932         {
933          12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
934          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
935          0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
936         {
937          13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
938          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
939          0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
940         {
941          14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
942          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
943          0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
944 };
945
946 static const struct chan_info_nphy_radio205x chan_info_nphyrev3_2056[] = {
947         {
948          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
949          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
950          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
951          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
952         {
953          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
954          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
955          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
956          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
957         {
958          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
959          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
960          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
961          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
962         {
963          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
964          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
965          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
966          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
967         {
968          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
969          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
970          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
971          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
972         {
973          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
974          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
975          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
976          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
977         {
978          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
979          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
980          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
981          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
982         {
983          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
984          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
985          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
986          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
987         {
988          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
989          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
990          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
991          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
992         {
993          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
994          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
995          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
996          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
997         {
998          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
999          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1000          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1001          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1002         {
1003          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1004          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1005          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1006          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1007         {
1008          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1009          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1010          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1011          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1012         {
1013          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1014          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1015          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1016          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1017         {
1018          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1019          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1020          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1021          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1022         {
1023          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1024          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1025          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1026          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1027         {
1028          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1029          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1030          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1031          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1032         {
1033          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1034          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1035          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1036          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1037         {
1038          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1039          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1040          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1041          0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1042         {
1043          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1044          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1045          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1046          0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1047         {
1048          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1049          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1050          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1051          0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1052         {
1053          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1054          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1055          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1056          0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1057         {
1058          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1059          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1060          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1061          0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1062         {
1063          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1064          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1065          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1066          0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1067         {
1068          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1069          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1070          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1071          0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1072         {
1073          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1074          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1075          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1076          0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1077         {
1078          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1079          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1080          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1081          0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1082         {
1083          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1084          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1085          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1086          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1087         {
1088          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1089          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1090          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1091          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1092         {
1093          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1094          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1095          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1096          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1097         {
1098          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1099          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1100          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1101          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1102         {
1103          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1104          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1105          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1106          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1107         {
1108          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1109          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1110          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1111          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1112         {
1113          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1114          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1115          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1116          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1117         {
1118          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1119          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1120          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1121          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1122         {
1123          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1124          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1125          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1126          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1127         {
1128          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1129          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1130          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1131          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1132         {
1133          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1134          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1135          0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1136          0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1137         {
1138          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1139          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1140          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1141          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1142         {
1143          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1144          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1145          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1146          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1147         {
1148          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1149          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1150          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1151          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1152         {
1153          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1154          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1155          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1156          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1157         {
1158          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1159          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1160          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1161          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1162         {
1163          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1164          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1165          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1166          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1167         {
1168          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1169          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1170          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1171          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1172         {
1173          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1174          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1175          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1176          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1177         {
1178          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1179          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1180          0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1181          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1182         {
1183          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1184          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1185          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1186          0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1187         {
1188          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1189          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1190          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1191          0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1192         {
1193          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1194          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1195          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1196          0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1197         {
1198          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1199          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1200          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1201          0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1202         {
1203          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1204          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1205          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1206          0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1207         {
1208          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1209          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1210          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1211          0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1212         {
1213          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1214          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1215          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1216          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1217         {
1218          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1219          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1220          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1221          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1222         {
1223          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1224          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1225          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1226          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1227         {
1228          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1229          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1230          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1231          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1232         {
1233          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1234          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1235          0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1236          0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1237         {
1238          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1239          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1240          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1241          0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1242         {
1243          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1244          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1245          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1246          0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1247         {
1248          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1249          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1250          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1251          0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1252         {
1253          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1254          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1255          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1256          0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1257         {
1258          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1259          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1260          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1261          0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1262         {
1263          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1264          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1265          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1266          0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1267         {
1268          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1269          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1270          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1271          0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1272         {
1273          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1274          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1275          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1276          0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1277         {
1278          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1279          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1280          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1281          0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1282         {
1283          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1284          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1285          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1286          0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1287         {
1288          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1289          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1290          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1291          0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1292         {
1293          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1294          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1295          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1296          0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1297         {
1298          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1299          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1300          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1301          0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1302         {
1303          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1304          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1305          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1306          0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1307         {
1308          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1309          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1310          0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1311          0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1312         {
1313          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1314          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1315          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1316          0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1317         {
1318          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1319          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1320          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1321          0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1322         {
1323          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1324          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1325          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1326          0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1327         {
1328          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1329          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1330          0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1331          0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1332         {
1333          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1334          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1335          0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1336          0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1337         {
1338          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1339          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1340          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1341          0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1342         {
1343          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1344          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1345          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1346          0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1347         {
1348          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1349          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1350          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1351          0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1352         {
1353          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1354          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1355          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1356          0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1357         {
1358          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1359          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1360          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1361          0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1362         {
1363          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1364          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1365          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1366          0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1367         {
1368          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1369          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1370          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1371          0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1372         {
1373          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1374          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1375          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1376          0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1377         {
1378          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1379          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1380          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1381          0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1382         {
1383          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1384          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1385          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1386          0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1387         {
1388          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1389          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1390          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1391          0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1392         {
1393          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1394          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1395          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1396          0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1397         {
1398          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1399          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1400          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1401          0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1402         {
1403          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1404          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1405          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1406          0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1407         {
1408          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1409          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1410          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1411          0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1412         {
1413          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1414          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1415          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1416          0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1417         {
1418          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1419          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1420          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1421          0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1422         {
1423          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1424          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1425          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1426          0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1427         {
1428          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1429          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1430          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1431          0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1432         {
1433          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1434          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1435          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1436          0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1437         {
1438          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1439          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1440          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1441          0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1442         {
1443          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1444          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1445          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1446          0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1447         {
1448          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1449          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1450          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1451          0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1452         {
1453          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1454          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1455          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1456          0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1457         {
1458          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1459          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1460          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1461          0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1462         {
1463          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1464          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1465          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1466          0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1467         {
1468          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1469          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1470          0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1471          0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1472         {
1473          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1474          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1475          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1476          0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1477         {
1478          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1479          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1480          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1481          0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1482         {
1483          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1484          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1485          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1486          0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1487         {
1488          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1489          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1490          0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1491          0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1492         {
1493          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1494          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1495          0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1496          0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1497         {
1498          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1499          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1500          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1501          0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1502         {
1503          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1504          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1505          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1506          0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1507         {
1508          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1509          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1510          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1511          0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1512         {
1513          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1514          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1515          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1516          0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1517         {
1518          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1519          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1520          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1521          0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1522         {
1523          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1524          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1525          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1526          0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1527         {
1528          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1529          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1530          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1531          0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1532         {
1533          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1534          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1535          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1536          0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1537         {
1538          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1539          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1540          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1541          0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1542         {
1543          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1544          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1545          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1546          0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1547         {
1548          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1549          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1550          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1551          0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1552         {
1553          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1554          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1555          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1556          0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1557         {
1558          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1559          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1560          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1561          0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1562         {
1563          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1564          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1565          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1566          0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1567 };
1568
1569 static const struct chan_info_nphy_radio205x chan_info_nphyrev4_2056_A1[] = {
1570         {
1571          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1572          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1573          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1574          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1575         {
1576          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1577          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1578          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1579          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1580         {
1581          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1582          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1583          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1584          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1585         {
1586          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1587          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1588          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1589          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1590         {
1591          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1592          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1593          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1594          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1595         {
1596          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1597          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1598          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1599          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1600         {
1601          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1602          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1603          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1604          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1605         {
1606          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1607          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1608          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1609          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1610         {
1611          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1612          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1613          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1614          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1615         {
1616          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1617          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1618          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1619          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1620         {
1621          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1622          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1623          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1624          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1625         {
1626          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1627          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1628          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1629          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1630         {
1631          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1632          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1633          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1634          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1635         {
1636          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1637          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1638          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1639          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1640         {
1641          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1642          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1643          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1644          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1645         {
1646          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1647          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1648          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1649          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1650         {
1651          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1652          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1653          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1654          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1655         {
1656          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1657          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1658          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1659          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1660         {
1661          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1662          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1663          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1664          0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1665         {
1666          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1667          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1668          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1669          0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1670         {
1671          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1672          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1673          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1674          0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1675         {
1676          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1677          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1678          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1679          0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1680         {
1681          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1682          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1683          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1684          0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1685         {
1686          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1687          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1688          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1689          0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1690         {
1691          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1692          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1693          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1694          0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1695         {
1696          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1697          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1698          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1699          0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1700         {
1701          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1702          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1703          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1704          0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1705         {
1706          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1707          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1708          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1709          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1710         {
1711          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1712          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1713          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1714          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1715         {
1716          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1717          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1718          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1719          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1720         {
1721          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1722          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1723          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1724          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1725         {
1726          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1727          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1728          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1729          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1730         {
1731          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1732          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1733          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1734          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1735         {
1736          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1737          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1738          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1739          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1740         {
1741          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1742          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1743          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1744          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1745         {
1746          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1747          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1748          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1749          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1750         {
1751          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1752          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1753          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1754          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1755         {
1756          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1757          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1758          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1759          0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1760         {
1761          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1762          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1763          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1764          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1765         {
1766          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1767          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1768          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1769          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1770         {
1771          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1772          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1773          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1774          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1775         {
1776          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1777          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1778          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1779          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1780         {
1781          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1782          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1783          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1784          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1785         {
1786          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1787          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1788          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1789          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1790         {
1791          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1792          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1793          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1794          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1795         {
1796          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1797          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1798          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1799          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1800         {
1801          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1802          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1803          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1804          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1805         {
1806          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1807          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1808          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1809          0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1810         {
1811          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1812          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1813          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1814          0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1815         {
1816          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1817          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1818          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1819          0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1820         {
1821          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1822          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1823          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1824          0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1825         {
1826          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1827          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1828          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1829          0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1830         {
1831          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1832          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1833          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1834          0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1835         {
1836          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1837          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1838          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1839          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1840         {
1841          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1842          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1843          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1844          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1845         {
1846          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1847          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1848          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1849          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1850         {
1851          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1852          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1853          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1854          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1855         {
1856          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1857          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1858          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1859          0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1860         {
1861          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1862          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1863          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1864          0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1865         {
1866          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1867          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1868          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1869          0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1870         {
1871          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1872          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1873          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1874          0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1875         {
1876          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1877          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1878          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1879          0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1880         {
1881          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1882          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1883          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1884          0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1885         {
1886          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1887          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1888          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1889          0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1890         {
1891          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1892          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1893          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1894          0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1895         {
1896          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1897          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1898          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1899          0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1900         {
1901          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1902          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1903          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1904          0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1905         {
1906          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1907          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1908          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1909          0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1910         {
1911          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1912          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1913          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1914          0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1915         {
1916          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1917          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1918          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1919          0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1920         {
1921          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1922          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1923          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1924          0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1925         {
1926          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1927          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1928          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1929          0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1930         {
1931          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1932          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1933          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1934          0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1935         {
1936          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1937          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1938          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1939          0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1940         {
1941          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1942          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1943          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1944          0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1945         {
1946          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1947          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1948          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1949          0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1950         {
1951          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1952          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1953          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1954          0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1955         {
1956          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1957          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1958          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1959          0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1960         {
1961          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1962          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1963          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1964          0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1965         {
1966          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1967          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1968          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1969          0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1970         {
1971          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1972          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1973          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1974          0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1975         {
1976          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1977          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1978          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1979          0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1980         {
1981          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1982          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1983          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1984          0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1985         {
1986          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1987          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1988          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1989          0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1990         {
1991          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1992          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1993          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1994          0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1995         {
1996          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1997          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1998          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1999          0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2000         {
2001          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2002          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2003          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2004          0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2005         {
2006          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2007          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2008          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2009          0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2010         {
2011          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2012          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2013          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2014          0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2015         {
2016          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2017          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2018          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2019          0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2020         {
2021          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2022          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2023          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2024          0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2025         {
2026          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2027          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2028          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2029          0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2030         {
2031          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2032          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2033          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2034          0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2035         {
2036          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2037          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2038          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2039          0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2040         {
2041          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2042          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2043          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2044          0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2045         {
2046          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2047          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2048          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2049          0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2050         {
2051          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2052          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2053          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2054          0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2055         {
2056          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2057          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2058          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2059          0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2060         {
2061          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2062          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2063          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2064          0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2065         {
2066          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2067          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2068          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2069          0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2070         {
2071          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2072          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2073          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2074          0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2075         {
2076          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2077          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2078          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2079          0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2080         {
2081          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2082          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2083          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2084          0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2085         {
2086          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2087          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2088          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2089          0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2090         {
2091          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2092          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2093          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2094          0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2095         {
2096          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2097          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2098          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2099          0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2100         {
2101          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2102          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2103          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2104          0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2105         {
2106          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2107          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2108          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2109          0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2110         {
2111          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2112          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2113          0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2114          0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2115         {
2116          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2117          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2118          0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2119          0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2120         {
2121          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2122          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2123          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2124          0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2125         {
2126          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2127          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2128          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2129          0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2130         {
2131          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2132          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2133          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2134          0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2135         {
2136          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2137          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2138          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2139          0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2140         {
2141          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2142          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2143          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2144          0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2145         {
2146          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2147          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2148          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2149          0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2150         {
2151          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2152          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2153          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2154          0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2155         {
2156          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2157          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2158          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2159          0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2160         {
2161          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2162          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2163          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2164          0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2165         {
2166          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2167          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2168          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2169          0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2170         {
2171          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2172          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2173          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2174          0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2175         {
2176          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2177          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2178          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2179          0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2180         {
2181          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2182          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2183          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2184          0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2185         {
2186          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2187          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2188          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2189          0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2190 };
2191
2192 static const struct chan_info_nphy_radio205x chan_info_nphyrev5_2056v5[] = {
2193         {
2194          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2195          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2196          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2197          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2198         {
2199          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2200          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2201          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2202          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2203         {
2204          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2205          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2206          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2207          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2208         {
2209          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2210          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2211          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2212          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2213         {
2214          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2215          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2216          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2217          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2218         {
2219          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2220          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2221          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2222          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2223         {
2224          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2225          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2226          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2227          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2228         {
2229          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2230          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2231          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2232          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2233         {
2234          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2235          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2236          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2237          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2238         {
2239          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2240          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2241          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2242          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2243         {
2244          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2245          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2246          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2247          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2248         {
2249          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2250          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2251          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2252          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2253         {
2254          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2255          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2256          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2257          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2258         {
2259          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2260          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2261          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2262          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2263         {
2264          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2265          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2266          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2267          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2268         {
2269          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2270          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2271          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2272          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2273         {
2274          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2275          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2276          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2277          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2278         {
2279          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2280          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2281          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2282          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2283         {
2284          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2285          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2286          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2287          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2288         {
2289          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2290          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2291          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2292          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2293         {
2294          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2295          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2296          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2297          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2298         {
2299          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2300          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2301          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2302          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2303         {
2304          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2305          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2306          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2307          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2308         {
2309          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2310          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2311          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2312          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2313         {
2314          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2315          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2316          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2317          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2318         {
2319          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2320          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2321          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2322          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2323         {
2324          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2325          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2326          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2327          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2328         {
2329          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2330          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2331          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2332          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2333         {
2334          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2335          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2336          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2337          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2338         {
2339          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2340          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2341          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2342          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2343         {
2344          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2345          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2346          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2347          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2348         {
2349          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2350          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2351          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2352          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2353         {
2354          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2355          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2356          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2357          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2358         {
2359          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2360          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2361          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2362          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2363         {
2364          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2365          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2366          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2367          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2368         {
2369          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2370          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2371          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2372          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2373         {
2374          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2375          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2376          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2377          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2378         {
2379          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2380          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2381          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2382          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2383         {
2384          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2385          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2386          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2387          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2388         {
2389          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2390          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2391          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2392          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2393         {
2394          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2395          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2396          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2397          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2398         {
2399          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2400          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2401          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2402          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2403         {
2404          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2405          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2406          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2407          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2408         {
2409          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2410          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2411          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2412          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2413         {
2414          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2415          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2416          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2417          0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2418         {
2419          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2420          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2421          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2422          0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2423         {
2424          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2425          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2426          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2427          0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2428         {
2429          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2430          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2431          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2432          0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2433         {
2434          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2435          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2436          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2437          0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2438         {
2439          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2440          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2441          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2442          0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2443         {
2444          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2445          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2446          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2447          0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2448         {
2449          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2450          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2451          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2452          0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2453         {
2454          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2455          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2456          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2457          0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2458         {
2459          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2460          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2461          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2462          0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2463         {
2464          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2465          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2466          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2467          0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2468         {
2469          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2470          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2471          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2472          0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2473         {
2474          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2475          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2476          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2477          0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2478         {
2479          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2480          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2481          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2482          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2483         {
2484          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2485          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2486          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2487          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2488         {
2489          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2490          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2491          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2492          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2493         {
2494          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2495          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2496          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2497          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2498         {
2499          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2500          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2501          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2502          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2503         {
2504          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2505          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2506          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2507          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2508         {
2509          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2510          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2511          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2512          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2513         {
2514          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2515          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2516          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2517          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2518         {
2519          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2520          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2521          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2522          0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2523         {
2524          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2525          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2526          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2527          0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2528         {
2529          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2530          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2531          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2532          0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2533         {
2534          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2535          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2536          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2537          0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2538         {
2539          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2540          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2541          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2542          0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2543         {
2544          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2545          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2546          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2547          0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2548         {
2549          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2550          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2551          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2552          0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2553         {
2554          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2555          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2556          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2557          0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2558         {
2559          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2560          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2561          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2562          0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2563         {
2564          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2565          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2566          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2567          0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2568         {
2569          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2570          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2571          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2572          0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2573         {
2574          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2575          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2576          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2577          0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2578         {
2579          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2580          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2581          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2582          0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2583         {
2584          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2585          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2586          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2587          0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2588         {
2589          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2590          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2591          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2592          0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2593         {
2594          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2595          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2596          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2597          0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2598         {
2599          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2600          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2601          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2602          0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2603         {
2604          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2605          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2606          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2607          0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2608         {
2609          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2610          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2611          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2612          0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2613         {
2614          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2615          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2616          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2617          0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2618         {
2619          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2620          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2621          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2622          0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2623         {
2624          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2625          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2626          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2627          0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2628         {
2629          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2630          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2631          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2632          0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2633         {
2634          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2635          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2636          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2637          0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2638         {
2639          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2640          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2641          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2642          0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2643         {
2644          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2645          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2646          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2647          0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2648         {
2649          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2650          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2651          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2652          0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2653         {
2654          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2655          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2656          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2657          0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2658         {
2659          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2660          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2661          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2662          0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2663         {
2664          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2665          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2666          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2667          0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2668         {
2669          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2670          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2671          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2672          0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2673         {
2674          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2675          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2676          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2677          0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2678         {
2679          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2680          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2681          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2682          0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2683         {
2684          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2685          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2686          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2687          0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2688         {
2689          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2690          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2691          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2692          0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2693         {
2694          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2695          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2696          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2697          0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2698         {
2699          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2700          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2701          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2702          0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2703         {
2704          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2705          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2706          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2707          0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2708         {
2709          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2710          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2711          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2712          0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2713         {
2714          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2715          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2716          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2717          0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2718         {
2719          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2720          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2721          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2722          0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2723         {
2724          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2725          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2726          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2727          0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2728         {
2729          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2730          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2731          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2732          0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2733         {
2734          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2735          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2736          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2737          0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2738         {
2739          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2740          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2741          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2742          0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2743         {
2744          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2745          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2746          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2747          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2748         {
2749          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2750          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2751          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2752          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2753         {
2754          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2755          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2756          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2757          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2758         {
2759          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2760          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2761          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2762          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2763         {
2764          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2765          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2766          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2767          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2768         {
2769          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2770          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2771          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2772          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2773         {
2774          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2775          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2776          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2777          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2778         {
2779          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2780          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2781          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2782          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2783         {
2784          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2785          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2786          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2787          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2788         {
2789          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2790          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2791          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2792          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2793         {
2794          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2795          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2796          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2797          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2798         {
2799          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2800          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2801          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2802          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2803         {
2804          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2805          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2806          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2807          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2808         {
2809          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2810          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2811          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2812          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2813 };
2814
2815 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v6[] = {
2816         {
2817          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2818          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2819          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2820          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2821         {
2822          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2823          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2824          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2825          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2826         {
2827          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2828          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2829          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2830          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2831         {
2832          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2833          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2834          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2835          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2836         {
2837          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2838          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2839          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2840          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2841         {
2842          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2843          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2844          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2845          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2846         {
2847          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2848          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2849          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2850          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2851         {
2852          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2853          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2854          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2855          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2856         {
2857          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2858          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2859          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2860          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2861         {
2862          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2863          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2864          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2865          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2866         {
2867          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2868          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2869          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2870          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2871         {
2872          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2873          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2874          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2875          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2876         {
2877          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2878          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2879          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2880          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2881         {
2882          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2883          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2884          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2885          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2886         {
2887          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2888          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2889          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2890          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2891         {
2892          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2893          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2894          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2895          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2896         {
2897          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2898          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2899          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2900          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2901         {
2902          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2903          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2904          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2905          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2906         {
2907          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2908          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2909          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2910          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2911         {
2912          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2913          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2914          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2915          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2916         {
2917          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2918          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2919          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2920          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2921         {
2922          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2923          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2924          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2925          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2926         {
2927          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2928          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2929          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2930          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2931         {
2932          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2933          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2934          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2935          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2936         {
2937          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2938          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2939          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2940          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2941         {
2942          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2943          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2944          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2945          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2946         {
2947          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2948          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2949          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2950          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2951         {
2952          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2953          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2954          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2955          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2956         {
2957          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2958          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2959          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2960          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2961         {
2962          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2963          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2964          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2965          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2966         {
2967          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2968          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2969          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2970          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2971         {
2972          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2973          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2974          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2975          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2976         {
2977          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2978          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2979          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2980          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2981         {
2982          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2983          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2984          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2985          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2986         {
2987          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2988          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2989          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2990          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2991         {
2992          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2993          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2994          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2995          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2996         {
2997          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2998          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2999          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3000          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3001         {
3002          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3003          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3004          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3005          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3006         {
3007          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3008          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3009          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3010          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3011         {
3012          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3013          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
3014          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3015          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3016         {
3017          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3018          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
3019          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3020          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3021         {
3022          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3023          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3024          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3025          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3026         {
3027          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3028          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3029          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3030          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3031         {
3032          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3033          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3034          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3035          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3036         {
3037          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3038          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3039          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3040          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3041         {
3042          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3043          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3044          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3045          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3046         {
3047          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3048          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3049          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3050          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3051         {
3052          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3053          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3054          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3055          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3056         {
3057          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3058          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3059          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3060          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3061         {
3062          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3063          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3064          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3065          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3066         {
3067          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3068          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3069          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3070          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3071         {
3072          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3073          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3074          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3075          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3076         {
3077          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3078          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3079          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3080          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3081         {
3082          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3083          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3084          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3085          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3086         {
3087          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3088          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3089          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3090          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3091         {
3092          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3093          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3094          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3095          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3096         {
3097          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3098          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3099          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3100          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3101         {
3102          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3103          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3104          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3105          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3106         {
3107          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3108          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3109          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3110          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3111         {
3112          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3113          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3114          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3115          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3116         {
3117          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3118          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3119          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3120          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3121         {
3122          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3123          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3124          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3125          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3126         {
3127          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3128          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3129          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3130          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3131         {
3132          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3133          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3134          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3135          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3136         {
3137          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3138          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3139          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3140          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3141         {
3142          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3143          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3144          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3145          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3146         {
3147          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3148          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3149          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3150          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3151         {
3152          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3153          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3154          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3155          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3156         {
3157          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3158          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3159          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3160          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3161         {
3162          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3163          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3164          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3165          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3166         {
3167          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3168          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3169          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3170          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3171         {
3172          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3173          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3174          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3175          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3176         {
3177          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3178          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3179          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3180          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3181         {
3182          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3183          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3184          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3185          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3186         {
3187          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3188          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3189          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3190          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3191         {
3192          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3193          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3194          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3195          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3196         {
3197          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3198          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3199          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3200          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3201         {
3202          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3203          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3204          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3205          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3206         {
3207          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3208          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3209          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3210          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3211         {
3212          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3213          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3214          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3215          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3216         {
3217          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3218          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3219          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3220          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3221         {
3222          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3223          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3224          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3225          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3226         {
3227          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3228          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3229          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3230          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3231         {
3232          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3233          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3234          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3235          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3236         {
3237          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3238          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3239          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3240          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3241         {
3242          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3243          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3244          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3245          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3246         {
3247          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3248          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3249          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3250          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3251         {
3252          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3253          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3254          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3255          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3256         {
3257          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3258          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3259          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3260          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3261         {
3262          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3263          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3264          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3265          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3266         {
3267          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3268          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3269          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3270          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3271         {
3272          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3273          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3274          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3275          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3276         {
3277          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3278          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3279          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3280          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3281         {
3282          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3283          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3284          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3285          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3286         {
3287          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3288          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3289          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3290          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3291         {
3292          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3293          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3294          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3295          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3296         {
3297          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3298          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3299          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3300          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3301         {
3302          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3303          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3304          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3305          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3306         {
3307          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3308          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3309          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3310          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3311         {
3312          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3313          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3314          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3315          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3316         {
3317          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3318          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3319          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3320          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3321         {
3322          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3323          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3324          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3325          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3326         {
3327          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3328          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3329          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3330          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3331         {
3332          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3333          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3334          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3335          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3336         {
3337          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3338          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3339          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3340          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3341         {
3342          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3343          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3344          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3345          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3346         {
3347          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3348          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3349          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3350          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3351         {
3352          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3353          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3354          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3355          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3356         {
3357          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3358          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3359          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3360          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3361         {
3362          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3363          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3364          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3365          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3366         {
3367          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3368          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3369          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3370          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3371         {
3372          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3373          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3374          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3375          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3376         {
3377          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3378          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3379          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3380          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3381         {
3382          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3383          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3384          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3385          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3386         {
3387          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3388          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3389          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3390          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3391         {
3392          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3393          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3394          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3395          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3396         {
3397          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3398          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3399          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3400          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3401         {
3402          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3403          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3404          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3405          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3406         {
3407          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3408          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3409          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3410          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3411         {
3412          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3413          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3414          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3415          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3416         {
3417          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3418          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3419          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3420          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3421         {
3422          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3423          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3424          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3425          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3426         {
3427          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3428          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3429          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3430          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3431         {
3432          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3433          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3434          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3435          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3436 };
3437
3438 static const struct chan_info_nphy_radio205x chan_info_nphyrev5n6_2056v7[] = {
3439         {
3440          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3441          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3442          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3443          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3444         {
3445          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3446          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3447          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3448          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3449         {
3450          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3451          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3452          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3453          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3454         {
3455          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3456          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3457          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3458          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3459         {
3460          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3461          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3462          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3463          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3464         {
3465          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3466          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3467          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3468          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3469         {
3470          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3471          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3472          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3473          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3474         {
3475          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3476          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3477          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3478          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3479         {
3480          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3481          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3482          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3483          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3484         {
3485          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3486          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3487          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3488          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3489         {
3490          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3491          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3492          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3493          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3494         {
3495          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3496          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3497          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3498          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3499         {
3500          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3501          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3502          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3503          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3504         {
3505          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3506          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3507          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3508          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3509         {
3510          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3511          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3512          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3513          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3514         {
3515          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3516          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3517          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3518          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3519         {
3520          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3521          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3522          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3523          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3524         {
3525          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3526          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3527          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3528          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3529         {
3530          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3531          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3532          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3533          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3534         {
3535          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3536          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3537          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3538          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3539         {
3540          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3541          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3542          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3543          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3544         {
3545          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3546          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3547          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3548          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3549         {
3550          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3551          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3552          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3553          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3554         {
3555          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3556          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3557          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3558          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3559         {
3560          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3561          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3562          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3563          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3564         {
3565          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3566          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3567          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3568          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3569         {
3570          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3571          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3572          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3573          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3574         {
3575          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3576          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3577          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3578          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3579         {
3580          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3581          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3582          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3583          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3584         {
3585          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3586          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3587          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3588          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3589         {
3590          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3591          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3592          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3593          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3594         {
3595          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3596          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3597          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3598          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3599         {
3600          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3601          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3602          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3603          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3604         {
3605          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3606          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3607          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3608          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3609         {
3610          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3611          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3612          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3613          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3614         {
3615          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3616          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3617          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3618          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3619         {
3620          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3621          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3622          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3623          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3624         {
3625          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3626          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3627          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3628          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3629         {
3630          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3631          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3632          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3633          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3634         {
3635          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3636          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3637          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3638          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3639         {
3640          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3641          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3642          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3643          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3644         {
3645          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3646          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3647          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3648          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3649         {
3650          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3651          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3652          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3653          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3654         {
3655          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3656          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3657          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3658          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3659         {
3660          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3661          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3662          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3663          0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3664         {
3665          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3666          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3667          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3668          0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3669         {
3670          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3671          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3672          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3673          0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3674         {
3675          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3676          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3677          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3678          0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3679         {
3680          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3681          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3682          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3683          0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3684         {
3685          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3686          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3687          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3688          0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3689         {
3690          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3691          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3692          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3693          0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3694         {
3695          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3696          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3697          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3698          0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3699         {
3700          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3701          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3702          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3703          0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3704         {
3705          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3706          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3707          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3708          0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3709         {
3710          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3711          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3712          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3713          0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3714         {
3715          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3716          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3717          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3718          0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3719         {
3720          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3721          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3722          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3723          0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3724         {
3725          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3726          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3727          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3728          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3729         {
3730          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3731          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3732          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3733          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3734         {
3735          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3736          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3737          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3738          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3739         {
3740          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3741          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3742          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3743          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3744         {
3745          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3746          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3747          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3748          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3749         {
3750          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3751          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3752          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3753          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3754         {
3755          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3756          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3757          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3758          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3759         {
3760          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3761          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3762          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3763          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3764         {
3765          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3766          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3767          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3768          0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3769         {
3770          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3771          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3772          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3773          0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3774         {
3775          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3776          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3777          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3778          0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3779         {
3780          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3781          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3782          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3783          0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3784         {
3785          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3786          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3787          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3788          0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3789         {
3790          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3791          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3792          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3793          0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3794         {
3795          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3796          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3797          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3798          0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3799         {
3800          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3801          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3802          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3803          0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3804         {
3805          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3806          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3807          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3808          0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3809         {
3810          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3811          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3812          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3813          0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3814         {
3815          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3816          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3817          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3818          0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3819         {
3820          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3821          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3822          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3823          0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3824         {
3825          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3826          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3827          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3828          0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3829         {
3830          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3831          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3832          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3833          0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3834         {
3835          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3836          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3837          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3838          0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3839         {
3840          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3841          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3842          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3843          0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3844         {
3845          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3846          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3847          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3848          0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3849         {
3850          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3851          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3852          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3853          0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3854         {
3855          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3856          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3857          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3858          0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3859         {
3860          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3861          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3862          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3863          0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3864         {
3865          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3866          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3867          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3868          0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3869         {
3870          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3871          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3872          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3873          0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3874         {
3875          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3876          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3877          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3878          0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3879         {
3880          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3881          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3882          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3883          0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3884         {
3885          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3886          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3887          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3888          0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3889         {
3890          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3891          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3892          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3893          0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3894         {
3895          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3896          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3897          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3898          0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3899         {
3900          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3901          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3902          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3903          0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3904         {
3905          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3906          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3907          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3908          0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3909         {
3910          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3911          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3912          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3913          0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3914         {
3915          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3916          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3917          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3918          0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3919         {
3920          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3921          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3922          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3923          0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3924         {
3925          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3926          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3927          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3928          0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3929         {
3930          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3931          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3932          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3933          0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3934         {
3935          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3936          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3937          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3938          0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3939         {
3940          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3941          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3942          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3943          0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3944         {
3945          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3946          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3947          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3948          0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3949         {
3950          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3951          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3952          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3953          0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3954         {
3955          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3956          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3957          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3958          0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3959         {
3960          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3961          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3962          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3963          0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3964         {
3965          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3966          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3967          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3968          0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3969         {
3970          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3971          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3972          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3973          0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3974         {
3975          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3976          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3977          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3978          0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3979         {
3980          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3981          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3982          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3983          0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3984         {
3985          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3986          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3987          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3988          0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3989         {
3990          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3991          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3992          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3993          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3994         {
3995          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3996          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3997          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3998          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3999         {
4000          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4001          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
4002          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4003          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4004         {
4005          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4006          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4007          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4008          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4009         {
4010          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4011          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
4012          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4013          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4014         {
4015          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4016          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
4017          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4018          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4019         {
4020          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4021          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
4022          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
4023          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4024         {
4025          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4026          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
4027          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4028          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4029         {
4030          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4031          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4032          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4033          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4034         {
4035          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4036          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4037          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4038          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4039         {
4040          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4041          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4042          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4043          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4044         {
4045          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4046          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4047          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4048          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4049         {
4050          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4051          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4052          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4053          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4054         {
4055          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4056          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4057          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4058          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4059 };
4060
4061 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v8[] = {
4062         {
4063          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4064          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4065          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4066          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4067         {
4068          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4069          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4070          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4071          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4072         {
4073          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4074          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4075          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4076          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4077         {
4078          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4079          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4080          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4081          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4082         {
4083          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4084          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4085          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4086          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4087         {
4088          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4089          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4090          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4091          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4092         {
4093          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4094          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4095          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4096          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4097         {
4098          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4099          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4100          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4101          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4102         {
4103          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4104          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4105          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4106          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4107         {
4108          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4109          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4110          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4111          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4112         {
4113          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4114          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4115          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4116          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4117         {
4118          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4119          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4120          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4121          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4122         {
4123          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4124          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4125          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4126          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4127         {
4128          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4129          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4130          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4131          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4132         {
4133          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4134          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4135          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4136          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4137         {
4138          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4139          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4140          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4141          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4142         {
4143          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4144          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4145          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4146          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4147         {
4148          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4149          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4150          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4151          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4152         {
4153          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4154          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4155          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4156          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4157         {
4158          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4159          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4160          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4161          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4162         {
4163          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4164          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4165          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4166          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4167         {
4168          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4169          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4170          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4171          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4172         {
4173          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4174          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4175          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4176          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4177         {
4178          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4179          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4180          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4181          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4182         {
4183          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4184          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4185          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4186          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4187         {
4188          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4189          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4190          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4191          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4192         {
4193          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4194          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4195          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4196          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4197         {
4198          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4199          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4200          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4201          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4202         {
4203          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4204          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4205          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4206          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4207         {
4208          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4209          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4210          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4211          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4212         {
4213          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4214          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4215          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4216          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4217         {
4218          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4219          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4220          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4221          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4222         {
4223          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4224          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4225          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4226          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4227         {
4228          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4229          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4230          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4231          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4232         {
4233          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4234          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4235          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4236          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4237         {
4238          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4239          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4240          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4241          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4242         {
4243          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4244          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4245          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4246          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4247         {
4248          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4249          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4250          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4251          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4252         {
4253          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4254          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4255          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4256          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4257         {
4258          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4259          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4260          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4261          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4262         {
4263          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4264          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4265          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4266          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4267         {
4268          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4269          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4270          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4271          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4272         {
4273          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4274          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4275          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4276          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4277         {
4278          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4279          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4280          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4281          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4282         {
4283          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4284          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4285          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4286          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4287         {
4288          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4289          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4290          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4291          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4292         {
4293          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4294          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4295          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4296          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4297         {
4298          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4299          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4300          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4301          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4302         {
4303          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4304          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4305          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4306          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4307         {
4308          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4309          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4310          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4311          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4312         {
4313          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4314          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4315          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4316          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4317         {
4318          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4319          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4320          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4321          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4322         {
4323          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4324          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4325          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4326          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4327         {
4328          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4329          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4330          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4331          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4332         {
4333          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4334          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4335          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4336          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4337         {
4338          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4339          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4340          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4341          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4342         {
4343          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4344          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4345          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4346          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4347         {
4348          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4349          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4350          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4351          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4352         {
4353          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4354          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4355          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4356          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4357         {
4358          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4359          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4360          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4361          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4362         {
4363          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4364          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4365          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4366          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4367         {
4368          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4369          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4370          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4371          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4372         {
4373          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4374          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4375          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4376          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4377         {
4378          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4379          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4380          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4381          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4382         {
4383          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4384          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4385          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4386          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4387         {
4388          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4389          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4390          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4391          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4392         {
4393          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4394          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4395          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4396          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4397         {
4398          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4399          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4400          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4401          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4402         {
4403          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4404          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4405          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4406          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4407         {
4408          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4409          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4410          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4411          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4412         {
4413          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4414          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4415          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4416          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4417         {
4418          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4419          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4420          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4421          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4422         {
4423          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4424          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4425          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4426          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4427         {
4428          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4429          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4430          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4431          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4432         {
4433          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4434          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4435          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4436          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4437         {
4438          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4439          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4440          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4441          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4442         {
4443          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4444          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4445          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4446          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4447         {
4448          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4449          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4450          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4451          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4452         {
4453          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4454          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4455          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4456          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4457         {
4458          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4459          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4460          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4461          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4462         {
4463          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4464          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4465          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4466          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4467         {
4468          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4469          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4470          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4471          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4472         {
4473          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4474          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4475          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4476          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4477         {
4478          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4479          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4480          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4481          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4482         {
4483          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4484          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4485          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4486          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4487         {
4488          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4489          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4490          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4491          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4492         {
4493          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4494          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4495          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4496          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4497         {
4498          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4499          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4500          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4501          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4502         {
4503          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4504          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4505          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4506          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4507         {
4508          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4509          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4510          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4511          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4512         {
4513          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4514          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4515          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4516          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4517         {
4518          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4519          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4520          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4521          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4522         {
4523          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4524          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4525          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4526          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4527         {
4528          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4529          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4530          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4531          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4532         {
4533          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4534          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4535          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4536          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4537         {
4538          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4539          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4540          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4541          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4542         {
4543          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4544          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4545          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4546          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4547         {
4548          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4549          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4550          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4551          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4552         {
4553          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4554          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4555          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4556          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4557         {
4558          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4559          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4560          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4561          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4562         {
4563          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4564          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4565          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4566          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4567         {
4568          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4569          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4570          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4571          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4572         {
4573          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4574          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4575          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4576          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4577         {
4578          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4579          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4580          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4581          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4582         {
4583          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4584          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4585          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4586          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4587         {
4588          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4589          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4590          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4591          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4592         {
4593          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4594          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4595          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4596          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4597         {
4598          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4599          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4600          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4601          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4602         {
4603          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4604          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4605          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4606          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4607         {
4608          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4609          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4610          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4611          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4612         {
4613          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4614          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4615          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4616          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4617         {
4618          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4619          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4620          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4621          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4622         {
4623          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4624          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4625          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4626          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4627         {
4628          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4629          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4630          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4631          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4632         {
4633          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4634          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4635          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4636          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4637         {
4638          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4639          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4640          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4641          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4642         {
4643          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4644          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4645          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4646          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4647         {
4648          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4649          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4650          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4651          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4652         {
4653          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4654          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4655          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4656          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4657         {
4658          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4659          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4660          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4661          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4662         {
4663          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4664          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4665          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4666          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4667         {
4668          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4669          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4670          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4671          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4672         {
4673          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4674          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4675          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4676          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4677         {
4678          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4679          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4680          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4681          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4682 };
4683
4684 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v11[] = {
4685         {
4686          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4687          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4688          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4689          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4690         {
4691          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4692          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4693          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4694          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4695         {
4696          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4697          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4698          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4699          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4700         {
4701          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4702          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4703          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4704          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4705         {
4706          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4707          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4708          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4709          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4710         {
4711          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4712          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4713          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4714          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4715         {
4716          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4717          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4718          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4719          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4720         {
4721          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4722          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4723          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4724          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4725         {
4726          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4727          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4728          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4729          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4730         {
4731          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4732          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4733          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4734          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4735         {
4736          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4737          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4738          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4739          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4740         {
4741          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4742          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4743          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4744          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4745         {
4746          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4747          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4748          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4749          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4750         {
4751          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4752          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4753          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4754          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4755         {
4756          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4757          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4758          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4759          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4760         {
4761          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4762          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4763          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4764          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4765         {
4766          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4767          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4768          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4769          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4770         {
4771          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4772          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4773          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4774          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4775         {
4776          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4777          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4778          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4779          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4780         {
4781          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4782          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4783          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4784          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4785         {
4786          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4787          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4788          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4789          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4790         {
4791          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4792          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4793          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4794          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4795         {
4796          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4797          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4798          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4799          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4800         {
4801          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4802          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4803          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4804          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4805         {
4806          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4807          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4808          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4809          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4810         {
4811          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4812          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4813          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4814          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4815         {
4816          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4817          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4818          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4819          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4820         {
4821          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4822          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4823          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4824          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4825         {
4826          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4827          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4828          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4829          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4830         {
4831          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4832          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4833          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4834          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4835         {
4836          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4837          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4838          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4839          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4840         {
4841          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4842          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4843          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4844          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4845         {
4846          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4847          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4848          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4849          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4850         {
4851          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4852          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4853          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4854          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4855         {
4856          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4857          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4858          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4859          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4860         {
4861          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4862          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4863          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4864          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4865         {
4866          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4867          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4868          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4869          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4870         {
4871          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4872          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4873          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4874          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4875         {
4876          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4877          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4878          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4879          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4880         {
4881          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4882          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4883          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4884          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4885         {
4886          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4887          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4888          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4889          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4890         {
4891          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4892          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4893          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4894          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4895         {
4896          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4897          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4898          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4899          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4900         {
4901          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4902          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4903          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4904          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4905         {
4906          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4907          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4908          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4909          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4910         {
4911          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4912          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4913          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4914          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4915         {
4916          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4917          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4918          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4919          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4920         {
4921          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4922          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4923          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4924          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4925         {
4926          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4927          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4928          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4929          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4930         {
4931          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4932          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4933          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4934          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4935         {
4936          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4937          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4938          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4939          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4940         {
4941          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4942          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4943          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4944          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4945         {
4946          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4947          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4948          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4949          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4950         {
4951          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4952          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4953          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4954          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4955         {
4956          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4957          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4958          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4959          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4960         {
4961          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4962          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4963          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4964          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4965         {
4966          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4967          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4968          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4969          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4970         {
4971          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4972          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4973          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4974          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4975         {
4976          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4977          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4978          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4979          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4980         {
4981          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4982          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4983          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4984          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4985         {
4986          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4987          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4988          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4989          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4990         {
4991          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4992          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4993          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4994          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4995         {
4996          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4997          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4998          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4999          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
5000         {
5001          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5002          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
5003          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5004          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
5005         {
5006          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5007          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
5008          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5009          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
5010         {
5011          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5012          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
5013          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5014          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
5015         {
5016          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5017          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
5018          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5019          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
5020         {
5021          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
5022          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5023          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5024          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
5025         {
5026          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
5027          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5028          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5029          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
5030         {
5031          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5032          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5033          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5034          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5035         {
5036          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5037          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5038          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5039          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5040         {
5041          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5042          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5043          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5044          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5045         {
5046          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5047          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5048          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5049          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5050         {
5051          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5052          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5053          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5054          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5055         {
5056          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5057          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5058          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5059          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5060         {
5061          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5062          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5063          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5064          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5065         {
5066          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5067          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5068          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5069          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5070         {
5071          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5072          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5073          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5074          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5075         {
5076          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5077          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5078          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5079          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5080         {
5081          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5082          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5083          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5084          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5085         {
5086          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5087          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5088          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5089          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5090         {
5091          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5092          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5093          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5094          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5095         {
5096          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5097          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5098          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5099          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5100         {
5101          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5102          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5103          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5104          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5105         {
5106          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5107          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5108          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5109          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5110         {
5111          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5112          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5113          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5114          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5115         {
5116          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5117          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5118          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5119          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5120         {
5121          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5122          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5123          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5124          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5125         {
5126          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5127          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5128          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5129          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5130         {
5131          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5132          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5133          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5134          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5135         {
5136          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5137          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5138          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5139          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5140         {
5141          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5142          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5143          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5144          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5145         {
5146          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5147          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5148          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5149          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5150         {
5151          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5152          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5153          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5154          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5155         {
5156          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5157          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5158          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5159          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5160         {
5161          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5162          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5163          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5164          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5165         {
5166          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5167          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5168          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5169          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5170         {
5171          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5172          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5173          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5174          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5175         {
5176          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5177          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5178          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5179          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5180         {
5181          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5182          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5183          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5184          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5185         {
5186          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5187          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5188          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5189          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5190         {
5191          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5192          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5193          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5194          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5195         {
5196          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5197          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5198          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5199          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5200         {
5201          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5202          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5203          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5204          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5205         {
5206          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5207          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5208          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5209          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5210         {
5211          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5212          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5213          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5214          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5215         {
5216          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5217          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5218          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5219          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5220         {
5221          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5222          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5223          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5224          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5225         {
5226          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5227          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5228          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5229          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5230         {
5231          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5232          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5233          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5234          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5235         {
5236          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5237          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5238          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5239          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5240         {
5241          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5242          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5243          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5244          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5245         {
5246          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5247          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5248          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5249          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5250         {
5251          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5252          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5253          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5254          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5255         {
5256          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5257          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5258          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5259          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5260         {
5261          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5262          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5263          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5264          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5265         {
5266          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5267          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5268          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5269          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5270         {
5271          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5272          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5273          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5274          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5275         {
5276          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5277          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5278          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5279          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5280         {
5281          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5282          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5283          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5284          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5285         {
5286          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5287          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5288          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5289          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5290         {
5291          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5292          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5293          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5294          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5295         {
5296          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5297          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5298          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5299          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5300         {
5301          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5302          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5303          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5304          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5305 };
5306
5307 static const struct chan_info_nphy_radio2057 chan_info_nphyrev7_2057_rev4[] = {
5308         {
5309          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5310          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5311          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5312          0x0215,
5313          0x0216,
5314          },
5315         {
5316          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5317          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5318          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5319          0x0214,
5320          0x0215,
5321          },
5322         {
5323          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5324          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5325          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5326          0x0213,
5327          0x0214,
5328          },
5329         {
5330          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5331          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5332          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5333          0x0212,
5334          0x0213,
5335          },
5336         {
5337          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5338          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5339          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5340          0x0211,
5341          0x0212,
5342          },
5343         {
5344          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5345          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5346          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5347          0x020f,
5348          0x0211,
5349          },
5350         {
5351          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5352          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5353          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5354          0x020e,
5355          0x020f,
5356          },
5357         {
5358          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5359          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5360          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5361          0x020d,
5362          0x020e,
5363          },
5364         {
5365          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5366          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5367          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5368          0x020c,
5369          0x020d,
5370          },
5371         {
5372          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5373          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5374          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5375          0x020b,
5376          0x020c,
5377          },
5378         {
5379          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5380          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5381          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5382          0x020a,
5383          0x020b,
5384          },
5385         {
5386          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5387          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5388          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5389          0x0209,
5390          0x020a,
5391          },
5392         {
5393          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5394          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5395          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5396          0x0208,
5397          0x0209,
5398          },
5399         {
5400          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5401          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5402          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5403          0x0207,
5404          0x0208,
5405          },
5406         {
5407          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5408          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5409          0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5410          0x0206,
5411          0x0207,
5412          },
5413         {
5414          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5415          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5416          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5417          0x0205,
5418          0x0206,
5419          },
5420         {
5421          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5422          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5423          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5424          0x0204,
5425          0x0205,
5426          },
5427         {
5428          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5429          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5430          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5431          0x0203,
5432          0x0204,
5433          },
5434         {
5435          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5436          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5437          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5438          0x0202,
5439          0x0203,
5440          },
5441         {
5442          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5443          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5444          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5445          0x0201,
5446          0x0202,
5447          },
5448         {
5449          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5450          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5451          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5452          0x0200,
5453          0x0201,
5454          },
5455         {
5456          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5457          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5458          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5459          0x01ff,
5460          0x0200,
5461          },
5462         {
5463          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5464          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5465          0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5466          0x01fe,
5467          0x01ff,
5468          },
5469         {
5470          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5471          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5472          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5473          0x01fc,
5474          0x01fd,
5475          },
5476         {
5477          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5478          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5479          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5480          0x01fb,
5481          0x01fc,
5482          },
5483         {
5484          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5485          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5486          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5487          0x01fa,
5488          0x01fb,
5489          },
5490         {
5491          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5492          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5493          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5494          0x01f9,
5495          0x01fa,
5496          },
5497         {
5498          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5499          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5500          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5501          0x01f8,
5502          0x01f9,
5503          },
5504         {
5505          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5506          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5507          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5508          0x01f7,
5509          0x01f8,
5510          },
5511         {
5512          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5513          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5514          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5515          0x01f6,
5516          0x01f7,
5517          },
5518         {
5519          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5520          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5521          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5522          0x01f5,
5523          0x01f6,
5524          },
5525         {
5526          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5527          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5528          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5529          0x01f4,
5530          0x01f5,
5531          },
5532         {
5533          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5534          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5535          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5536          0x01f3,
5537          0x01f4,
5538          },
5539         {
5540          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5541          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5542          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5543          0x01f2,
5544          0x01f3,
5545          },
5546         {
5547          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5548          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5549          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5550          0x01f1,
5551          0x01f2,
5552          },
5553         {
5554          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5555          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5556          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5557          0x01f0,
5558          0x01f1,
5559          },
5560         {
5561          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5562          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5563          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5564          0x01f0,
5565          0x01f0,
5566          },
5567         {
5568          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5569          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5570          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5571          0x01ef,
5572          0x01f0,
5573          },
5574         {
5575          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5576          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5577          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5578          0x01ee,
5579          0x01ef,
5580          },
5581         {
5582          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5583          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5584          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5585          0x01ed,
5586          0x01ee,
5587          },
5588         {
5589          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5590          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5591          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5592          0x01ec,
5593          0x01ed,
5594          },
5595         {
5596          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5597          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5598          0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5599          0x01eb,
5600          0x01ec,
5601          },
5602         {
5603          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5604          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5605          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5606          0x01ea,
5607          0x01eb,
5608          },
5609         {
5610          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5611          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5612          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5613          0x01e9,
5614          0x01ea,
5615          },
5616         {
5617          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5618          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5619          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5620          0x01e8,
5621          0x01e9,
5622          },
5623         {
5624          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5625          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5626          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5627          0x01e7,
5628          0x01e8,
5629          },
5630         {
5631          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5632          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5633          0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5634          0x01e6,
5635          0x01e7,
5636          },
5637         {
5638          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5639          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5640          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5641          0x01e5,
5642          0x01e6,
5643          },
5644         {
5645          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5646          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5647          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5648          0x01e5,
5649          0x01e5,
5650          },
5651         {
5652          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5653          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5654          0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5655          0x01e4,
5656          0x01e5,
5657          },
5658         {
5659          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5660          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5661          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5662          0x01e3,
5663          0x01e4,
5664          },
5665         {
5666          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5667          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5668          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5669          0x01e2,
5670          0x01e3,
5671          },
5672         {
5673          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5674          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5675          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5676          0x01e1,
5677          0x01e2,
5678          },
5679         {
5680          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5681          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5682          0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5683          0x01e0,
5684          0x01e1,
5685          },
5686         {
5687          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5688          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5689          0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5690          0x01df,
5691          0x01e0,
5692          },
5693         {
5694          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5695          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5696          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5697          0x01de,
5698          0x01df,
5699          },
5700         {
5701          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5702          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5703          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5704          0x01dd,
5705          0x01de,
5706          },
5707         {
5708          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5709          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5710          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5711          0x01dd,
5712          0x01dd,
5713          },
5714         {
5715          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5716          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5717          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5718          0x01dc,
5719          0x01dd,
5720          },
5721         {
5722          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5723          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5724          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5725          0x01db,
5726          0x01dc,
5727          },
5728         {
5729          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5730          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5731          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5732          0x01da,
5733          0x01db,
5734          },
5735         {
5736          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5737          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5738          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5739          0x01d9,
5740          0x01da,
5741          },
5742         {
5743          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5744          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5745          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5746          0x01d8,
5747          0x01d9,
5748          },
5749         {
5750          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5751          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5752          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5753          0x01d7,
5754          0x01d8,
5755          },
5756         {
5757          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5758          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5759          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5760          0x01d7,
5761          0x01d7,
5762          },
5763         {
5764          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5765          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5766          0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5767          0x01d6,
5768          0x01d7,
5769          },
5770         {
5771          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5772          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5773          0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5774          0x01d5,
5775          0x01d6,
5776          },
5777         {
5778          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5779          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5780          0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5781          0x01d4,
5782          0x01d5,
5783          },
5784         {
5785          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5786          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5787          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5788          0x01d3,
5789          0x01d4,
5790          },
5791         {
5792          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5793          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5794          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5795          0x01d2,
5796          0x01d3,
5797          },
5798         {
5799          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5800          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5801          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5802          0x01d2,
5803          0x01d2,
5804          },
5805         {
5806          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5807          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5808          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5809          0x01d1,
5810          0x01d2,
5811          },
5812         {
5813          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5814          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5815          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5816          0x01d0,
5817          0x01d1,
5818          },
5819         {
5820          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5821          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5822          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5823          0x01cf,
5824          0x01d0,
5825          },
5826         {
5827          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5828          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5829          0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5830          0x01ce,
5831          0x01cf,
5832          },
5833         {
5834          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5835          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5836          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5837          0x01ce,
5838          0x01ce,
5839          },
5840         {
5841          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5842          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5843          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5844          0x01cd,
5845          0x01ce,
5846          },
5847         {
5848          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5849          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5850          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5851          0x01cc,
5852          0x01cd,
5853          },
5854         {
5855          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5856          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5857          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5858          0x01cb,
5859          0x01cc,
5860          },
5861         {
5862          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5863          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5864          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5865          0x01ca,
5866          0x01cb,
5867          },
5868         {
5869          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5870          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5871          0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5872          0x01ca,
5873          0x01cb,
5874          },
5875         {
5876          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5877          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5878          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5879          0x01c9,
5880          0x01ca,
5881          },
5882         {
5883          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5884          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5885          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5886          0x01c9,
5887          0x01ca,
5888          },
5889         {
5890          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5891          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5892          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5893          0x01c9,
5894          0x01c9,
5895          },
5896         {
5897          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5898          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5899          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5900          0x01c8,
5901          0x01c9,
5902          },
5903         {
5904          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5905          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5906          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5907          0x01c8,
5908          0x01c9,
5909          },
5910         {
5911          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5912          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5913          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5914          0x01c8,
5915          0x01c8,
5916          },
5917         {
5918          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5919          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5920          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5921          0x01c7,
5922          0x01c8,
5923          },
5924         {
5925          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5926          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5927          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5928          0x01c7,
5929          0x01c8,
5930          },
5931         {
5932          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5933          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5934          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5935          0x01c6,
5936          0x01c7,
5937          },
5938         {
5939          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5940          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5941          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5942          0x01c6,
5943          0x01c7,
5944          },
5945         {
5946          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5947          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5948          0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5949          0x01c6,
5950          0x01c6,
5951          },
5952         {
5953          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5954          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5955          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5956          0x01c5,
5957          0x01c6,
5958          },
5959         {
5960          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5961          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5962          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5963          0x01c5,
5964          0x01c6,
5965          },
5966         {
5967          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5968          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5969          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5970          0x01c4,
5971          0x01c5,
5972          },
5973         {
5974          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5975          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5976          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5977          0x01c4,
5978          0x01c5,
5979          },
5980         {
5981          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5982          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5983          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5984          0x01c4,
5985          0x01c4,
5986          },
5987         {
5988          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5989          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5990          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5991          0x01c3,
5992          0x01c4,
5993          },
5994         {
5995          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5996          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5997          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
5998          0x01c3,
5999          0x01c4,
6000          },
6001         {
6002          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6003          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6004          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6005          0x01c2,
6006          0x01c3,
6007          },
6008         {
6009          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6010          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6011          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6012          0x01c2,
6013          0x01c3,
6014          },
6015         {
6016          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6017          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6018          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6019          0x01c2,
6020          0x01c2,
6021          },
6022         {
6023          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6024          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6025          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6026          0x01c1,
6027          0x01c2,
6028          },
6029         {
6030          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6031          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6032          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6033          0x01c0,
6034          0x01c1,
6035          },
6036         {
6037          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6038          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6039          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6040          0x01bf,
6041          0x01c0,
6042          },
6043         {
6044          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6045          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6046          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6047          0x01bf,
6048          0x01bf,
6049          },
6050         {
6051          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6052          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6053          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6054          0x01be,
6055          0x01bf,
6056          },
6057         {
6058          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6059          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6060          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6061          0x01bd,
6062          0x01be,
6063          },
6064         {
6065          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6066          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6067          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6068          0x01bc,
6069          0x01bd,
6070          },
6071         {
6072          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6073          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6074          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6075          0x043f,
6076          0x0443,
6077          },
6078         {
6079          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6080          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6081          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6082          0x043d,
6083          0x0441,
6084          },
6085         {
6086          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6087          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6088          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6089          0x043a,
6090          0x043f,
6091          },
6092         {
6093          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6094          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6095          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6096          0x0438,
6097          0x043d,
6098          },
6099         {
6100          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6101          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6102          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6103          0x0436,
6104          0x043a,
6105          },
6106         {
6107          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6108          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6109          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6110          0x0434,
6111          0x0438,
6112          },
6113         {
6114          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6115          0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6116          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6117          0x0431,
6118          0x0436,
6119          },
6120         {
6121          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6122          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6123          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6124          0x042f,
6125          0x0434,
6126          },
6127         {
6128          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6129          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6130          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6131          0x042d,
6132          0x0431,
6133          },
6134         {
6135          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6136          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6137          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6138          0x042b,
6139          0x042f,
6140          },
6141         {
6142          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6143          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6144          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6145          0x0429,
6146          0x042d,
6147          },
6148         {
6149          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6150          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6151          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6152          0x0427,
6153          0x042b,
6154          },
6155         {
6156          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6157          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6158          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6159          0x0424,
6160          0x0429,
6161          },
6162         {
6163          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6164          0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6165          0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6166          0x041f,
6167          0x0424}
6168 };
6169
6170 static const struct chan_info_nphy_radio2057_rev5
6171 chan_info_nphyrev8_2057_rev5[] = {
6172         {
6173          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6174          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6175          0x043a, 0x043f, 0x0443},
6176         {
6177          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6178          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6179          0x0438, 0x043d, 0x0441},
6180         {
6181          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6182          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6183          0x0436, 0x043a, 0x043f},
6184         {
6185          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6186          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6187          0x0434, 0x0438, 0x043d},
6188         {
6189          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6190          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6191          0x0431, 0x0436, 0x043a},
6192         {
6193          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6194          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6195          0x042f, 0x0434, 0x0438},
6196         {
6197          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6198          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6199          0x042d, 0x0431, 0x0436},
6200         {
6201          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6202          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6203          0x042b, 0x042f, 0x0434},
6204         {
6205          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6206          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6207          0x0429, 0x042d, 0x0431},
6208         {
6209          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6210          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6211          0x0427, 0x042b, 0x042f},
6212         {
6213          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6214          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6215          0x0424, 0x0429, 0x042d},
6216         {
6217          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6218          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6219          0x0422, 0x0427, 0x042b},
6220         {
6221          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6222          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6223          0x0420, 0x0424, 0x0429},
6224         {
6225          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6226          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6227          0x041b, 0x041f, 0x0424}
6228 };
6229
6230 static const struct chan_info_nphy_radio2057_rev5
6231 chan_info_nphyrev9_2057_rev5v1[] = {
6232         {
6233          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6234          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6235          0x043a, 0x043f, 0x0443},
6236         {
6237          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6238          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6239          0x0438, 0x043d, 0x0441},
6240         {
6241          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6242          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6243          0x0436, 0x043a, 0x043f},
6244         {
6245          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6246          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6247          0x0434, 0x0438, 0x043d},
6248         {
6249          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6250          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6251          0x0431, 0x0436, 0x043a},
6252         {
6253          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6254          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6255          0x042f, 0x0434, 0x0438},
6256         {
6257          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6258          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6259          0x042d, 0x0431, 0x0436},
6260         {
6261          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6262          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6263          0x042b, 0x042f, 0x0434},
6264         {
6265          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6266          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6267          0x0429, 0x042d, 0x0431},
6268         {
6269          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6270          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6271          0x0427, 0x042b, 0x042f},
6272         {
6273          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6274          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6275          0x0424, 0x0429, 0x042d},
6276         {
6277          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6278          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6279          0x0422, 0x0427, 0x042b},
6280         {
6281          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6282          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6283          0x0420, 0x0424, 0x0429},
6284         {
6285          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6286          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6287          0x041b, 0x041f, 0x0424}
6288 };
6289
6290 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev7[] = {
6291         {
6292          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6293          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6294          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6295          0x0215,
6296          0x0216},
6297         {
6298          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6299          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6300          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6301          0x0214,
6302          0x0215},
6303         {
6304          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6305          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6306          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6307          0x0213,
6308          0x0214},
6309         {
6310          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6311          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6312          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6313          0x0212,
6314          0x0213},
6315         {
6316          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6317          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6318          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6319          0x0211,
6320          0x0212},
6321         {
6322          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6323          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6324          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6325          0x020f,
6326          0x0211},
6327         {
6328          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6329          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6330          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6331          0x020e,
6332          0x020f},
6333         {
6334          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6335          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6336          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6337          0x020d,
6338          0x020e},
6339         {
6340          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6341          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6342          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6343          0x020c,
6344          0x020d},
6345         {
6346          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6347          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6348          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6349          0x020b,
6350          0x020c},
6351         {
6352          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6353          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6354          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6355          0x020a,
6356          0x020b},
6357         {
6358          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6359          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6360          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6361          0x0209,
6362          0x020a},
6363         {
6364          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6365          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6366          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6367          0x0208,
6368          0x0209},
6369         {
6370          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6371          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6372          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6373          0x0207,
6374          0x0208},
6375         {
6376          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6377          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6378          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6379          0x0206,
6380          0x0207},
6381         {
6382          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6383          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6384          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6385          0x0205,
6386          0x0206},
6387         {
6388          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6389          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6390          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6391          0x0204,
6392          0x0205},
6393         {
6394          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6395          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6396          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6397          0x0203,
6398          0x0204},
6399         {
6400          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6401          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6402          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6403          0x0202,
6404          0x0203},
6405         {
6406          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6407          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6408          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6409          0x0201,
6410          0x0202},
6411         {
6412          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6413          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6414          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6415          0x0200,
6416          0x0201},
6417         {
6418          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6419          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6420          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6421          0x01ff,
6422          0x0200},
6423         {
6424          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6425          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6426          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6427          0x01fe,
6428          0x01ff},
6429         {
6430          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6431          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6432          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6433          0x01fc,
6434          0x01fd},
6435         {
6436          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6437          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6438          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6439          0x01fb,
6440          0x01fc},
6441         {
6442          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6443          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6444          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6445          0x01fa,
6446          0x01fb},
6447         {
6448          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6449          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6450          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6451          0x01f9,
6452          0x01fa},
6453         {
6454          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6455          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6456          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6457          0x01f8,
6458          0x01f9},
6459         {
6460          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6461          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6462          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6463          0x01f7,
6464          0x01f8},
6465         {
6466          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6467          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6468          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6469          0x01f6,
6470          0x01f7},
6471         {
6472          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6473          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6474          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6475          0x01f5,
6476          0x01f6},
6477         {
6478          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6479          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6480          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6481          0x01f4,
6482          0x01f5},
6483         {
6484          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6485          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6486          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6487          0x01f3,
6488          0x01f4},
6489         {
6490          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6491          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6492          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6493          0x01f2,
6494          0x01f3},
6495         {
6496          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6497          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6498          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6499          0x01f1,
6500          0x01f2},
6501         {
6502          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6503          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6504          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6505          0x01f0,
6506          0x01f1},
6507         {
6508          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6509          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6510          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6511          0x01f0,
6512          0x01f0},
6513         {
6514          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6515          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6516          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6517          0x01ef,
6518          0x01f0},
6519         {
6520          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6521          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6522          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6523          0x01ee,
6524          0x01ef},
6525         {
6526          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6527          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6528          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6529          0x01ed,
6530          0x01ee},
6531         {
6532          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6533          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6534          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6535          0x01ec,
6536          0x01ed},
6537         {
6538          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6539          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6540          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6541          0x01eb,
6542          0x01ec},
6543         {
6544          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6545          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6546          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6547          0x01ea,
6548          0x01eb},
6549         {
6550          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6551          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6552          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6553          0x01e9,
6554          0x01ea},
6555         {
6556          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6557          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6558          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6559          0x01e8,
6560          0x01e9},
6561         {
6562          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6563          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6564          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6565          0x01e7,
6566          0x01e8},
6567         {
6568          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6569          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6570          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6571          0x01e6,
6572          0x01e7},
6573         {
6574          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6575          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6576          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6577          0x01e5,
6578          0x01e6},
6579         {
6580          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6581          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6582          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6583          0x01e5,
6584          0x01e5},
6585         {
6586          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6587          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6588          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6589          0x01e4,
6590          0x01e5},
6591         {
6592          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6593          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6594          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6595          0x01e3,
6596          0x01e4},
6597         {
6598          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6599          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6600          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6601          0x01e2,
6602          0x01e3},
6603         {
6604          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6605          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6606          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6607          0x01e1,
6608          0x01e2},
6609         {
6610          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6611          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6612          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6613          0x01e0,
6614          0x01e1},
6615         {
6616          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6617          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6618          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6619          0x01df,
6620          0x01e0},
6621         {
6622          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6623          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6624          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6625          0x01de,
6626          0x01df},
6627         {
6628          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6629          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6630          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6631          0x01dd,
6632          0x01de},
6633         {
6634          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6635          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6636          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6637          0x01dd,
6638          0x01dd},
6639         {
6640          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6641          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6642          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6643          0x01dc,
6644          0x01dd},
6645         {
6646          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6647          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6648          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6649          0x01db,
6650          0x01dc},
6651         {
6652          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6653          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6654          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6655          0x01da,
6656          0x01db},
6657         {
6658          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6659          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6660          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6661          0x01d9,
6662          0x01da},
6663         {
6664          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6665          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6666          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6667          0x01d8,
6668          0x01d9},
6669         {
6670          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6671          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6672          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6673          0x01d7,
6674          0x01d8},
6675         {
6676          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6677          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6678          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6679          0x01d7,
6680          0x01d7},
6681         {
6682          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6683          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6684          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6685          0x01d6,
6686          0x01d7},
6687         {
6688          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6689          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6690          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6691          0x01d5,
6692          0x01d6},
6693         {
6694          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6695          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6696          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6697          0x01d4,
6698          0x01d5},
6699         {
6700          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6701          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6702          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6703          0x01d3,
6704          0x01d4},
6705         {
6706          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6707          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6708          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6709          0x01d2,
6710          0x01d3},
6711         {
6712          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6713          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6714          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6715          0x01d2,
6716          0x01d2},
6717         {
6718          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6719          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6720          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6721          0x01d1,
6722          0x01d2},
6723         {
6724          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6725          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6726          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6727          0x01d0,
6728          0x01d1},
6729         {
6730          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6731          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6732          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6733          0x01cf,
6734          0x01d0},
6735         {
6736          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6737          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6738          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6739          0x01ce,
6740          0x01cf},
6741         {
6742          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6743          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6744          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6745          0x01ce,
6746          0x01ce},
6747         {
6748          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6749          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6750          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6751          0x01cd,
6752          0x01ce},
6753         {
6754          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6755          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6756          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6757          0x01cc,
6758          0x01cd},
6759         {
6760          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6761          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6762          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6763          0x01cb,
6764          0x01cc},
6765         {
6766          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6767          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6768          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6769          0x01ca,
6770          0x01cb},
6771         {
6772          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6773          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6774          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6775          0x01ca,
6776          0x01cb},
6777         {
6778          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6779          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6780          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6781          0x01c9,
6782          0x01ca},
6783         {
6784          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6785          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6786          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6787          0x01c9,
6788          0x01ca},
6789         {
6790          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6791          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6792          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6793          0x01c9,
6794          0x01c9},
6795         {
6796          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6797          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6798          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6799          0x01c8,
6800          0x01c9},
6801         {
6802          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6803          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6804          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6805          0x01c8,
6806          0x01c9},
6807         {
6808          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6809          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6810          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6811          0x01c8,
6812          0x01c8},
6813         {
6814          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6815          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6816          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6817          0x01c7,
6818          0x01c8},
6819         {
6820          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6821          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6822          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6823          0x01c7,
6824          0x01c8},
6825         {
6826          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6827          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6828          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6829          0x01c6,
6830          0x01c7},
6831         {
6832          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6833          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6834          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6835          0x01c6,
6836          0x01c7},
6837         {
6838          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6839          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6840          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6841          0x01c6,
6842          0x01c6},
6843         {
6844          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6845          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6846          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6847          0x01c5,
6848          0x01c6},
6849         {
6850          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6851          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6852          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6853          0x01c5,
6854          0x01c6},
6855         {
6856          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6857          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6858          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6859          0x01c4,
6860          0x01c5},
6861         {
6862          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6863          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6864          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6865          0x01c4,
6866          0x01c5},
6867         {
6868          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6869          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6870          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6871          0x01c4,
6872          0x01c4},
6873         {
6874          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6875          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6876          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6877          0x01c3,
6878          0x01c4},
6879         {
6880          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6881          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6882          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6883          0x01c3,
6884          0x01c4},
6885         {
6886          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6887          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6888          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6889          0x01c2,
6890          0x01c3},
6891         {
6892          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6893          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6894          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6895          0x01c2,
6896          0x01c3},
6897         {
6898          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6899          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6900          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6901          0x01c2,
6902          0x01c2},
6903         {
6904          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6905          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6906          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6907          0x01c1,
6908          0x01c2},
6909         {
6910          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6911          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6912          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6913          0x01c0,
6914          0x01c1},
6915         {
6916          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6917          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6918          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6919          0x01bf,
6920          0x01c0},
6921         {
6922          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6923          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6924          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6925          0x01bf,
6926          0x01bf},
6927         {
6928          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6929          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6930          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6931          0x01be,
6932          0x01bf},
6933         {
6934          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6935          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6936          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6937          0x01bd,
6938          0x01be},
6939         {
6940          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6941          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6942          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6943          0x01bc,
6944          0x01bd},
6945         {
6946          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6947          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6948          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6949          0x043f,
6950          0x0443},
6951         {
6952          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6953          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6954          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6955          0x043d,
6956          0x0441},
6957         {
6958          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6959          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6960          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6961          0x043a,
6962          0x043f},
6963         {
6964          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6965          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6966          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6967          0x0438,
6968          0x043d},
6969         {
6970          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6971          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6972          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6973          0x0436,
6974          0x043a},
6975         {
6976          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6977          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6978          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6979          0x0434,
6980          0x0438},
6981         {
6982          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6983          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6984          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6985          0x0431,
6986          0x0436},
6987         {
6988          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6989          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6990          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6991          0x042f,
6992          0x0434},
6993         {
6994          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6995          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6996          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6997          0x042d,
6998          0x0431},
6999         {
7000          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7001          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7002          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7003          0x042b,
7004          0x042f},
7005         {
7006          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7007          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7008          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7009          0x0429,
7010          0x042d},
7011         {
7012          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7013          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7014          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7015          0x0427,
7016          0x042b},
7017         {
7018          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7019          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7020          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7021          0x0424,
7022          0x0429},
7023         {
7024          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7025          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7026          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7027          0x041f,
7028          0x0424}
7029 };
7030
7031 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev8[] = {
7032         {
7033          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7034          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7035          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7036          0x0214,
7037          0x0215},
7038         {
7039          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7040          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7041          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7042          0x0213,
7043          0x0214},
7044         {
7045          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7046          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7047          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7048          0x0212,
7049          0x0213},
7050         {
7051          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7052          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7053          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7054          0x0211,
7055          0x0212},
7056         {
7057          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7058          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7059          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7060          0x020f,
7061          0x0211},
7062         {
7063          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7064          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7065          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7066          0x020e,
7067          0x020f},
7068         {
7069          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7070          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7071          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7072          0x020d,
7073          0x020e},
7074         {
7075          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7076          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7077          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7078          0x020c,
7079          0x020d},
7080         {
7081          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7082          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7083          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7084          0x020b,
7085          0x020c},
7086         {
7087          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7088          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7089          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7090          0x020a,
7091          0x020b},
7092         {
7093          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7094          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7095          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7096          0x0209,
7097          0x020a},
7098         {
7099          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7100          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7101          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7102          0x0208,
7103          0x0209},
7104         {
7105          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7106          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7107          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7108          0x0207,
7109          0x0208},
7110         {
7111          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7112          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7113          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7114          0x0206,
7115          0x0207},
7116         {
7117          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7118          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7119          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7120          0x0205,
7121          0x0206},
7122         {
7123          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7124          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7125          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7126          0x0204,
7127          0x0205},
7128         {
7129          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7130          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7131          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7132          0x0203,
7133          0x0204},
7134         {
7135          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7136          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7137          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7138          0x0202,
7139          0x0203},
7140         {
7141          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7142          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7143          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7144          0x0201,
7145          0x0202},
7146         {
7147          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7148          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7149          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7150          0x0200,
7151          0x0201},
7152         {
7153          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7154          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7155          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7156          0x01ff,
7157          0x0200},
7158         {
7159          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7160          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7161          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7162          0x01fe,
7163          0x01ff},
7164         {
7165          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7166          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7167          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7168          0x01fc,
7169          0x01fd},
7170         {
7171          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7172          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7173          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7174          0x01fb,
7175          0x01fc},
7176         {
7177          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7178          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7179          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7180          0x01fa,
7181          0x01fb},
7182         {
7183          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7184          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7185          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7186          0x01f9,
7187          0x01fa},
7188         {
7189          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7190          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7191          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7192          0x01f8,
7193          0x01f9},
7194         {
7195          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7196          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7197          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7198          0x01f7,
7199          0x01f8},
7200         {
7201          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7202          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7203          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7204          0x01f6,
7205          0x01f7},
7206         {
7207          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7208          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7209          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7210          0x01f5,
7211          0x01f6},
7212         {
7213          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7214          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7215          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7216          0x01f4,
7217          0x01f5},
7218         {
7219          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7220          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7221          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7222          0x01f3,
7223          0x01f4},
7224         {
7225          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7226          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7227          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7228          0x01f2,
7229          0x01f3},
7230         {
7231          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7232          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7233          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7234          0x01f1,
7235          0x01f2},
7236         {
7237          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7238          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7239          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7240          0x01f0,
7241          0x01f1},
7242         {
7243          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7244          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7245          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7246          0x01f0,
7247          0x01f0},
7248         {
7249          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7250          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7251          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7252          0x01ef,
7253          0x01f0},
7254         {
7255          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7256          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7257          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7258          0x01ee,
7259          0x01ef},
7260         {
7261          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7262          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7263          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7264          0x01ed,
7265          0x01ee},
7266         {
7267          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7268          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7269          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7270          0x01ec,
7271          0x01ed},
7272         {
7273          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7274          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7275          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7276          0x01eb,
7277          0x01ec},
7278         {
7279          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7280          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7281          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7282          0x01ea,
7283          0x01eb},
7284         {
7285          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7286          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7287          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7288          0x01e9,
7289          0x01ea},
7290         {
7291          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7292          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7293          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7294          0x01e8,
7295          0x01e9},
7296         {
7297          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7298          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7299          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7300          0x01e7,
7301          0x01e8},
7302         {
7303          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7304          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7305          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7306          0x01e6,
7307          0x01e7},
7308         {
7309          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7310          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7311          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7312          0x01e5,
7313          0x01e6},
7314         {
7315          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7316          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7317          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7318          0x01e5,
7319          0x01e5},
7320         {
7321          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7322          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7323          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7324          0x01e4,
7325          0x01e5},
7326         {
7327          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7328          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7329          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7330          0x01e3,
7331          0x01e4},
7332         {
7333          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7334          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7335          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7336          0x01e2,
7337          0x01e3},
7338         {
7339          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7340          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7341          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7342          0x01e1,
7343          0x01e2},
7344         {
7345          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7346          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7347          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7348          0x01e0,
7349          0x01e1},
7350         {
7351          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7352          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7353          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7354          0x01df,
7355          0x01e0},
7356         {
7357          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7358          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7359          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7360          0x01de,
7361          0x01df},
7362         {
7363          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7364          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7365          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7366          0x01dd,
7367          0x01de},
7368         {
7369          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7370          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7371          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7372          0x01dd,
7373          0x01dd},
7374         {
7375          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7376          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7377          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7378          0x01dc,
7379          0x01dd},
7380         {
7381          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7382          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7383          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7384          0x01db,
7385          0x01dc},
7386         {
7387          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7388          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7389          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7390          0x01da,
7391          0x01db},
7392         {
7393          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7394          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7395          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7396          0x01d9,
7397          0x01da},
7398         {
7399          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7400          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7401          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7402          0x01d8,
7403          0x01d9},
7404         {
7405          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7406          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7407          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7408          0x01d7,
7409          0x01d8},
7410         {
7411          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7412          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7413          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7414          0x01d7,
7415          0x01d7},
7416         {
7417          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7418          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7419          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7420          0x01d6,
7421          0x01d7},
7422         {
7423          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7424          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7425          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7426          0x01d5,
7427          0x01d6},
7428         {
7429          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7430          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7431          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7432          0x01d4,
7433          0x01d5},
7434         {
7435          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7436          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7437          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7438          0x01d3,
7439          0x01d4},
7440         {
7441          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7442          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7443          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7444          0x01d2,
7445          0x01d3},
7446         {
7447          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7448          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7449          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7450          0x01d2,
7451          0x01d2},
7452         {
7453          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7454          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7455          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7456          0x01d1,
7457          0x01d2},
7458         {
7459          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7460          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7461          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7462          0x01d0,
7463          0x01d1},
7464         {
7465          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7466          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7467          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7468          0x01cf,
7469          0x01d0},
7470         {
7471          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7472          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7473          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7474          0x01ce,
7475          0x01cf},
7476         {
7477          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7478          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7479          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7480          0x01ce,
7481          0x01ce},
7482         {
7483          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7484          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7485          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7486          0x01cd,
7487          0x01ce},
7488         {
7489          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7490          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7491          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7492          0x01cc,
7493          0x01cd},
7494         {
7495          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7496          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7497          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7498          0x01cb,
7499          0x01cc},
7500         {
7501          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7502          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7503          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7504          0x01ca,
7505          0x01cb},
7506         {
7507          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7508          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7509          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7510          0x01ca,
7511          0x01cb},
7512         {
7513          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7514          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7515          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7516          0x01c9,
7517          0x01ca},
7518         {
7519          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7520          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7521          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7522          0x01c9,
7523          0x01ca},
7524         {
7525          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7526          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7527          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7528          0x01c9,
7529          0x01c9},
7530         {
7531          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7532          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7533          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7534          0x01c8,
7535          0x01c9},
7536         {
7537          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7538          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7539          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7540          0x01c8,
7541          0x01c9},
7542         {
7543          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7544          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7545          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7546          0x01c8,
7547          0x01c8},
7548         {
7549          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7550          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7551          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7552          0x01c7,
7553          0x01c8},
7554         {
7555          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7556          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7557          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7558          0x01c7,
7559          0x01c8},
7560         {
7561          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7562          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7563          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7564          0x01c6,
7565          0x01c7},
7566         {
7567          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7568          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7569          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7570          0x01c6,
7571          0x01c7},
7572         {
7573          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7574          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7575          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7576          0x01c6,
7577          0x01c6},
7578         {
7579          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7580          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7581          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7582          0x01c5,
7583          0x01c6},
7584         {
7585          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7586          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7587          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7588          0x01c5,
7589          0x01c6},
7590         {
7591          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7592          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7593          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7594          0x01c4,
7595          0x01c5},
7596         {
7597          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7598          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7599          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7600          0x01c4,
7601          0x01c5},
7602         {
7603          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7604          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7605          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7606          0x01c4,
7607          0x01c4},
7608         {
7609          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7610          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7611          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7612          0x01c3,
7613          0x01c4},
7614         {
7615          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7616          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7617          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7618          0x01c3,
7619          0x01c4},
7620         {
7621          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7622          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7623          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7624          0x01c2,
7625          0x01c3},
7626         {
7627          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7628          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7629          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7630          0x01c2,
7631          0x01c3},
7632         {
7633          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7634          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7635          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7636          0x01c2,
7637          0x01c2},
7638         {
7639          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7640          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7641          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7642          0x01c1,
7643          0x01c2},
7644         {
7645          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7646          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7647          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7648          0x01c0,
7649          0x01c1},
7650         {
7651          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7652          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7653          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7654          0x01bf,
7655          0x01c0},
7656         {
7657          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7658          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7659          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7660          0x01bf,
7661          0x01bf},
7662         {
7663          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7664          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7665          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7666          0x01be,
7667          0x01bf},
7668         {
7669          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7670          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7671          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7672          0x01bd,
7673          0x01be},
7674         {
7675          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7676          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7677          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7678          0x01bc,
7679          0x01bd},
7680         {
7681          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7682          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7683          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7684          0x043f,
7685          0x0443},
7686         {
7687          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7688          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7689          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7690          0x043d,
7691          0x0441},
7692         {
7693          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7694          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7695          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7696          0x043a,
7697          0x043f},
7698         {
7699          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7700          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7701          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7702          0x0438,
7703          0x043d},
7704         {
7705          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7706          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7707          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7708          0x0436,
7709          0x043a},
7710         {
7711          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7712          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7713          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7714          0x0434,
7715          0x0438},
7716         {
7717          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7718          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7719          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7720          0x0431,
7721          0x0436},
7722         {
7723          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7724          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7725          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7726          0x042f,
7727          0x0434},
7728         {
7729          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7730          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7731          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7732          0x042d,
7733          0x0431},
7734         {
7735          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7736          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7737          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7738          0x042b,
7739          0x042f},
7740         {
7741          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7742          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7743          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7744          0x0429,
7745          0x042d},
7746         {
7747          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7748          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7749          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7750          0x0427,
7751          0x042b},
7752         {
7753          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7754          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7755          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7756          0x0424,
7757          0x0429},
7758         {
7759          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7760          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7761          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7762          0x041f,
7763          0x0424}
7764 };
7765
7766 static struct radio_regs regs_2055[] = {
7767         {0x02, 0x80, 0x80, 0, 0},
7768         {0x03, 0, 0, 0, 0},
7769         {0x04, 0x27, 0x27, 0, 0},
7770         {0x05, 0, 0, 0, 0},
7771         {0x06, 0x27, 0x27, 0, 0},
7772         {0x07, 0x7f, 0x7f, 1, 1},
7773         {0x08, 0x7, 0x7, 1, 1},
7774         {0x09, 0x7f, 0x7f, 1, 1},
7775         {0x0A, 0x7, 0x7, 1, 1},
7776         {0x0B, 0x15, 0x15, 0, 0},
7777         {0x0C, 0x15, 0x15, 0, 0},
7778         {0x0D, 0x4f, 0x4f, 1, 1},
7779         {0x0E, 0x5, 0x5, 1, 1},
7780         {0x0F, 0x4f, 0x4f, 1, 1},
7781         {0x10, 0x5, 0x5, 1, 1},
7782         {0x11, 0xd0, 0xd0, 0, 0},
7783         {0x12, 0x2, 0x2, 0, 0},
7784         {0x13, 0, 0, 0, 0},
7785         {0x14, 0x40, 0x40, 0, 0},
7786         {0x15, 0, 0, 0, 0},
7787         {0x16, 0, 0, 0, 0},
7788         {0x17, 0, 0, 0, 0},
7789         {0x18, 0, 0, 0, 0},
7790         {0x19, 0, 0, 0, 0},
7791         {0x1A, 0, 0, 0, 0},
7792         {0x1B, 0, 0, 0, 0},
7793         {0x1C, 0, 0, 0, 0},
7794         {0x1D, 0xc0, 0xc0, 0, 0},
7795         {0x1E, 0xff, 0xff, 0, 0},
7796         {0x1F, 0xc0, 0xc0, 0, 0},
7797         {0x20, 0xff, 0xff, 0, 0},
7798         {0x21, 0xc0, 0xc0, 0, 0},
7799         {0x22, 0, 0, 0, 0},
7800         {0x23, 0x2c, 0x2c, 0, 0},
7801         {0x24, 0, 0, 0, 0},
7802         {0x25, 0, 0, 0, 0},
7803         {0x26, 0, 0, 0, 0},
7804         {0x27, 0, 0, 0, 0},
7805         {0x28, 0, 0, 0, 0},
7806         {0x29, 0, 0, 0, 0},
7807         {0x2A, 0, 0, 0, 0},
7808         {0x2B, 0, 0, 0, 0},
7809         {0x2C, 0, 0, 0, 0},
7810         {0x2D, 0xa4, 0xa4, 0, 0},
7811         {0x2E, 0x38, 0x38, 0, 0},
7812         {0x2F, 0, 0, 0, 0},
7813         {0x30, 0x4, 0x4, 1, 1},
7814         {0x31, 0, 0, 0, 0},
7815         {0x32, 0xa, 0xa, 0, 0},
7816         {0x33, 0x87, 0x87, 0, 0},
7817         {0x34, 0x9, 0x9, 0, 0},
7818         {0x35, 0x70, 0x70, 0, 0},
7819         {0x36, 0x11, 0x11, 0, 0},
7820         {0x37, 0x18, 0x18, 1, 1},
7821         {0x38, 0x6, 0x6, 0, 0},
7822         {0x39, 0x4, 0x4, 1, 1},
7823         {0x3A, 0x6, 0x6, 0, 0},
7824         {0x3B, 0x9e, 0x9e, 0, 0},
7825         {0x3C, 0x9, 0x9, 0, 0},
7826         {0x3D, 0xc8, 0xc8, 1, 1},
7827         {0x3E, 0x88, 0x88, 0, 0},
7828         {0x3F, 0, 0, 0, 0},
7829         {0x40, 0, 0, 0, 0},
7830         {0x41, 0, 0, 0, 0},
7831         {0x42, 0x1, 0x1, 0, 0},
7832         {0x43, 0x2, 0x2, 0, 0},
7833         {0x44, 0x96, 0x96, 0, 0},
7834         {0x45, 0x3e, 0x3e, 0, 0},
7835         {0x46, 0x3e, 0x3e, 0, 0},
7836         {0x47, 0x13, 0x13, 0, 0},
7837         {0x48, 0x2, 0x2, 0, 0},
7838         {0x49, 0x15, 0x15, 0, 0},
7839         {0x4A, 0x7, 0x7, 0, 0},
7840         {0x4B, 0, 0, 0, 0},
7841         {0x4C, 0, 0, 0, 0},
7842         {0x4D, 0, 0, 0, 0},
7843         {0x4E, 0, 0, 0, 0},
7844         {0x4F, 0, 0, 0, 0},
7845         {0x50, 0x8, 0x8, 0, 0},
7846         {0x51, 0x8, 0x8, 0, 0},
7847         {0x52, 0x6, 0x6, 0, 0},
7848         {0x53, 0x84, 0x84, 1, 1},
7849         {0x54, 0xc3, 0xc3, 0, 0},
7850         {0x55, 0x8f, 0x8f, 0, 0},
7851         {0x56, 0xff, 0xff, 0, 0},
7852         {0x57, 0xff, 0xff, 0, 0},
7853         {0x58, 0x88, 0x88, 0, 0},
7854         {0x59, 0x88, 0x88, 0, 0},
7855         {0x5A, 0, 0, 0, 0},
7856         {0x5B, 0xcc, 0xcc, 0, 0},
7857         {0x5C, 0x6, 0x6, 0, 0},
7858         {0x5D, 0x80, 0x80, 0, 0},
7859         {0x5E, 0x80, 0x80, 0, 0},
7860         {0x5F, 0xf8, 0xf8, 0, 0},
7861         {0x60, 0x88, 0x88, 0, 0},
7862         {0x61, 0x88, 0x88, 0, 0},
7863         {0x62, 0x88, 0x8, 1, 1},
7864         {0x63, 0x88, 0x88, 0, 0},
7865         {0x64, 0, 0, 0, 0},
7866         {0x65, 0x1, 0x1, 1, 1},
7867         {0x66, 0x8a, 0x8a, 0, 0},
7868         {0x67, 0x8, 0x8, 0, 0},
7869         {0x68, 0x83, 0x83, 0, 0},
7870         {0x69, 0x6, 0x6, 0, 0},
7871         {0x6A, 0xa0, 0xa0, 0, 0},
7872         {0x6B, 0xa, 0xa, 0, 0},
7873         {0x6C, 0x87, 0x87, 1, 1},
7874         {0x6D, 0x2a, 0x2a, 0, 0},
7875         {0x6E, 0x2a, 0x2a, 0, 0},
7876         {0x6F, 0x2a, 0x2a, 0, 0},
7877         {0x70, 0x2a, 0x2a, 0, 0},
7878         {0x71, 0x18, 0x18, 0, 0},
7879         {0x72, 0x6a, 0x6a, 1, 1},
7880         {0x73, 0xab, 0xab, 1, 1},
7881         {0x74, 0x13, 0x13, 1, 1},
7882         {0x75, 0xc1, 0xc1, 1, 1},
7883         {0x76, 0xaa, 0xaa, 1, 1},
7884         {0x77, 0x87, 0x87, 1, 1},
7885         {0x78, 0, 0, 0, 0},
7886         {0x79, 0x6, 0x6, 0, 0},
7887         {0x7A, 0x7, 0x7, 0, 0},
7888         {0x7B, 0x7, 0x7, 0, 0},
7889         {0x7C, 0x15, 0x15, 0, 0},
7890         {0x7D, 0x55, 0x55, 0, 0},
7891         {0x7E, 0x97, 0x97, 1, 1},
7892         {0x7F, 0x8, 0x8, 0, 0},
7893         {0x80, 0x14, 0x14, 1, 1},
7894         {0x81, 0x33, 0x33, 0, 0},
7895         {0x82, 0x88, 0x88, 0, 0},
7896         {0x83, 0x6, 0x6, 0, 0},
7897         {0x84, 0x3, 0x3, 1, 1},
7898         {0x85, 0xa, 0xa, 0, 0},
7899         {0x86, 0x3, 0x3, 1, 1},
7900         {0x87, 0x2a, 0x2a, 0, 0},
7901         {0x88, 0xa4, 0xa4, 0, 0},
7902         {0x89, 0x18, 0x18, 0, 0},
7903         {0x8A, 0x28, 0x28, 0, 0},
7904         {0x8B, 0, 0, 0, 0},
7905         {0x8C, 0x4a, 0x4a, 0, 0},
7906         {0x8D, 0, 0, 0, 0},
7907         {0x8E, 0xf8, 0xf8, 0, 0},
7908         {0x8F, 0x88, 0x88, 0, 0},
7909         {0x90, 0x88, 0x88, 0, 0},
7910         {0x91, 0x88, 0x8, 1, 1},
7911         {0x92, 0x88, 0x88, 0, 0},
7912         {0x93, 0, 0, 0, 0},
7913         {0x94, 0x1, 0x1, 1, 1},
7914         {0x95, 0x8a, 0x8a, 0, 0},
7915         {0x96, 0x8, 0x8, 0, 0},
7916         {0x97, 0x83, 0x83, 0, 0},
7917         {0x98, 0x6, 0x6, 0, 0},
7918         {0x99, 0xa0, 0xa0, 0, 0},
7919         {0x9A, 0xa, 0xa, 0, 0},
7920         {0x9B, 0x87, 0x87, 1, 1},
7921         {0x9C, 0x2a, 0x2a, 0, 0},
7922         {0x9D, 0x2a, 0x2a, 0, 0},
7923         {0x9E, 0x2a, 0x2a, 0, 0},
7924         {0x9F, 0x2a, 0x2a, 0, 0},
7925         {0xA0, 0x18, 0x18, 0, 0},
7926         {0xA1, 0x6a, 0x6a, 1, 1},
7927         {0xA2, 0xab, 0xab, 1, 1},
7928         {0xA3, 0x13, 0x13, 1, 1},
7929         {0xA4, 0xc1, 0xc1, 1, 1},
7930         {0xA5, 0xaa, 0xaa, 1, 1},
7931         {0xA6, 0x87, 0x87, 1, 1},
7932         {0xA7, 0, 0, 0, 0},
7933         {0xA8, 0x6, 0x6, 0, 0},
7934         {0xA9, 0x7, 0x7, 0, 0},
7935         {0xAA, 0x7, 0x7, 0, 0},
7936         {0xAB, 0x15, 0x15, 0, 0},
7937         {0xAC, 0x55, 0x55, 0, 0},
7938         {0xAD, 0x97, 0x97, 1, 1},
7939         {0xAE, 0x8, 0x8, 0, 0},
7940         {0xAF, 0x14, 0x14, 1, 1},
7941         {0xB0, 0x33, 0x33, 0, 0},
7942         {0xB1, 0x88, 0x88, 0, 0},
7943         {0xB2, 0x6, 0x6, 0, 0},
7944         {0xB3, 0x3, 0x3, 1, 1},
7945         {0xB4, 0xa, 0xa, 0, 0},
7946         {0xB5, 0x3, 0x3, 1, 1},
7947         {0xB6, 0x2a, 0x2a, 0, 0},
7948         {0xB7, 0xa4, 0xa4, 0, 0},
7949         {0xB8, 0x18, 0x18, 0, 0},
7950         {0xB9, 0x28, 0x28, 0, 0},
7951         {0xBA, 0, 0, 0, 0},
7952         {0xBB, 0x4a, 0x4a, 0, 0},
7953         {0xBC, 0, 0, 0, 0},
7954         {0xBD, 0x71, 0x71, 0, 0},
7955         {0xBE, 0x72, 0x72, 0, 0},
7956         {0xBF, 0x73, 0x73, 0, 0},
7957         {0xC0, 0x74, 0x74, 0, 0},
7958         {0xC1, 0x75, 0x75, 0, 0},
7959         {0xC2, 0x76, 0x76, 0, 0},
7960         {0xC3, 0x77, 0x77, 0, 0},
7961         {0xC4, 0x78, 0x78, 0, 0},
7962         {0xC5, 0x79, 0x79, 0, 0},
7963         {0xC6, 0x7a, 0x7a, 0, 0},
7964         {0xC7, 0, 0, 0, 0},
7965         {0xC8, 0, 0, 0, 0},
7966         {0xC9, 0, 0, 0, 0},
7967         {0xCA, 0, 0, 0, 0},
7968         {0xCB, 0, 0, 0, 0},
7969         {0xCC, 0, 0, 0, 0},
7970         {0xCD, 0, 0, 0, 0},
7971         {0xCE, 0x6, 0x6, 0, 0},
7972         {0xCF, 0, 0, 0, 0},
7973         {0xD0, 0, 0, 0, 0},
7974         {0xD1, 0x18, 0x18, 0, 0},
7975         {0xD2, 0x88, 0x88, 0, 0},
7976         {0xD3, 0, 0, 0, 0},
7977         {0xD4, 0, 0, 0, 0},
7978         {0xD5, 0, 0, 0, 0},
7979         {0xD6, 0, 0, 0, 0},
7980         {0xD7, 0, 0, 0, 0},
7981         {0xD8, 0, 0, 0, 0},
7982         {0xD9, 0, 0, 0, 0},
7983         {0xDA, 0x6, 0x6, 0, 0},
7984         {0xDB, 0, 0, 0, 0},
7985         {0xDC, 0, 0, 0, 0},
7986         {0xDD, 0x18, 0x18, 0, 0},
7987         {0xDE, 0x88, 0x88, 0, 0},
7988         {0xDF, 0, 0, 0, 0},
7989         {0xE0, 0, 0, 0, 0},
7990         {0xE1, 0, 0, 0, 0},
7991         {0xE2, 0, 0, 0, 0},
7992         {0xFFFF, 0, 0, 0, 0},
7993 };
7994
7995 static struct radio_regs regs_SYN_2056[] = {
7996         {0x02, 0, 0, 0, 0},
7997         {0x03, 0, 0, 0, 0},
7998         {0x04, 0, 0, 0, 0},
7999         {0x05, 0, 0, 0, 0},
8000         {0x06, 0, 0, 0, 0},
8001         {0x07, 0, 0, 0, 0},
8002         {0x08, 0, 0, 0, 0},
8003         {0x09, 0x1, 0x1, 0, 0},
8004         {0x0A, 0, 0, 0, 0},
8005         {0x0B, 0, 0, 0, 0},
8006         {0x0C, 0, 0, 0, 0},
8007         {0x0D, 0, 0, 0, 0},
8008         {0x0E, 0, 0, 0, 0},
8009         {0x0F, 0, 0, 0, 0},
8010         {0x10, 0, 0, 0, 0},
8011         {0x11, 0, 0, 0, 0},
8012         {0x12, 0, 0, 0, 0},
8013         {0x13, 0, 0, 0, 0},
8014         {0x14, 0, 0, 0, 0},
8015         {0x15, 0, 0, 0, 0},
8016         {0x16, 0, 0, 0, 0},
8017         {0x17, 0, 0, 0, 0},
8018         {0x18, 0, 0, 0, 0},
8019         {0x19, 0, 0, 0, 0},
8020         {0x1A, 0, 0, 0, 0},
8021         {0x1B, 0, 0, 0, 0},
8022         {0x1C, 0, 0, 0, 0},
8023         {0x1D, 0, 0, 0, 0},
8024         {0x1E, 0, 0, 0, 0},
8025         {0x1F, 0, 0, 0, 0},
8026         {0x20, 0, 0, 0, 0},
8027         {0x21, 0, 0, 0, 0},
8028         {0x22, 0x60, 0x60, 0, 0},
8029         {0x23, 0x6, 0x6, 0, 0},
8030         {0x24, 0xc, 0xc, 0, 0},
8031         {0x25, 0, 0, 0, 0},
8032         {0x26, 0, 0, 0, 0},
8033         {0x27, 0, 0, 0, 0},
8034         {0x28, 0x1, 0x1, 0, 0},
8035         {0x29, 0, 0, 0, 0},
8036         {0x2A, 0, 0, 0, 0},
8037         {0x2B, 0, 0, 0, 0},
8038         {0x2C, 0, 0, 0, 0},
8039         {0x2D, 0, 0, 0, 0},
8040         {0x2E, 0xd, 0xd, 0, 0},
8041         {0x2F, 0x1f, 0x1f, 0, 0},
8042         {0x30, 0x15, 0x15, 0, 0},
8043         {0x31, 0xf, 0xf, 0, 0},
8044         {0x32, 0, 0, 0, 0},
8045         {0x33, 0, 0, 0, 0},
8046         {0x34, 0, 0, 0, 0},
8047         {0x35, 0, 0, 0, 0},
8048         {0x36, 0, 0, 0, 0},
8049         {0x37, 0, 0, 0, 0},
8050         {0x38, 0, 0, 0, 0},
8051         {0x39, 0, 0, 0, 0},
8052         {0x3A, 0, 0, 0, 0},
8053         {0x3B, 0, 0, 0, 0},
8054         {0x3C, 0x13, 0x13, 0, 0},
8055         {0x3D, 0xf, 0xf, 0, 0},
8056         {0x3E, 0x18, 0x18, 0, 0},
8057         {0x3F, 0, 0, 0, 0},
8058         {0x40, 0, 0, 0, 0},
8059         {0x41, 0x20, 0x20, 0, 0},
8060         {0x42, 0x20, 0x20, 0, 0},
8061         {0x43, 0, 0, 0, 0},
8062         {0x44, 0x77, 0x77, 0, 0},
8063         {0x45, 0x7, 0x7, 0, 0},
8064         {0x46, 0x1, 0x1, 0, 0},
8065         {0x47, 0x4, 0x4, 0, 0},
8066         {0x48, 0xf, 0xf, 0, 0},
8067         {0x49, 0x30, 0x30, 0, 0},
8068         {0x4A, 0x32, 0x32, 0, 0},
8069         {0x4B, 0xd, 0xd, 0, 0},
8070         {0x4C, 0xd, 0xd, 0, 0},
8071         {0x4D, 0x4, 0x4, 0, 0},
8072         {0x4E, 0x6, 0x6, 0, 0},
8073         {0x4F, 0x1, 0x1, 0, 0},
8074         {0x50, 0x1c, 0x1c, 0, 0},
8075         {0x51, 0x2, 0x2, 0, 0},
8076         {0x52, 0x2, 0x2, 0, 0},
8077         {0x53, 0xf7, 0xf7, 1, 1},
8078         {0x54, 0xb4, 0xb4, 0, 0},
8079         {0x55, 0xd2, 0xd2, 0, 0},
8080         {0x56, 0, 0, 0, 0},
8081         {0x57, 0, 0, 0, 0},
8082         {0x58, 0x4, 0x4, 0, 0},
8083         {0x59, 0x96, 0x96, 0, 0},
8084         {0x5A, 0x3e, 0x3e, 0, 0},
8085         {0x5B, 0x3e, 0x3e, 0, 0},
8086         {0x5C, 0x13, 0x13, 0, 0},
8087         {0x5D, 0x2, 0x2, 0, 0},
8088         {0x5E, 0, 0, 0, 0},
8089         {0x5F, 0x7, 0x7, 0, 0},
8090         {0x60, 0x7, 0x7, 1, 1},
8091         {0x61, 0x8, 0x8, 0, 0},
8092         {0x62, 0x3, 0x3, 0, 0},
8093         {0x63, 0, 0, 0, 0},
8094         {0x64, 0, 0, 0, 0},
8095         {0x65, 0, 0, 0, 0},
8096         {0x66, 0, 0, 0, 0},
8097         {0x67, 0, 0, 0, 0},
8098         {0x68, 0x40, 0x40, 0, 0},
8099         {0x69, 0, 0, 0, 0},
8100         {0x6A, 0, 0, 0, 0},
8101         {0x6B, 0, 0, 0, 0},
8102         {0x6C, 0, 0, 0, 0},
8103         {0x6D, 0x1, 0x1, 0, 0},
8104         {0x6E, 0, 0, 0, 0},
8105         {0x6F, 0, 0, 0, 0},
8106         {0x70, 0x60, 0x60, 0, 0},
8107         {0x71, 0x66, 0x66, 0, 0},
8108         {0x72, 0xc, 0xc, 0, 0},
8109         {0x73, 0x66, 0x66, 0, 0},
8110         {0x74, 0x8f, 0x8f, 1, 1},
8111         {0x75, 0, 0, 0, 0},
8112         {0x76, 0xcc, 0xcc, 0, 0},
8113         {0x77, 0x1, 0x1, 0, 0},
8114         {0x78, 0x66, 0x66, 0, 0},
8115         {0x79, 0x66, 0x66, 0, 0},
8116         {0x7A, 0, 0, 0, 0},
8117         {0x7B, 0, 0, 0, 0},
8118         {0x7C, 0, 0, 0, 0},
8119         {0x7D, 0, 0, 0, 0},
8120         {0x7E, 0, 0, 0, 0},
8121         {0x7F, 0, 0, 0, 0},
8122         {0x80, 0, 0, 0, 0},
8123         {0x81, 0, 0, 0, 0},
8124         {0x82, 0, 0, 0, 0},
8125         {0x83, 0, 0, 0, 0},
8126         {0x84, 0, 0, 0, 0},
8127         {0x85, 0xff, 0xff, 0, 0},
8128         {0x86, 0, 0, 0, 0},
8129         {0x87, 0, 0, 0, 0},
8130         {0x88, 0, 0, 0, 0},
8131         {0x89, 0, 0, 0, 0},
8132         {0x8A, 0, 0, 0, 0},
8133         {0x8B, 0, 0, 0, 0},
8134         {0x8C, 0, 0, 0, 0},
8135         {0x8D, 0, 0, 0, 0},
8136         {0x8E, 0, 0, 0, 0},
8137         {0x8F, 0, 0, 0, 0},
8138         {0x90, 0, 0, 0, 0},
8139         {0x91, 0, 0, 0, 0},
8140         {0x92, 0, 0, 0, 0},
8141         {0x93, 0, 0, 0, 0},
8142         {0x94, 0, 0, 0, 0},
8143         {0x95, 0, 0, 0, 0},
8144         {0x96, 0, 0, 0, 0},
8145         {0x97, 0, 0, 0, 0},
8146         {0x98, 0, 0, 0, 0},
8147         {0x99, 0, 0, 0, 0},
8148         {0x9A, 0, 0, 0, 0},
8149         {0x9B, 0, 0, 0, 0},
8150         {0x9C, 0, 0, 0, 0},
8151         {0x9D, 0, 0, 0, 0},
8152         {0x9E, 0, 0, 0, 0},
8153         {0x9F, 0x6, 0x6, 0, 0},
8154         {0xA0, 0x66, 0x66, 0, 0},
8155         {0xA1, 0x66, 0x66, 0, 0},
8156         {0xA2, 0x66, 0x66, 0, 0},
8157         {0xA3, 0x66, 0x66, 0, 0},
8158         {0xA4, 0x66, 0x66, 0, 0},
8159         {0xA5, 0x66, 0x66, 0, 0},
8160         {0xA6, 0x66, 0x66, 0, 0},
8161         {0xA7, 0x66, 0x66, 0, 0},
8162         {0xA8, 0x66, 0x66, 0, 0},
8163         {0xA9, 0x66, 0x66, 0, 0},
8164         {0xAA, 0x66, 0x66, 0, 0},
8165         {0xAB, 0x66, 0x66, 0, 0},
8166         {0xAC, 0x66, 0x66, 0, 0},
8167         {0xAD, 0x66, 0x66, 0, 0},
8168         {0xAE, 0x66, 0x66, 0, 0},
8169         {0xAF, 0x66, 0x66, 0, 0},
8170         {0xB0, 0x66, 0x66, 0, 0},
8171         {0xB1, 0x66, 0x66, 0, 0},
8172         {0xB2, 0x66, 0x66, 0, 0},
8173         {0xB3, 0xa, 0xa, 0, 0},
8174         {0xB4, 0, 0, 0, 0},
8175         {0xB5, 0, 0, 0, 0},
8176         {0xB6, 0, 0, 0, 0},
8177         {0xFFFF, 0, 0, 0, 0}
8178 };
8179
8180 static struct radio_regs regs_TX_2056[] = {
8181         {0x02, 0, 0, 0, 0},
8182         {0x03, 0, 0, 0, 0},
8183         {0x04, 0, 0, 0, 0},
8184         {0x05, 0, 0, 0, 0},
8185         {0x06, 0, 0, 0, 0},
8186         {0x07, 0, 0, 0, 0},
8187         {0x08, 0, 0, 0, 0},
8188         {0x09, 0, 0, 0, 0},
8189         {0x0A, 0, 0, 0, 0},
8190         {0x0B, 0, 0, 0, 0},
8191         {0x0C, 0, 0, 0, 0},
8192         {0x0D, 0, 0, 0, 0},
8193         {0x0E, 0, 0, 0, 0},
8194         {0x0F, 0, 0, 0, 0},
8195         {0x10, 0, 0, 0, 0},
8196         {0x11, 0, 0, 0, 0},
8197         {0x12, 0, 0, 0, 0},
8198         {0x13, 0, 0, 0, 0},
8199         {0x14, 0, 0, 0, 0},
8200         {0x15, 0, 0, 0, 0},
8201         {0x16, 0, 0, 0, 0},
8202         {0x17, 0, 0, 0, 0},
8203         {0x18, 0, 0, 0, 0},
8204         {0x19, 0, 0, 0, 0},
8205         {0x1A, 0, 0, 0, 0},
8206         {0x1B, 0, 0, 0, 0},
8207         {0x1C, 0, 0, 0, 0},
8208         {0x1D, 0, 0, 0, 0},
8209         {0x1E, 0, 0, 0, 0},
8210         {0x1F, 0, 0, 0, 0},
8211         {0x20, 0, 0, 0, 0},
8212         {0x21, 0x88, 0x88, 0, 0},
8213         {0x22, 0x88, 0x88, 0, 0},
8214         {0x23, 0x88, 0x88, 0, 0},
8215         {0x24, 0x88, 0x88, 0, 0},
8216         {0x25, 0xc, 0xc, 0, 0},
8217         {0x26, 0, 0, 0, 0},
8218         {0x27, 0x3, 0x3, 0, 0},
8219         {0x28, 0, 0, 0, 0},
8220         {0x29, 0x3, 0x3, 0, 0},
8221         {0x2A, 0x37, 0x37, 0, 0},
8222         {0x2B, 0x3, 0x3, 0, 0},
8223         {0x2C, 0, 0, 0, 0},
8224         {0x2D, 0, 0, 0, 0},
8225         {0x2E, 0x1, 0x1, 0, 0},
8226         {0x2F, 0x1, 0x1, 0, 0},
8227         {0x30, 0, 0, 0, 0},
8228         {0x31, 0, 0, 0, 0},
8229         {0x32, 0, 0, 0, 0},
8230         {0x33, 0x11, 0x11, 0, 0},
8231         {0x34, 0x11, 0x11, 0, 0},
8232         {0x35, 0, 0, 0, 0},
8233         {0x36, 0, 0, 0, 0},
8234         {0x37, 0x3, 0x3, 0, 0},
8235         {0x38, 0xf, 0xf, 0, 0},
8236         {0x39, 0, 0, 0, 0},
8237         {0x3A, 0x2d, 0x2d, 0, 0},
8238         {0x3B, 0, 0, 0, 0},
8239         {0x3C, 0x6e, 0x6e, 0, 0},
8240         {0x3D, 0xf0, 0xf0, 1, 1},
8241         {0x3E, 0, 0, 0, 0},
8242         {0x3F, 0, 0, 0, 0},
8243         {0x40, 0, 0, 0, 0},
8244         {0x41, 0x3, 0x3, 0, 0},
8245         {0x42, 0x3, 0x3, 0, 0},
8246         {0x43, 0, 0, 0, 0},
8247         {0x44, 0x1e, 0x1e, 0, 0},
8248         {0x45, 0, 0, 0, 0},
8249         {0x46, 0x6e, 0x6e, 0, 0},
8250         {0x47, 0xf0, 0xf0, 1, 1},
8251         {0x48, 0, 0, 0, 0},
8252         {0x49, 0x2, 0x2, 0, 0},
8253         {0x4A, 0xff, 0xff, 1, 1},
8254         {0x4B, 0xc, 0xc, 0, 0},
8255         {0x4C, 0, 0, 0, 0},
8256         {0x4D, 0x38, 0x38, 0, 0},
8257         {0x4E, 0x70, 0x70, 1, 1},
8258         {0x4F, 0x2, 0x2, 0, 0},
8259         {0x50, 0x88, 0x88, 0, 0},
8260         {0x51, 0xc, 0xc, 0, 0},
8261         {0x52, 0, 0, 0, 0},
8262         {0x53, 0x8, 0x8, 0, 0},
8263         {0x54, 0x70, 0x70, 1, 1},
8264         {0x55, 0x2, 0x2, 0, 0},
8265         {0x56, 0xff, 0xff, 1, 1},
8266         {0x57, 0, 0, 0, 0},
8267         {0x58, 0x83, 0x83, 0, 0},
8268         {0x59, 0x77, 0x77, 1, 1},
8269         {0x5A, 0, 0, 0, 0},
8270         {0x5B, 0x2, 0x2, 0, 0},
8271         {0x5C, 0x88, 0x88, 0, 0},
8272         {0x5D, 0, 0, 0, 0},
8273         {0x5E, 0x8, 0x8, 0, 0},
8274         {0x5F, 0x77, 0x77, 1, 1},
8275         {0x60, 0x1, 0x1, 0, 0},
8276         {0x61, 0, 0, 0, 0},
8277         {0x62, 0x7, 0x7, 0, 0},
8278         {0x63, 0, 0, 0, 0},
8279         {0x64, 0x7, 0x7, 0, 0},
8280         {0x65, 0, 0, 0, 0},
8281         {0x66, 0, 0, 0, 0},
8282         {0x67, 0x74, 0x74, 1, 1},
8283         {0x68, 0, 0, 0, 0},
8284         {0x69, 0xa, 0xa, 0, 0},
8285         {0x6A, 0, 0, 0, 0},
8286         {0x6B, 0, 0, 0, 0},
8287         {0x6C, 0, 0, 0, 0},
8288         {0x6D, 0, 0, 0, 0},
8289         {0x6E, 0, 0, 0, 0},
8290         {0x6F, 0, 0, 0, 0},
8291         {0x70, 0, 0, 0, 0},
8292         {0x71, 0x2, 0x2, 0, 0},
8293         {0x72, 0, 0, 0, 0},
8294         {0x73, 0, 0, 0, 0},
8295         {0x74, 0xe, 0xe, 0, 0},
8296         {0x75, 0xe, 0xe, 0, 0},
8297         {0x76, 0xe, 0xe, 0, 0},
8298         {0x77, 0x13, 0x13, 0, 0},
8299         {0x78, 0x13, 0x13, 0, 0},
8300         {0x79, 0x1b, 0x1b, 0, 0},
8301         {0x7A, 0x1b, 0x1b, 0, 0},
8302         {0x7B, 0x55, 0x55, 0, 0},
8303         {0x7C, 0x5b, 0x5b, 0, 0},
8304         {0x7D, 0, 0, 0, 0},
8305         {0x7E, 0, 0, 0, 0},
8306         {0x7F, 0, 0, 0, 0},
8307         {0x80, 0, 0, 0, 0},
8308         {0x81, 0, 0, 0, 0},
8309         {0x82, 0, 0, 0, 0},
8310         {0x83, 0, 0, 0, 0},
8311         {0x84, 0, 0, 0, 0},
8312         {0x85, 0, 0, 0, 0},
8313         {0x86, 0, 0, 0, 0},
8314         {0x87, 0, 0, 0, 0},
8315         {0x88, 0, 0, 0, 0},
8316         {0x89, 0, 0, 0, 0},
8317         {0x8A, 0, 0, 0, 0},
8318         {0x8B, 0, 0, 0, 0},
8319         {0x8C, 0, 0, 0, 0},
8320         {0x8D, 0, 0, 0, 0},
8321         {0x8E, 0, 0, 0, 0},
8322         {0x8F, 0, 0, 0, 0},
8323         {0x90, 0, 0, 0, 0},
8324         {0x91, 0, 0, 0, 0},
8325         {0x92, 0, 0, 0, 0},
8326         {0xFFFF, 0, 0, 0, 0}
8327 };
8328
8329 static struct radio_regs regs_RX_2056[] = {
8330         {0x02, 0, 0, 0, 0},
8331         {0x03, 0, 0, 0, 0},
8332         {0x04, 0, 0, 0, 0},
8333         {0x05, 0, 0, 0, 0},
8334         {0x06, 0, 0, 0, 0},
8335         {0x07, 0, 0, 0, 0},
8336         {0x08, 0, 0, 0, 0},
8337         {0x09, 0, 0, 0, 0},
8338         {0x0A, 0, 0, 0, 0},
8339         {0x0B, 0, 0, 0, 0},
8340         {0x0C, 0, 0, 0, 0},
8341         {0x0D, 0, 0, 0, 0},
8342         {0x0E, 0, 0, 0, 0},
8343         {0x0F, 0, 0, 0, 0},
8344         {0x10, 0, 0, 0, 0},
8345         {0x11, 0, 0, 0, 0},
8346         {0x12, 0, 0, 0, 0},
8347         {0x13, 0, 0, 0, 0},
8348         {0x14, 0, 0, 0, 0},
8349         {0x15, 0, 0, 0, 0},
8350         {0x16, 0, 0, 0, 0},
8351         {0x17, 0, 0, 0, 0},
8352         {0x18, 0, 0, 0, 0},
8353         {0x19, 0, 0, 0, 0},
8354         {0x1A, 0, 0, 0, 0},
8355         {0x1B, 0, 0, 0, 0},
8356         {0x1C, 0, 0, 0, 0},
8357         {0x1D, 0, 0, 0, 0},
8358         {0x1E, 0, 0, 0, 0},
8359         {0x1F, 0, 0, 0, 0},
8360         {0x20, 0x3, 0x3, 0, 0},
8361         {0x21, 0, 0, 0, 0},
8362         {0x22, 0, 0, 0, 0},
8363         {0x23, 0x90, 0x90, 0, 0},
8364         {0x24, 0x55, 0x55, 0, 0},
8365         {0x25, 0x15, 0x15, 0, 0},
8366         {0x26, 0x5, 0x5, 0, 0},
8367         {0x27, 0x15, 0x15, 0, 0},
8368         {0x28, 0x5, 0x5, 0, 0},
8369         {0x29, 0x20, 0x20, 0, 0},
8370         {0x2A, 0x11, 0x11, 0, 0},
8371         {0x2B, 0x90, 0x90, 0, 0},
8372         {0x2C, 0, 0, 0, 0},
8373         {0x2D, 0x88, 0x88, 0, 0},
8374         {0x2E, 0x32, 0x32, 0, 0},
8375         {0x2F, 0x77, 0x77, 0, 0},
8376         {0x30, 0x17, 0x17, 1, 1},
8377         {0x31, 0xff, 0xff, 1, 1},
8378         {0x32, 0x20, 0x20, 0, 0},
8379         {0x33, 0, 0, 0, 0},
8380         {0x34, 0x88, 0x88, 0, 0},
8381         {0x35, 0x32, 0x32, 0, 0},
8382         {0x36, 0x77, 0x77, 0, 0},
8383         {0x37, 0x17, 0x17, 1, 1},
8384         {0x38, 0xf0, 0xf0, 1, 1},
8385         {0x39, 0x20, 0x20, 0, 0},
8386         {0x3A, 0x8, 0x8, 0, 0},
8387         {0x3B, 0x99, 0x99, 0, 0},
8388         {0x3C, 0, 0, 0, 0},
8389         {0x3D, 0x44, 0x44, 1, 1},
8390         {0x3E, 0, 0, 0, 0},
8391         {0x3F, 0x44, 0x44, 0, 0},
8392         {0x40, 0xf, 0xf, 1, 1},
8393         {0x41, 0x6, 0x6, 0, 0},
8394         {0x42, 0x4, 0x4, 0, 0},
8395         {0x43, 0x50, 0x50, 1, 1},
8396         {0x44, 0x8, 0x8, 0, 0},
8397         {0x45, 0x99, 0x99, 0, 0},
8398         {0x46, 0, 0, 0, 0},
8399         {0x47, 0x11, 0x11, 0, 0},
8400         {0x48, 0, 0, 0, 0},
8401         {0x49, 0x44, 0x44, 0, 0},
8402         {0x4A, 0x7, 0x7, 0, 0},
8403         {0x4B, 0x6, 0x6, 0, 0},
8404         {0x4C, 0x4, 0x4, 0, 0},
8405         {0x4D, 0, 0, 0, 0},
8406         {0x4E, 0, 0, 0, 0},
8407         {0x4F, 0x66, 0x66, 0, 0},
8408         {0x50, 0x66, 0x66, 0, 0},
8409         {0x51, 0x57, 0x57, 0, 0},
8410         {0x52, 0x57, 0x57, 0, 0},
8411         {0x53, 0x44, 0x44, 0, 0},
8412         {0x54, 0, 0, 0, 0},
8413         {0x55, 0, 0, 0, 0},
8414         {0x56, 0x8, 0x8, 0, 0},
8415         {0x57, 0x8, 0x8, 0, 0},
8416         {0x58, 0x7, 0x7, 0, 0},
8417         {0x59, 0x22, 0x22, 0, 0},
8418         {0x5A, 0x22, 0x22, 0, 0},
8419         {0x5B, 0x2, 0x2, 0, 0},
8420         {0x5C, 0x23, 0x23, 0, 0},
8421         {0x5D, 0x7, 0x7, 0, 0},
8422         {0x5E, 0x55, 0x55, 0, 0},
8423         {0x5F, 0x23, 0x23, 0, 0},
8424         {0x60, 0x41, 0x41, 0, 0},
8425         {0x61, 0x1, 0x1, 0, 0},
8426         {0x62, 0xa, 0xa, 0, 0},
8427         {0x63, 0, 0, 0, 0},
8428         {0x64, 0, 0, 0, 0},
8429         {0x65, 0, 0, 0, 0},
8430         {0x66, 0, 0, 0, 0},
8431         {0x67, 0, 0, 0, 0},
8432         {0x68, 0, 0, 0, 0},
8433         {0x69, 0, 0, 0, 0},
8434         {0x6A, 0, 0, 0, 0},
8435         {0x6B, 0xc, 0xc, 0, 0},
8436         {0x6C, 0, 0, 0, 0},
8437         {0x6D, 0, 0, 0, 0},
8438         {0x6E, 0, 0, 0, 0},
8439         {0x6F, 0, 0, 0, 0},
8440         {0x70, 0, 0, 0, 0},
8441         {0x71, 0, 0, 0, 0},
8442         {0x72, 0x22, 0x22, 0, 0},
8443         {0x73, 0x22, 0x22, 0, 0},
8444         {0x74, 0x2, 0x2, 0, 0},
8445         {0x75, 0xa, 0xa, 0, 0},
8446         {0x76, 0x1, 0x1, 0, 0},
8447         {0x77, 0x22, 0x22, 0, 0},
8448         {0x78, 0x30, 0x30, 0, 0},
8449         {0x79, 0, 0, 0, 0},
8450         {0x7A, 0, 0, 0, 0},
8451         {0x7B, 0, 0, 0, 0},
8452         {0x7C, 0, 0, 0, 0},
8453         {0x7D, 0, 0, 0, 0},
8454         {0x7E, 0, 0, 0, 0},
8455         {0x7F, 0, 0, 0, 0},
8456         {0x80, 0, 0, 0, 0},
8457         {0x81, 0, 0, 0, 0},
8458         {0x82, 0, 0, 0, 0},
8459         {0x83, 0, 0, 0, 0},
8460         {0x84, 0, 0, 0, 0},
8461         {0x85, 0, 0, 0, 0},
8462         {0x86, 0, 0, 0, 0},
8463         {0x87, 0, 0, 0, 0},
8464         {0x88, 0, 0, 0, 0},
8465         {0x89, 0, 0, 0, 0},
8466         {0x8A, 0, 0, 0, 0},
8467         {0x8B, 0, 0, 0, 0},
8468         {0x8C, 0, 0, 0, 0},
8469         {0x8D, 0, 0, 0, 0},
8470         {0x8E, 0, 0, 0, 0},
8471         {0x8F, 0, 0, 0, 0},
8472         {0x90, 0, 0, 0, 0},
8473         {0x91, 0, 0, 0, 0},
8474         {0x92, 0, 0, 0, 0},
8475         {0x93, 0, 0, 0, 0},
8476         {0x94, 0, 0, 0, 0},
8477         {0xFFFF, 0, 0, 0, 0}
8478 };
8479
8480 static struct radio_regs regs_SYN_2056_A1[] = {
8481         {0x02, 0, 0, 0, 0},
8482         {0x03, 0, 0, 0, 0},
8483         {0x04, 0, 0, 0, 0},
8484         {0x05, 0, 0, 0, 0},
8485         {0x06, 0, 0, 0, 0},
8486         {0x07, 0, 0, 0, 0},
8487         {0x08, 0, 0, 0, 0},
8488         {0x09, 0x1, 0x1, 0, 0},
8489         {0x0A, 0, 0, 0, 0},
8490         {0x0B, 0, 0, 0, 0},
8491         {0x0C, 0, 0, 0, 0},
8492         {0x0D, 0, 0, 0, 0},
8493         {0x0E, 0, 0, 0, 0},
8494         {0x0F, 0, 0, 0, 0},
8495         {0x10, 0, 0, 0, 0},
8496         {0x11, 0, 0, 0, 0},
8497         {0x12, 0, 0, 0, 0},
8498         {0x13, 0, 0, 0, 0},
8499         {0x14, 0, 0, 0, 0},
8500         {0x15, 0, 0, 0, 0},
8501         {0x16, 0, 0, 0, 0},
8502         {0x17, 0, 0, 0, 0},
8503         {0x18, 0, 0, 0, 0},
8504         {0x19, 0, 0, 0, 0},
8505         {0x1A, 0, 0, 0, 0},
8506         {0x1B, 0, 0, 0, 0},
8507         {0x1C, 0, 0, 0, 0},
8508         {0x1D, 0, 0, 0, 0},
8509         {0x1E, 0, 0, 0, 0},
8510         {0x1F, 0, 0, 0, 0},
8511         {0x20, 0, 0, 0, 0},
8512         {0x21, 0, 0, 0, 0},
8513         {0x22, 0x60, 0x60, 0, 0},
8514         {0x23, 0x6, 0x6, 0, 0},
8515         {0x24, 0xc, 0xc, 0, 0},
8516         {0x25, 0, 0, 0, 0},
8517         {0x26, 0, 0, 0, 0},
8518         {0x27, 0, 0, 0, 0},
8519         {0x28, 0x1, 0x1, 0, 0},
8520         {0x29, 0, 0, 0, 0},
8521         {0x2A, 0, 0, 0, 0},
8522         {0x2B, 0, 0, 0, 0},
8523         {0x2C, 0, 0, 0, 0},
8524         {0x2D, 0, 0, 0, 0},
8525         {0x2E, 0xd, 0xd, 0, 0},
8526         {0x2F, 0x1f, 0x1f, 0, 0},
8527         {0x30, 0x15, 0x15, 0, 0},
8528         {0x31, 0xf, 0xf, 0, 0},
8529         {0x32, 0, 0, 0, 0},
8530         {0x33, 0, 0, 0, 0},
8531         {0x34, 0, 0, 0, 0},
8532         {0x35, 0, 0, 0, 0},
8533         {0x36, 0, 0, 0, 0},
8534         {0x37, 0, 0, 0, 0},
8535         {0x38, 0, 0, 0, 0},
8536         {0x39, 0, 0, 0, 0},
8537         {0x3A, 0, 0, 0, 0},
8538         {0x3B, 0, 0, 0, 0},
8539         {0x3C, 0x13, 0x13, 0, 0},
8540         {0x3D, 0xf, 0xf, 0, 0},
8541         {0x3E, 0x18, 0x18, 0, 0},
8542         {0x3F, 0, 0, 0, 0},
8543         {0x40, 0, 0, 0, 0},
8544         {0x41, 0x20, 0x20, 0, 0},
8545         {0x42, 0x20, 0x20, 0, 0},
8546         {0x43, 0, 0, 0, 0},
8547         {0x44, 0x77, 0x77, 0, 0},
8548         {0x45, 0x7, 0x7, 0, 0},
8549         {0x46, 0x1, 0x1, 0, 0},
8550         {0x47, 0x4, 0x4, 0, 0},
8551         {0x48, 0xf, 0xf, 0, 0},
8552         {0x49, 0x30, 0x30, 0, 0},
8553         {0x4A, 0x32, 0x32, 0, 0},
8554         {0x4B, 0xd, 0xd, 0, 0},
8555         {0x4C, 0xd, 0xd, 0, 0},
8556         {0x4D, 0x4, 0x4, 0, 0},
8557         {0x4E, 0x6, 0x6, 0, 0},
8558         {0x4F, 0x1, 0x1, 0, 0},
8559         {0x50, 0x1c, 0x1c, 0, 0},
8560         {0x51, 0x2, 0x2, 0, 0},
8561         {0x52, 0x2, 0x2, 0, 0},
8562         {0x53, 0xf7, 0xf7, 1, 1},
8563         {0x54, 0xb4, 0xb4, 0, 0},
8564         {0x55, 0xd2, 0xd2, 0, 0},
8565         {0x56, 0, 0, 0, 0},
8566         {0x57, 0, 0, 0, 0},
8567         {0x58, 0x4, 0x4, 0, 0},
8568         {0x59, 0x96, 0x96, 0, 0},
8569         {0x5A, 0x3e, 0x3e, 0, 0},
8570         {0x5B, 0x3e, 0x3e, 0, 0},
8571         {0x5C, 0x13, 0x13, 0, 0},
8572         {0x5D, 0x2, 0x2, 0, 0},
8573         {0x5E, 0, 0, 0, 0},
8574         {0x5F, 0x7, 0x7, 0, 0},
8575         {0x60, 0x7, 0x7, 1, 1},
8576         {0x61, 0x8, 0x8, 0, 0},
8577         {0x62, 0x3, 0x3, 0, 0},
8578         {0x63, 0, 0, 0, 0},
8579         {0x64, 0, 0, 0, 0},
8580         {0x65, 0, 0, 0, 0},
8581         {0x66, 0, 0, 0, 0},
8582         {0x67, 0, 0, 0, 0},
8583         {0x68, 0x40, 0x40, 0, 0},
8584         {0x69, 0, 0, 0, 0},
8585         {0x6A, 0, 0, 0, 0},
8586         {0x6B, 0, 0, 0, 0},
8587         {0x6C, 0, 0, 0, 0},
8588         {0x6D, 0x1, 0x1, 0, 0},
8589         {0x6E, 0, 0, 0, 0},
8590         {0x6F, 0, 0, 0, 0},
8591         {0x70, 0x60, 0x60, 0, 0},
8592         {0x71, 0x66, 0x66, 0, 0},
8593         {0x72, 0xc, 0xc, 0, 0},
8594         {0x73, 0x66, 0x66, 0, 0},
8595         {0x74, 0x8f, 0x8f, 1, 1},
8596         {0x75, 0, 0, 0, 0},
8597         {0x76, 0xcc, 0xcc, 0, 0},
8598         {0x77, 0x1, 0x1, 0, 0},
8599         {0x78, 0x66, 0x66, 0, 0},
8600         {0x79, 0x66, 0x66, 0, 0},
8601         {0x7A, 0, 0, 0, 0},
8602         {0x7B, 0, 0, 0, 0},
8603         {0x7C, 0, 0, 0, 0},
8604         {0x7D, 0, 0, 0, 0},
8605         {0x7E, 0, 0, 0, 0},
8606         {0x7F, 0, 0, 0, 0},
8607         {0x80, 0, 0, 0, 0},
8608         {0x81, 0, 0, 0, 0},
8609         {0x82, 0, 0, 0, 0},
8610         {0x83, 0, 0, 0, 0},
8611         {0x84, 0, 0, 0, 0},
8612         {0x85, 0xff, 0xff, 0, 0},
8613         {0x86, 0, 0, 0, 0},
8614         {0x87, 0, 0, 0, 0},
8615         {0x88, 0, 0, 0, 0},
8616         {0x89, 0, 0, 0, 0},
8617         {0x8A, 0, 0, 0, 0},
8618         {0x8B, 0, 0, 0, 0},
8619         {0x8C, 0, 0, 0, 0},
8620         {0x8D, 0, 0, 0, 0},
8621         {0x8E, 0, 0, 0, 0},
8622         {0x8F, 0, 0, 0, 0},
8623         {0x90, 0, 0, 0, 0},
8624         {0x91, 0, 0, 0, 0},
8625         {0x92, 0, 0, 0, 0},
8626         {0x93, 0, 0, 0, 0},
8627         {0x94, 0, 0, 0, 0},
8628         {0x95, 0, 0, 0, 0},
8629         {0x96, 0, 0, 0, 0},
8630         {0x97, 0, 0, 0, 0},
8631         {0x98, 0, 0, 0, 0},
8632         {0x99, 0, 0, 0, 0},
8633         {0x9A, 0, 0, 0, 0},
8634         {0x9B, 0, 0, 0, 0},
8635         {0x9C, 0, 0, 0, 0},
8636         {0x9D, 0, 0, 0, 0},
8637         {0x9E, 0, 0, 0, 0},
8638         {0x9F, 0x6, 0x6, 0, 0},
8639         {0xA0, 0x66, 0x66, 0, 0},
8640         {0xA1, 0x66, 0x66, 0, 0},
8641         {0xA2, 0x66, 0x66, 0, 0},
8642         {0xA3, 0x66, 0x66, 0, 0},
8643         {0xA4, 0x66, 0x66, 0, 0},
8644         {0xA5, 0x66, 0x66, 0, 0},
8645         {0xA6, 0x66, 0x66, 0, 0},
8646         {0xA7, 0x66, 0x66, 0, 0},
8647         {0xA8, 0x66, 0x66, 0, 0},
8648         {0xA9, 0x66, 0x66, 0, 0},
8649         {0xAA, 0x66, 0x66, 0, 0},
8650         {0xAB, 0x66, 0x66, 0, 0},
8651         {0xAC, 0x66, 0x66, 0, 0},
8652         {0xAD, 0x66, 0x66, 0, 0},
8653         {0xAE, 0x66, 0x66, 0, 0},
8654         {0xAF, 0x66, 0x66, 0, 0},
8655         {0xB0, 0x66, 0x66, 0, 0},
8656         {0xB1, 0x66, 0x66, 0, 0},
8657         {0xB2, 0x66, 0x66, 0, 0},
8658         {0xB3, 0xa, 0xa, 0, 0},
8659         {0xB4, 0, 0, 0, 0},
8660         {0xB5, 0, 0, 0, 0},
8661         {0xB6, 0, 0, 0, 0},
8662         {0xFFFF, 0, 0, 0, 0}
8663 };
8664
8665 static struct radio_regs regs_TX_2056_A1[] = {
8666         {0x02, 0, 0, 0, 0},
8667         {0x03, 0, 0, 0, 0},
8668         {0x04, 0, 0, 0, 0},
8669         {0x05, 0, 0, 0, 0},
8670         {0x06, 0, 0, 0, 0},
8671         {0x07, 0, 0, 0, 0},
8672         {0x08, 0, 0, 0, 0},
8673         {0x09, 0, 0, 0, 0},
8674         {0x0A, 0, 0, 0, 0},
8675         {0x0B, 0, 0, 0, 0},
8676         {0x0C, 0, 0, 0, 0},
8677         {0x0D, 0, 0, 0, 0},
8678         {0x0E, 0, 0, 0, 0},
8679         {0x0F, 0, 0, 0, 0},
8680         {0x10, 0, 0, 0, 0},
8681         {0x11, 0, 0, 0, 0},
8682         {0x12, 0, 0, 0, 0},
8683         {0x13, 0, 0, 0, 0},
8684         {0x14, 0, 0, 0, 0},
8685         {0x15, 0, 0, 0, 0},
8686         {0x16, 0, 0, 0, 0},
8687         {0x17, 0, 0, 0, 0},
8688         {0x18, 0, 0, 0, 0},
8689         {0x19, 0, 0, 0, 0},
8690         {0x1A, 0, 0, 0, 0},
8691         {0x1B, 0, 0, 0, 0},
8692         {0x1C, 0, 0, 0, 0},
8693         {0x1D, 0, 0, 0, 0},
8694         {0x1E, 0, 0, 0, 0},
8695         {0x1F, 0, 0, 0, 0},
8696         {0x20, 0, 0, 0, 0},
8697         {0x21, 0x88, 0x88, 0, 0},
8698         {0x22, 0x88, 0x88, 0, 0},
8699         {0x23, 0x88, 0x88, 0, 0},
8700         {0x24, 0x88, 0x88, 0, 0},
8701         {0x25, 0xc, 0xc, 0, 0},
8702         {0x26, 0, 0, 0, 0},
8703         {0x27, 0x3, 0x3, 0, 0},
8704         {0x28, 0, 0, 0, 0},
8705         {0x29, 0x3, 0x3, 0, 0},
8706         {0x2A, 0x37, 0x37, 0, 0},
8707         {0x2B, 0x3, 0x3, 0, 0},
8708         {0x2C, 0, 0, 0, 0},
8709         {0x2D, 0, 0, 0, 0},
8710         {0x2E, 0x1, 0x1, 0, 0},
8711         {0x2F, 0x1, 0x1, 0, 0},
8712         {0x30, 0, 0, 0, 0},
8713         {0x31, 0, 0, 0, 0},
8714         {0x32, 0, 0, 0, 0},
8715         {0x33, 0x11, 0x11, 0, 0},
8716         {0x34, 0x11, 0x11, 0, 0},
8717         {0x35, 0, 0, 0, 0},
8718         {0x36, 0, 0, 0, 0},
8719         {0x37, 0x3, 0x3, 0, 0},
8720         {0x38, 0xf, 0xf, 0, 0},
8721         {0x39, 0, 0, 0, 0},
8722         {0x3A, 0x2d, 0x2d, 0, 0},
8723         {0x3B, 0, 0, 0, 0},
8724         {0x3C, 0x6e, 0x6e, 0, 0},
8725         {0x3D, 0xf0, 0xf0, 1, 1},
8726         {0x3E, 0, 0, 0, 0},
8727         {0x3F, 0, 0, 0, 0},
8728         {0x40, 0, 0, 0, 0},
8729         {0x41, 0x3, 0x3, 0, 0},
8730         {0x42, 0x3, 0x3, 0, 0},
8731         {0x43, 0, 0, 0, 0},
8732         {0x44, 0x1e, 0x1e, 0, 0},
8733         {0x45, 0, 0, 0, 0},
8734         {0x46, 0x6e, 0x6e, 0, 0},
8735         {0x47, 0xf0, 0xf0, 1, 1},
8736         {0x48, 0, 0, 0, 0},
8737         {0x49, 0x2, 0x2, 0, 0},
8738         {0x4A, 0xff, 0xff, 1, 1},
8739         {0x4B, 0xc, 0xc, 0, 0},
8740         {0x4C, 0, 0, 0, 0},
8741         {0x4D, 0x38, 0x38, 0, 0},
8742         {0x4E, 0x70, 0x70, 1, 1},
8743         {0x4F, 0x2, 0x2, 0, 0},
8744         {0x50, 0x88, 0x88, 0, 0},
8745         {0x51, 0xc, 0xc, 0, 0},
8746         {0x52, 0, 0, 0, 0},
8747         {0x53, 0x8, 0x8, 0, 0},
8748         {0x54, 0x70, 0x70, 1, 1},
8749         {0x55, 0x2, 0x2, 0, 0},
8750         {0x56, 0xff, 0xff, 1, 1},
8751         {0x57, 0, 0, 0, 0},
8752         {0x58, 0x83, 0x83, 0, 0},
8753         {0x59, 0x77, 0x77, 1, 1},
8754         {0x5A, 0, 0, 0, 0},
8755         {0x5B, 0x2, 0x2, 0, 0},
8756         {0x5C, 0x88, 0x88, 0, 0},
8757         {0x5D, 0, 0, 0, 0},
8758         {0x5E, 0x8, 0x8, 0, 0},
8759         {0x5F, 0x77, 0x77, 1, 1},
8760         {0x60, 0x1, 0x1, 0, 0},
8761         {0x61, 0, 0, 0, 0},
8762         {0x62, 0x7, 0x7, 0, 0},
8763         {0x63, 0, 0, 0, 0},
8764         {0x64, 0x7, 0x7, 0, 0},
8765         {0x65, 0, 0, 0, 0},
8766         {0x66, 0, 0, 0, 0},
8767         {0x67, 0x72, 0x72, 1, 1},
8768         {0x68, 0, 0, 0, 0},
8769         {0x69, 0xa, 0xa, 0, 0},
8770         {0x6A, 0, 0, 0, 0},
8771         {0x6B, 0, 0, 0, 0},
8772         {0x6C, 0, 0, 0, 0},
8773         {0x6D, 0, 0, 0, 0},
8774         {0x6E, 0, 0, 0, 0},
8775         {0x6F, 0, 0, 0, 0},
8776         {0x70, 0, 0, 0, 0},
8777         {0x71, 0x2, 0x2, 0, 0},
8778         {0x72, 0, 0, 0, 0},
8779         {0x73, 0, 0, 0, 0},
8780         {0x74, 0xe, 0xe, 0, 0},
8781         {0x75, 0xe, 0xe, 0, 0},
8782         {0x76, 0xe, 0xe, 0, 0},
8783         {0x77, 0x13, 0x13, 0, 0},
8784         {0x78, 0x13, 0x13, 0, 0},
8785         {0x79, 0x1b, 0x1b, 0, 0},
8786         {0x7A, 0x1b, 0x1b, 0, 0},
8787         {0x7B, 0x55, 0x55, 0, 0},
8788         {0x7C, 0x5b, 0x5b, 0, 0},
8789         {0x7D, 0, 0, 0, 0},
8790         {0x7E, 0, 0, 0, 0},
8791         {0x7F, 0, 0, 0, 0},
8792         {0x80, 0, 0, 0, 0},
8793         {0x81, 0, 0, 0, 0},
8794         {0x82, 0, 0, 0, 0},
8795         {0x83, 0, 0, 0, 0},
8796         {0x84, 0, 0, 0, 0},
8797         {0x85, 0, 0, 0, 0},
8798         {0x86, 0, 0, 0, 0},
8799         {0x87, 0, 0, 0, 0},
8800         {0x88, 0, 0, 0, 0},
8801         {0x89, 0, 0, 0, 0},
8802         {0x8A, 0, 0, 0, 0},
8803         {0x8B, 0, 0, 0, 0},
8804         {0x8C, 0, 0, 0, 0},
8805         {0x8D, 0, 0, 0, 0},
8806         {0x8E, 0, 0, 0, 0},
8807         {0x8F, 0, 0, 0, 0},
8808         {0x90, 0, 0, 0, 0},
8809         {0x91, 0, 0, 0, 0},
8810         {0x92, 0, 0, 0, 0},
8811         {0xFFFF, 0, 0, 0, 0}
8812 };
8813
8814 static struct radio_regs regs_RX_2056_A1[] = {
8815         {0x02, 0, 0, 0, 0},
8816         {0x03, 0, 0, 0, 0},
8817         {0x04, 0, 0, 0, 0},
8818         {0x05, 0, 0, 0, 0},
8819         {0x06, 0, 0, 0, 0},
8820         {0x07, 0, 0, 0, 0},
8821         {0x08, 0, 0, 0, 0},
8822         {0x09, 0, 0, 0, 0},
8823         {0x0A, 0, 0, 0, 0},
8824         {0x0B, 0, 0, 0, 0},
8825         {0x0C, 0, 0, 0, 0},
8826         {0x0D, 0, 0, 0, 0},
8827         {0x0E, 0, 0, 0, 0},
8828         {0x0F, 0, 0, 0, 0},
8829         {0x10, 0, 0, 0, 0},
8830         {0x11, 0, 0, 0, 0},
8831         {0x12, 0, 0, 0, 0},
8832         {0x13, 0, 0, 0, 0},
8833         {0x14, 0, 0, 0, 0},
8834         {0x15, 0, 0, 0, 0},
8835         {0x16, 0, 0, 0, 0},
8836         {0x17, 0, 0, 0, 0},
8837         {0x18, 0, 0, 0, 0},
8838         {0x19, 0, 0, 0, 0},
8839         {0x1A, 0, 0, 0, 0},
8840         {0x1B, 0, 0, 0, 0},
8841         {0x1C, 0, 0, 0, 0},
8842         {0x1D, 0, 0, 0, 0},
8843         {0x1E, 0, 0, 0, 0},
8844         {0x1F, 0, 0, 0, 0},
8845         {0x20, 0x3, 0x3, 0, 0},
8846         {0x21, 0, 0, 0, 0},
8847         {0x22, 0, 0, 0, 0},
8848         {0x23, 0x90, 0x90, 0, 0},
8849         {0x24, 0x55, 0x55, 0, 0},
8850         {0x25, 0x15, 0x15, 0, 0},
8851         {0x26, 0x5, 0x5, 0, 0},
8852         {0x27, 0x15, 0x15, 0, 0},
8853         {0x28, 0x5, 0x5, 0, 0},
8854         {0x29, 0x20, 0x20, 0, 0},
8855         {0x2A, 0x11, 0x11, 0, 0},
8856         {0x2B, 0x90, 0x90, 0, 0},
8857         {0x2C, 0, 0, 0, 0},
8858         {0x2D, 0x88, 0x88, 0, 0},
8859         {0x2E, 0x32, 0x32, 0, 0},
8860         {0x2F, 0x77, 0x77, 0, 0},
8861         {0x30, 0x17, 0x17, 1, 1},
8862         {0x31, 0xff, 0xff, 1, 1},
8863         {0x32, 0x20, 0x20, 0, 0},
8864         {0x33, 0, 0, 0, 0},
8865         {0x34, 0x88, 0x88, 0, 0},
8866         {0x35, 0x32, 0x32, 0, 0},
8867         {0x36, 0x77, 0x77, 0, 0},
8868         {0x37, 0x17, 0x17, 1, 1},
8869         {0x38, 0xf0, 0xf0, 1, 1},
8870         {0x39, 0x20, 0x20, 0, 0},
8871         {0x3A, 0x8, 0x8, 0, 0},
8872         {0x3B, 0x55, 0x55, 1, 1},
8873         {0x3C, 0, 0, 0, 0},
8874         {0x3D, 0x44, 0x44, 1, 1},
8875         {0x3E, 0, 0, 0, 0},
8876         {0x3F, 0x44, 0x44, 0, 0},
8877         {0x40, 0xf, 0xf, 1, 1},
8878         {0x41, 0x6, 0x6, 0, 0},
8879         {0x42, 0x4, 0x4, 0, 0},
8880         {0x43, 0x50, 0x50, 1, 1},
8881         {0x44, 0x8, 0x8, 0, 0},
8882         {0x45, 0x55, 0x55, 1, 1},
8883         {0x46, 0, 0, 0, 0},
8884         {0x47, 0x11, 0x11, 0, 0},
8885         {0x48, 0, 0, 0, 0},
8886         {0x49, 0x44, 0x44, 0, 0},
8887         {0x4A, 0x7, 0x7, 0, 0},
8888         {0x4B, 0x6, 0x6, 0, 0},
8889         {0x4C, 0x4, 0x4, 0, 0},
8890         {0x4D, 0, 0, 0, 0},
8891         {0x4E, 0, 0, 0, 0},
8892         {0x4F, 0x26, 0x26, 1, 1},
8893         {0x50, 0x26, 0x26, 1, 1},
8894         {0x51, 0xf, 0xf, 1, 1},
8895         {0x52, 0xf, 0xf, 1, 1},
8896         {0x53, 0x44, 0x44, 0, 0},
8897         {0x54, 0, 0, 0, 0},
8898         {0x55, 0, 0, 0, 0},
8899         {0x56, 0x8, 0x8, 0, 0},
8900         {0x57, 0x8, 0x8, 0, 0},
8901         {0x58, 0x7, 0x7, 0, 0},
8902         {0x59, 0x22, 0x22, 0, 0},
8903         {0x5A, 0x22, 0x22, 0, 0},
8904         {0x5B, 0x2, 0x2, 0, 0},
8905         {0x5C, 0x2f, 0x2f, 1, 1},
8906         {0x5D, 0x7, 0x7, 0, 0},
8907         {0x5E, 0x55, 0x55, 0, 0},
8908         {0x5F, 0x23, 0x23, 0, 0},
8909         {0x60, 0x41, 0x41, 0, 0},
8910         {0x61, 0x1, 0x1, 0, 0},
8911         {0x62, 0xa, 0xa, 0, 0},
8912         {0x63, 0, 0, 0, 0},
8913         {0x64, 0, 0, 0, 0},
8914         {0x65, 0, 0, 0, 0},
8915         {0x66, 0, 0, 0, 0},
8916         {0x67, 0, 0, 0, 0},
8917         {0x68, 0, 0, 0, 0},
8918         {0x69, 0, 0, 0, 0},
8919         {0x6A, 0, 0, 0, 0},
8920         {0x6B, 0xc, 0xc, 0, 0},
8921         {0x6C, 0, 0, 0, 0},
8922         {0x6D, 0, 0, 0, 0},
8923         {0x6E, 0, 0, 0, 0},
8924         {0x6F, 0, 0, 0, 0},
8925         {0x70, 0, 0, 0, 0},
8926         {0x71, 0, 0, 0, 0},
8927         {0x72, 0x22, 0x22, 0, 0},
8928         {0x73, 0x22, 0x22, 0, 0},
8929         {0x74, 0, 0, 1, 1},
8930         {0x75, 0xa, 0xa, 0, 0},
8931         {0x76, 0x1, 0x1, 0, 0},
8932         {0x77, 0x22, 0x22, 0, 0},
8933         {0x78, 0x30, 0x30, 0, 0},
8934         {0x79, 0, 0, 0, 0},
8935         {0x7A, 0, 0, 0, 0},
8936         {0x7B, 0, 0, 0, 0},
8937         {0x7C, 0, 0, 0, 0},
8938         {0x7D, 0, 0, 0, 0},
8939         {0x7E, 0, 0, 0, 0},
8940         {0x7F, 0, 0, 0, 0},
8941         {0x80, 0, 0, 0, 0},
8942         {0x81, 0, 0, 0, 0},
8943         {0x82, 0, 0, 0, 0},
8944         {0x83, 0, 0, 0, 0},
8945         {0x84, 0, 0, 0, 0},
8946         {0x85, 0, 0, 0, 0},
8947         {0x86, 0, 0, 0, 0},
8948         {0x87, 0, 0, 0, 0},
8949         {0x88, 0, 0, 0, 0},
8950         {0x89, 0, 0, 0, 0},
8951         {0x8A, 0, 0, 0, 0},
8952         {0x8B, 0, 0, 0, 0},
8953         {0x8C, 0, 0, 0, 0},
8954         {0x8D, 0, 0, 0, 0},
8955         {0x8E, 0, 0, 0, 0},
8956         {0x8F, 0, 0, 0, 0},
8957         {0x90, 0, 0, 0, 0},
8958         {0x91, 0, 0, 0, 0},
8959         {0x92, 0, 0, 0, 0},
8960         {0x93, 0, 0, 0, 0},
8961         {0x94, 0, 0, 0, 0},
8962         {0xFFFF, 0, 0, 0, 0}
8963 };
8964
8965 static struct radio_regs regs_SYN_2056_rev5[] = {
8966         {0x02, 0, 0, 0, 0},
8967         {0x03, 0, 0, 0, 0},
8968         {0x04, 0, 0, 0, 0},
8969         {0x05, 0, 0, 0, 0},
8970         {0x06, 0, 0, 0, 0},
8971         {0x07, 0, 0, 0, 0},
8972         {0x08, 0, 0, 0, 0},
8973         {0x09, 0x1, 0x1, 0, 0},
8974         {0x0A, 0, 0, 0, 0},
8975         {0x0B, 0, 0, 0, 0},
8976         {0x0C, 0, 0, 0, 0},
8977         {0x0D, 0, 0, 0, 0},
8978         {0x0E, 0, 0, 0, 0},
8979         {0x0F, 0, 0, 0, 0},
8980         {0x10, 0, 0, 0, 0},
8981         {0x11, 0, 0, 0, 0},
8982         {0x12, 0, 0, 0, 0},
8983         {0x13, 0, 0, 0, 0},
8984         {0x14, 0, 0, 0, 0},
8985         {0x15, 0, 0, 0, 0},
8986         {0x16, 0, 0, 0, 0},
8987         {0x17, 0, 0, 0, 0},
8988         {0x18, 0, 0, 0, 0},
8989         {0x19, 0, 0, 0, 0},
8990         {0x1A, 0, 0, 0, 0},
8991         {0x1B, 0, 0, 0, 0},
8992         {0x1C, 0, 0, 0, 0},
8993         {0x1D, 0, 0, 0, 0},
8994         {0x1E, 0, 0, 0, 0},
8995         {0x1F, 0, 0, 0, 0},
8996         {0x20, 0, 0, 0, 0},
8997         {0x21, 0, 0, 0, 0},
8998         {0x22, 0x60, 0x60, 0, 0},
8999         {0x23, 0x6, 0x6, 0, 0},
9000         {0x24, 0xc, 0xc, 0, 0},
9001         {0x25, 0, 0, 0, 0},
9002         {0x26, 0, 0, 0, 0},
9003         {0x27, 0, 0, 0, 0},
9004         {0x28, 0x1, 0x1, 0, 0},
9005         {0x29, 0, 0, 0, 0},
9006         {0x2A, 0, 0, 0, 0},
9007         {0x2B, 0, 0, 0, 0},
9008         {0x2C, 0, 0, 0, 0},
9009         {0x2D, 0, 0, 0, 0},
9010         {0x2E, 0, 0, 0, 0},
9011         {0x2F, 0x1f, 0x1f, 0, 0},
9012         {0x30, 0x15, 0x15, 0, 0},
9013         {0x31, 0xf, 0xf, 0, 0},
9014         {0x32, 0, 0, 0, 0},
9015         {0x33, 0, 0, 0, 0},
9016         {0x34, 0, 0, 0, 0},
9017         {0x35, 0, 0, 0, 0},
9018         {0x36, 0, 0, 0, 0},
9019         {0x37, 0, 0, 0, 0},
9020         {0x38, 0, 0, 0, 0},
9021         {0x39, 0, 0, 0, 0},
9022         {0x3A, 0, 0, 0, 0},
9023         {0x3B, 0, 0, 0, 0},
9024         {0x3C, 0x13, 0x13, 0, 0},
9025         {0x3D, 0xf, 0xf, 0, 0},
9026         {0x3E, 0x18, 0x18, 0, 0},
9027         {0x3F, 0, 0, 0, 0},
9028         {0x40, 0, 0, 0, 0},
9029         {0x41, 0x20, 0x20, 0, 0},
9030         {0x42, 0x20, 0x20, 0, 0},
9031         {0x43, 0, 0, 0, 0},
9032         {0x44, 0x77, 0x77, 0, 0},
9033         {0x45, 0x7, 0x7, 0, 0},
9034         {0x46, 0x1, 0x1, 0, 0},
9035         {0x47, 0x4, 0x4, 0, 0},
9036         {0x48, 0xf, 0xf, 0, 0},
9037         {0x49, 0x30, 0x30, 0, 0},
9038         {0x4A, 0x32, 0x32, 0, 0},
9039         {0x4B, 0xd, 0xd, 0, 0},
9040         {0x4C, 0xd, 0xd, 0, 0},
9041         {0x4D, 0x4, 0x4, 0, 0},
9042         {0x4E, 0x6, 0x6, 0, 0},
9043         {0x4F, 0x1, 0x1, 0, 0},
9044         {0x50, 0x1c, 0x1c, 0, 0},
9045         {0x51, 0x2, 0x2, 0, 0},
9046         {0x52, 0x2, 0x2, 0, 0},
9047         {0x53, 0xf7, 0xf7, 1, 1},
9048         {0x54, 0xb4, 0xb4, 0, 0},
9049         {0x55, 0xd2, 0xd2, 0, 0},
9050         {0x56, 0, 0, 0, 0},
9051         {0x57, 0, 0, 0, 0},
9052         {0x58, 0x4, 0x4, 0, 0},
9053         {0x59, 0x96, 0x96, 0, 0},
9054         {0x5A, 0x3e, 0x3e, 0, 0},
9055         {0x5B, 0x3e, 0x3e, 0, 0},
9056         {0x5C, 0x13, 0x13, 0, 0},
9057         {0x5D, 0x2, 0x2, 0, 0},
9058         {0x5E, 0, 0, 0, 0},
9059         {0x5F, 0x7, 0x7, 0, 0},
9060         {0x60, 0x7, 0x7, 1, 1},
9061         {0x61, 0x8, 0x8, 0, 0},
9062         {0x62, 0x3, 0x3, 0, 0},
9063         {0x63, 0, 0, 0, 0},
9064         {0x64, 0, 0, 0, 0},
9065         {0x65, 0, 0, 0, 0},
9066         {0x66, 0, 0, 0, 0},
9067         {0x67, 0, 0, 0, 0},
9068         {0x68, 0x40, 0x40, 0, 0},
9069         {0x69, 0, 0, 0, 0},
9070         {0x6A, 0, 0, 0, 0},
9071         {0x6B, 0, 0, 0, 0},
9072         {0x6C, 0, 0, 0, 0},
9073         {0x6D, 0x1, 0x1, 0, 0},
9074         {0x6E, 0, 0, 0, 0},
9075         {0x6F, 0, 0, 0, 0},
9076         {0x70, 0x60, 0x60, 0, 0},
9077         {0x71, 0x66, 0x66, 0, 0},
9078         {0x72, 0xc, 0xc, 0, 0},
9079         {0x73, 0x66, 0x66, 0, 0},
9080         {0x74, 0x8f, 0x8f, 1, 1},
9081         {0x75, 0, 0, 0, 0},
9082         {0x76, 0xcc, 0xcc, 0, 0},
9083         {0x77, 0x1, 0x1, 0, 0},
9084         {0x78, 0x66, 0x66, 0, 0},
9085         {0x79, 0x66, 0x66, 0, 0},
9086         {0x7A, 0, 0, 0, 0},
9087         {0x7B, 0, 0, 0, 0},
9088         {0x7C, 0, 0, 0, 0},
9089         {0x7D, 0, 0, 0, 0},
9090         {0x7E, 0, 0, 0, 0},
9091         {0x7F, 0, 0, 0, 0},
9092         {0x80, 0, 0, 0, 0},
9093         {0x81, 0, 0, 0, 0},
9094         {0x82, 0, 0, 0, 0},
9095         {0x83, 0, 0, 0, 0},
9096         {0x84, 0, 0, 0, 0},
9097         {0x85, 0xff, 0xff, 0, 0},
9098         {0x86, 0, 0, 0, 0},
9099         {0x87, 0, 0, 0, 0},
9100         {0x88, 0, 0, 0, 0},
9101         {0x89, 0, 0, 0, 0},
9102         {0x8A, 0, 0, 0, 0},
9103         {0x8B, 0, 0, 0, 0},
9104         {0x8C, 0, 0, 0, 0},
9105         {0x8D, 0, 0, 0, 0},
9106         {0x8E, 0, 0, 0, 0},
9107         {0x8F, 0, 0, 0, 0},
9108         {0x90, 0, 0, 0, 0},
9109         {0x91, 0, 0, 0, 0},
9110         {0x92, 0, 0, 0, 0},
9111         {0x93, 0, 0, 0, 0},
9112         {0x94, 0, 0, 0, 0},
9113         {0x95, 0, 0, 0, 0},
9114         {0x96, 0, 0, 0, 0},
9115         {0x97, 0, 0, 0, 0},
9116         {0x98, 0, 0, 0, 0},
9117         {0x99, 0, 0, 0, 0},
9118         {0x9A, 0, 0, 0, 0},
9119         {0x9B, 0, 0, 0, 0},
9120         {0x9C, 0, 0, 0, 0},
9121         {0x9D, 0, 0, 0, 0},
9122         {0x9E, 0, 0, 0, 0},
9123         {0x9F, 0x6, 0x6, 0, 0},
9124         {0xA0, 0x66, 0x66, 0, 0},
9125         {0xA1, 0x66, 0x66, 0, 0},
9126         {0xA2, 0x66, 0x66, 0, 0},
9127         {0xA3, 0x66, 0x66, 0, 0},
9128         {0xA4, 0x66, 0x66, 0, 0},
9129         {0xA5, 0x66, 0x66, 0, 0},
9130         {0xA6, 0x66, 0x66, 0, 0},
9131         {0xA7, 0x66, 0x66, 0, 0},
9132         {0xA8, 0x66, 0x66, 0, 0},
9133         {0xA9, 0x66, 0x66, 0, 0},
9134         {0xAA, 0x66, 0x66, 0, 0},
9135         {0xAB, 0x66, 0x66, 0, 0},
9136         {0xAC, 0x66, 0x66, 0, 0},
9137         {0xAD, 0x66, 0x66, 0, 0},
9138         {0xAE, 0x66, 0x66, 0, 0},
9139         {0xAF, 0x66, 0x66, 0, 0},
9140         {0xB0, 0x66, 0x66, 0, 0},
9141         {0xB1, 0x66, 0x66, 0, 0},
9142         {0xB2, 0x66, 0x66, 0, 0},
9143         {0xB3, 0xa, 0xa, 0, 0},
9144         {0xB4, 0, 0, 0, 0},
9145         {0xB5, 0, 0, 0, 0},
9146         {0xB6, 0, 0, 0, 0},
9147         {0xFFFF, 0, 0, 0, 0}
9148 };
9149
9150 static struct radio_regs regs_TX_2056_rev5[] = {
9151         {0x02, 0, 0, 0, 0},
9152         {0x03, 0, 0, 0, 0},
9153         {0x04, 0, 0, 0, 0},
9154         {0x05, 0, 0, 0, 0},
9155         {0x06, 0, 0, 0, 0},
9156         {0x07, 0, 0, 0, 0},
9157         {0x08, 0, 0, 0, 0},
9158         {0x09, 0, 0, 0, 0},
9159         {0x0A, 0, 0, 0, 0},
9160         {0x0B, 0, 0, 0, 0},
9161         {0x0C, 0, 0, 0, 0},
9162         {0x0D, 0, 0, 0, 0},
9163         {0x0E, 0, 0, 0, 0},
9164         {0x0F, 0, 0, 0, 0},
9165         {0x10, 0, 0, 0, 0},
9166         {0x11, 0, 0, 0, 0},
9167         {0x12, 0, 0, 0, 0},
9168         {0x13, 0, 0, 0, 0},
9169         {0x14, 0, 0, 0, 0},
9170         {0x15, 0, 0, 0, 0},
9171         {0x16, 0, 0, 0, 0},
9172         {0x17, 0, 0, 0, 0},
9173         {0x18, 0, 0, 0, 0},
9174         {0x19, 0, 0, 0, 0},
9175         {0x1A, 0, 0, 0, 0},
9176         {0x1B, 0, 0, 0, 0},
9177         {0x1C, 0, 0, 0, 0},
9178         {0x1D, 0, 0, 0, 0},
9179         {0x1E, 0, 0, 0, 0},
9180         {0x1F, 0, 0, 0, 0},
9181         {0x20, 0, 0, 0, 0},
9182         {0x21, 0x88, 0x88, 0, 0},
9183         {0x22, 0x88, 0x88, 0, 0},
9184         {0x23, 0x88, 0x88, 0, 0},
9185         {0x24, 0x88, 0x88, 0, 0},
9186         {0x25, 0xc, 0xc, 0, 0},
9187         {0x26, 0, 0, 0, 0},
9188         {0x27, 0x3, 0x3, 0, 0},
9189         {0x28, 0, 0, 0, 0},
9190         {0x29, 0x3, 0x3, 0, 0},
9191         {0x2A, 0x37, 0x37, 0, 0},
9192         {0x2B, 0x3, 0x3, 0, 0},
9193         {0x2C, 0, 0, 0, 0},
9194         {0x2D, 0, 0, 0, 0},
9195         {0x2E, 0x1, 0x1, 0, 0},
9196         {0x2F, 0x1, 0x1, 0, 0},
9197         {0x30, 0, 0, 0, 0},
9198         {0x31, 0, 0, 0, 0},
9199         {0x32, 0, 0, 0, 0},
9200         {0x33, 0x11, 0x11, 0, 0},
9201         {0x34, 0x11, 0x11, 0, 0},
9202         {0x35, 0, 0, 0, 0},
9203         {0x36, 0, 0, 0, 0},
9204         {0x37, 0x3, 0x3, 0, 0},
9205         {0x38, 0xf, 0xf, 0, 0},
9206         {0x39, 0, 0, 0, 0},
9207         {0x3A, 0x2d, 0x2d, 0, 0},
9208         {0x3B, 0, 0, 0, 0},
9209         {0x3C, 0x6e, 0x6e, 0, 0},
9210         {0x3D, 0xf0, 0xf0, 1, 1},
9211         {0x3E, 0, 0, 0, 0},
9212         {0x3F, 0, 0, 0, 0},
9213         {0x40, 0, 0, 0, 0},
9214         {0x41, 0x3, 0x3, 0, 0},
9215         {0x42, 0x3, 0x3, 0, 0},
9216         {0x43, 0, 0, 0, 0},
9217         {0x44, 0x1e, 0x1e, 0, 0},
9218         {0x45, 0, 0, 0, 0},
9219         {0x46, 0x6e, 0x6e, 0, 0},
9220         {0x47, 0xf0, 0xf0, 1, 1},
9221         {0x48, 0, 0, 0, 0},
9222         {0x49, 0x2, 0x2, 0, 0},
9223         {0x4A, 0xff, 0xff, 1, 1},
9224         {0x4B, 0xc, 0xc, 0, 0},
9225         {0x4C, 0, 0, 0, 0},
9226         {0x4D, 0x38, 0x38, 0, 0},
9227         {0x4E, 0x70, 0x70, 1, 1},
9228         {0x4F, 0x2, 0x2, 0, 0},
9229         {0x50, 0x88, 0x88, 0, 0},
9230         {0x51, 0xc, 0xc, 0, 0},
9231         {0x52, 0, 0, 0, 0},
9232         {0x53, 0x8, 0x8, 0, 0},
9233         {0x54, 0x70, 0x70, 1, 1},
9234         {0x55, 0x2, 0x2, 0, 0},
9235         {0x56, 0xff, 0xff, 1, 1},
9236         {0x57, 0, 0, 0, 0},
9237         {0x58, 0x83, 0x83, 0, 0},
9238         {0x59, 0x77, 0x77, 1, 1},
9239         {0x5A, 0, 0, 0, 0},
9240         {0x5B, 0x2, 0x2, 0, 0},
9241         {0x5C, 0x88, 0x88, 0, 0},
9242         {0x5D, 0, 0, 0, 0},
9243         {0x5E, 0x8, 0x8, 0, 0},
9244         {0x5F, 0x77, 0x77, 1, 1},
9245         {0x60, 0x1, 0x1, 0, 0},
9246         {0x61, 0, 0, 0, 0},
9247         {0x62, 0x7, 0x7, 0, 0},
9248         {0x63, 0, 0, 0, 0},
9249         {0x64, 0x7, 0x7, 0, 0},
9250         {0x65, 0, 0, 0, 0},
9251         {0x66, 0, 0, 0, 0},
9252         {0x67, 0, 0, 1, 1},
9253         {0x68, 0, 0, 0, 0},
9254         {0x69, 0xa, 0xa, 0, 0},
9255         {0x6A, 0, 0, 0, 0},
9256         {0x6B, 0, 0, 0, 0},
9257         {0x6C, 0, 0, 0, 0},
9258         {0x6D, 0, 0, 0, 0},
9259         {0x6E, 0, 0, 0, 0},
9260         {0x6F, 0, 0, 0, 0},
9261         {0x70, 0, 0, 0, 0},
9262         {0x71, 0x2, 0x2, 0, 0},
9263         {0x72, 0, 0, 0, 0},
9264         {0x73, 0, 0, 0, 0},
9265         {0x74, 0xe, 0xe, 0, 0},
9266         {0x75, 0xe, 0xe, 0, 0},
9267         {0x76, 0xe, 0xe, 0, 0},
9268         {0x77, 0x13, 0x13, 0, 0},
9269         {0x78, 0x13, 0x13, 0, 0},
9270         {0x79, 0x1b, 0x1b, 0, 0},
9271         {0x7A, 0x1b, 0x1b, 0, 0},
9272         {0x7B, 0x55, 0x55, 0, 0},
9273         {0x7C, 0x5b, 0x5b, 0, 0},
9274         {0x7D, 0, 0, 0, 0},
9275         {0x7E, 0, 0, 0, 0},
9276         {0x7F, 0, 0, 0, 0},
9277         {0x80, 0, 0, 0, 0},
9278         {0x81, 0, 0, 0, 0},
9279         {0x82, 0, 0, 0, 0},
9280         {0x83, 0, 0, 0, 0},
9281         {0x84, 0, 0, 0, 0},
9282         {0x85, 0, 0, 0, 0},
9283         {0x86, 0, 0, 0, 0},
9284         {0x87, 0, 0, 0, 0},
9285         {0x88, 0, 0, 0, 0},
9286         {0x89, 0, 0, 0, 0},
9287         {0x8A, 0, 0, 0, 0},
9288         {0x8B, 0, 0, 0, 0},
9289         {0x8C, 0, 0, 0, 0},
9290         {0x8D, 0, 0, 0, 0},
9291         {0x8E, 0, 0, 0, 0},
9292         {0x8F, 0, 0, 0, 0},
9293         {0x90, 0, 0, 0, 0},
9294         {0x91, 0, 0, 0, 0},
9295         {0x92, 0, 0, 0, 0},
9296         {0x93, 0x70, 0x70, 0, 0},
9297         {0x94, 0x70, 0x70, 0, 0},
9298         {0x95, 0x71, 0x71, 1, 1},
9299         {0x96, 0x71, 0x71, 1, 1},
9300         {0x97, 0x72, 0x72, 1, 1},
9301         {0x98, 0x73, 0x73, 1, 1},
9302         {0x99, 0x74, 0x74, 1, 1},
9303         {0x9A, 0x75, 0x75, 1, 1},
9304         {0xFFFF, 0, 0, 0, 0}
9305 };
9306
9307 static struct radio_regs regs_RX_2056_rev5[] = {
9308         {0x02, 0, 0, 0, 0},
9309         {0x03, 0, 0, 0, 0},
9310         {0x04, 0, 0, 0, 0},
9311         {0x05, 0, 0, 0, 0},
9312         {0x06, 0, 0, 0, 0},
9313         {0x07, 0, 0, 0, 0},
9314         {0x08, 0, 0, 0, 0},
9315         {0x09, 0, 0, 0, 0},
9316         {0x0A, 0, 0, 0, 0},
9317         {0x0B, 0, 0, 0, 0},
9318         {0x0C, 0, 0, 0, 0},
9319         {0x0D, 0, 0, 0, 0},
9320         {0x0E, 0, 0, 0, 0},
9321         {0x0F, 0, 0, 0, 0},
9322         {0x10, 0, 0, 0, 0},
9323         {0x11, 0, 0, 0, 0},
9324         {0x12, 0, 0, 0, 0},
9325         {0x13, 0, 0, 0, 0},
9326         {0x14, 0, 0, 0, 0},
9327         {0x15, 0, 0, 0, 0},
9328         {0x16, 0, 0, 0, 0},
9329         {0x17, 0, 0, 0, 0},
9330         {0x18, 0, 0, 0, 0},
9331         {0x19, 0, 0, 0, 0},
9332         {0x1A, 0, 0, 0, 0},
9333         {0x1B, 0, 0, 0, 0},
9334         {0x1C, 0, 0, 0, 0},
9335         {0x1D, 0, 0, 0, 0},
9336         {0x1E, 0, 0, 0, 0},
9337         {0x1F, 0, 0, 0, 0},
9338         {0x20, 0x3, 0x3, 0, 0},
9339         {0x21, 0, 0, 0, 0},
9340         {0x22, 0, 0, 0, 0},
9341         {0x23, 0x90, 0x90, 0, 0},
9342         {0x24, 0x55, 0x55, 0, 0},
9343         {0x25, 0x15, 0x15, 0, 0},
9344         {0x26, 0x5, 0x5, 0, 0},
9345         {0x27, 0x15, 0x15, 0, 0},
9346         {0x28, 0x5, 0x5, 0, 0},
9347         {0x29, 0x20, 0x20, 0, 0},
9348         {0x2A, 0x11, 0x11, 0, 0},
9349         {0x2B, 0x90, 0x90, 0, 0},
9350         {0x2C, 0, 0, 0, 0},
9351         {0x2D, 0x88, 0x88, 0, 0},
9352         {0x2E, 0x32, 0x32, 0, 0},
9353         {0x2F, 0x77, 0x77, 0, 0},
9354         {0x30, 0x17, 0x17, 1, 1},
9355         {0x31, 0xff, 0xff, 1, 1},
9356         {0x32, 0x20, 0x20, 0, 0},
9357         {0x33, 0, 0, 0, 0},
9358         {0x34, 0x88, 0x88, 0, 0},
9359         {0x35, 0x32, 0x32, 0, 0},
9360         {0x36, 0x77, 0x77, 0, 0},
9361         {0x37, 0x17, 0x17, 1, 1},
9362         {0x38, 0xf0, 0xf0, 1, 1},
9363         {0x39, 0x20, 0x20, 0, 0},
9364         {0x3A, 0x8, 0x8, 0, 0},
9365         {0x3B, 0x55, 0x55, 1, 1},
9366         {0x3C, 0, 0, 0, 0},
9367         {0x3D, 0x88, 0x88, 1, 1},
9368         {0x3E, 0, 0, 0, 0},
9369         {0x3F, 0, 0, 1, 1},
9370         {0x40, 0x7, 0x7, 1, 1},
9371         {0x41, 0x6, 0x6, 0, 0},
9372         {0x42, 0x4, 0x4, 0, 0},
9373         {0x43, 0, 0, 0, 0},
9374         {0x44, 0x8, 0x8, 0, 0},
9375         {0x45, 0x55, 0x55, 1, 1},
9376         {0x46, 0, 0, 0, 0},
9377         {0x47, 0x11, 0x11, 0, 0},
9378         {0x48, 0, 0, 0, 0},
9379         {0x49, 0, 0, 1, 1},
9380         {0x4A, 0x7, 0x7, 0, 0},
9381         {0x4B, 0x6, 0x6, 0, 0},
9382         {0x4C, 0x4, 0x4, 0, 0},
9383         {0x4D, 0, 0, 0, 0},
9384         {0x4E, 0, 0, 0, 0},
9385         {0x4F, 0x26, 0x26, 1, 1},
9386         {0x50, 0x26, 0x26, 1, 1},
9387         {0x51, 0xf, 0xf, 1, 1},
9388         {0x52, 0xf, 0xf, 1, 1},
9389         {0x53, 0x44, 0x44, 0, 0},
9390         {0x54, 0, 0, 0, 0},
9391         {0x55, 0, 0, 0, 0},
9392         {0x56, 0x8, 0x8, 0, 0},
9393         {0x57, 0x8, 0x8, 0, 0},
9394         {0x58, 0x7, 0x7, 0, 0},
9395         {0x59, 0x22, 0x22, 0, 0},
9396         {0x5A, 0x22, 0x22, 0, 0},
9397         {0x5B, 0x2, 0x2, 0, 0},
9398         {0x5C, 0x4, 0x4, 1, 1},
9399         {0x5D, 0x7, 0x7, 0, 0},
9400         {0x5E, 0x55, 0x55, 0, 0},
9401         {0x5F, 0x23, 0x23, 0, 0},
9402         {0x60, 0x41, 0x41, 0, 0},
9403         {0x61, 0x1, 0x1, 0, 0},
9404         {0x62, 0xa, 0xa, 0, 0},
9405         {0x63, 0, 0, 0, 0},
9406         {0x64, 0, 0, 0, 0},
9407         {0x65, 0, 0, 0, 0},
9408         {0x66, 0, 0, 0, 0},
9409         {0x67, 0, 0, 0, 0},
9410         {0x68, 0, 0, 0, 0},
9411         {0x69, 0, 0, 0, 0},
9412         {0x6A, 0, 0, 0, 0},
9413         {0x6B, 0xc, 0xc, 0, 0},
9414         {0x6C, 0, 0, 0, 0},
9415         {0x6D, 0, 0, 0, 0},
9416         {0x6E, 0, 0, 0, 0},
9417         {0x6F, 0, 0, 0, 0},
9418         {0x70, 0, 0, 0, 0},
9419         {0x71, 0, 0, 0, 0},
9420         {0x72, 0x22, 0x22, 0, 0},
9421         {0x73, 0x22, 0x22, 0, 0},
9422         {0x74, 0, 0, 1, 1},
9423         {0x75, 0xa, 0xa, 0, 0},
9424         {0x76, 0x1, 0x1, 0, 0},
9425         {0x77, 0x22, 0x22, 0, 0},
9426         {0x78, 0x30, 0x30, 0, 0},
9427         {0x79, 0, 0, 0, 0},
9428         {0x7A, 0, 0, 0, 0},
9429         {0x7B, 0, 0, 0, 0},
9430         {0x7C, 0, 0, 0, 0},
9431         {0x7D, 0, 0, 0, 0},
9432         {0x7E, 0, 0, 0, 0},
9433         {0x7F, 0, 0, 0, 0},
9434         {0x80, 0, 0, 0, 0},
9435         {0x81, 0, 0, 0, 0},
9436         {0x82, 0, 0, 0, 0},
9437         {0x83, 0, 0, 0, 0},
9438         {0x84, 0, 0, 0, 0},
9439         {0x85, 0, 0, 0, 0},
9440         {0x86, 0, 0, 0, 0},
9441         {0x87, 0, 0, 0, 0},
9442         {0x88, 0, 0, 0, 0},
9443         {0x89, 0, 0, 0, 0},
9444         {0x8A, 0, 0, 0, 0},
9445         {0x8B, 0, 0, 0, 0},
9446         {0x8C, 0, 0, 0, 0},
9447         {0x8D, 0, 0, 0, 0},
9448         {0x8E, 0, 0, 0, 0},
9449         {0x8F, 0, 0, 0, 0},
9450         {0x90, 0, 0, 0, 0},
9451         {0x91, 0, 0, 0, 0},
9452         {0x92, 0, 0, 0, 0},
9453         {0x93, 0, 0, 0, 0},
9454         {0x94, 0, 0, 0, 0},
9455         {0xFFFF, 0, 0, 0, 0}
9456 };
9457
9458 static struct radio_regs regs_SYN_2056_rev6[] = {
9459         {0x02, 0, 0, 0, 0},
9460         {0x03, 0, 0, 0, 0},
9461         {0x04, 0, 0, 0, 0},
9462         {0x05, 0, 0, 0, 0},
9463         {0x06, 0, 0, 0, 0},
9464         {0x07, 0, 0, 0, 0},
9465         {0x08, 0, 0, 0, 0},
9466         {0x09, 0x1, 0x1, 0, 0},
9467         {0x0A, 0, 0, 0, 0},
9468         {0x0B, 0, 0, 0, 0},
9469         {0x0C, 0, 0, 0, 0},
9470         {0x0D, 0, 0, 0, 0},
9471         {0x0E, 0, 0, 0, 0},
9472         {0x0F, 0, 0, 0, 0},
9473         {0x10, 0, 0, 0, 0},
9474         {0x11, 0, 0, 0, 0},
9475         {0x12, 0, 0, 0, 0},
9476         {0x13, 0, 0, 0, 0},
9477         {0x14, 0, 0, 0, 0},
9478         {0x15, 0, 0, 0, 0},
9479         {0x16, 0, 0, 0, 0},
9480         {0x17, 0, 0, 0, 0},
9481         {0x18, 0, 0, 0, 0},
9482         {0x19, 0, 0, 0, 0},
9483         {0x1A, 0, 0, 0, 0},
9484         {0x1B, 0, 0, 0, 0},
9485         {0x1C, 0, 0, 0, 0},
9486         {0x1D, 0, 0, 0, 0},
9487         {0x1E, 0, 0, 0, 0},
9488         {0x1F, 0, 0, 0, 0},
9489         {0x20, 0, 0, 0, 0},
9490         {0x21, 0, 0, 0, 0},
9491         {0x22, 0x60, 0x60, 0, 0},
9492         {0x23, 0x6, 0x6, 0, 0},
9493         {0x24, 0xc, 0xc, 0, 0},
9494         {0x25, 0, 0, 0, 0},
9495         {0x26, 0, 0, 0, 0},
9496         {0x27, 0, 0, 0, 0},
9497         {0x28, 0x1, 0x1, 0, 0},
9498         {0x29, 0, 0, 0, 0},
9499         {0x2A, 0, 0, 0, 0},
9500         {0x2B, 0, 0, 0, 0},
9501         {0x2C, 0, 0, 0, 0},
9502         {0x2D, 0, 0, 0, 0},
9503         {0x2E, 0, 0, 0, 0},
9504         {0x2F, 0x1f, 0x1f, 0, 0},
9505         {0x30, 0x15, 0x15, 0, 0},
9506         {0x31, 0xf, 0xf, 0, 0},
9507         {0x32, 0, 0, 0, 0},
9508         {0x33, 0, 0, 0, 0},
9509         {0x34, 0, 0, 0, 0},
9510         {0x35, 0, 0, 0, 0},
9511         {0x36, 0, 0, 0, 0},
9512         {0x37, 0, 0, 0, 0},
9513         {0x38, 0, 0, 0, 0},
9514         {0x39, 0, 0, 0, 0},
9515         {0x3A, 0, 0, 0, 0},
9516         {0x3B, 0, 0, 0, 0},
9517         {0x3C, 0x13, 0x13, 0, 0},
9518         {0x3D, 0xf, 0xf, 0, 0},
9519         {0x3E, 0x18, 0x18, 0, 0},
9520         {0x3F, 0, 0, 0, 0},
9521         {0x40, 0, 0, 0, 0},
9522         {0x41, 0x20, 0x20, 0, 0},
9523         {0x42, 0x20, 0x20, 0, 0},
9524         {0x43, 0, 0, 0, 0},
9525         {0x44, 0x77, 0x77, 0, 0},
9526         {0x45, 0x7, 0x7, 0, 0},
9527         {0x46, 0x1, 0x1, 0, 0},
9528         {0x47, 0x4, 0x4, 0, 0},
9529         {0x48, 0xf, 0xf, 0, 0},
9530         {0x49, 0x30, 0x30, 0, 0},
9531         {0x4A, 0x32, 0x32, 0, 0},
9532         {0x4B, 0xd, 0xd, 0, 0},
9533         {0x4C, 0xd, 0xd, 0, 0},
9534         {0x4D, 0x4, 0x4, 0, 0},
9535         {0x4E, 0x6, 0x6, 0, 0},
9536         {0x4F, 0x1, 0x1, 0, 0},
9537         {0x50, 0x1c, 0x1c, 0, 0},
9538         {0x51, 0x2, 0x2, 0, 0},
9539         {0x52, 0x2, 0x2, 0, 0},
9540         {0x53, 0xf7, 0xf7, 1, 1},
9541         {0x54, 0xb4, 0xb4, 0, 0},
9542         {0x55, 0xd2, 0xd2, 0, 0},
9543         {0x56, 0, 0, 0, 0},
9544         {0x57, 0, 0, 0, 0},
9545         {0x58, 0x4, 0x4, 0, 0},
9546         {0x59, 0x96, 0x96, 0, 0},
9547         {0x5A, 0x3e, 0x3e, 0, 0},
9548         {0x5B, 0x3e, 0x3e, 0, 0},
9549         {0x5C, 0x13, 0x13, 0, 0},
9550         {0x5D, 0x2, 0x2, 0, 0},
9551         {0x5E, 0, 0, 0, 0},
9552         {0x5F, 0x7, 0x7, 0, 0},
9553         {0x60, 0x7, 0x7, 1, 1},
9554         {0x61, 0x8, 0x8, 0, 0},
9555         {0x62, 0x3, 0x3, 0, 0},
9556         {0x63, 0, 0, 0, 0},
9557         {0x64, 0, 0, 0, 0},
9558         {0x65, 0, 0, 0, 0},
9559         {0x66, 0, 0, 0, 0},
9560         {0x67, 0, 0, 0, 0},
9561         {0x68, 0x40, 0x40, 0, 0},
9562         {0x69, 0, 0, 0, 0},
9563         {0x6A, 0, 0, 0, 0},
9564         {0x6B, 0, 0, 0, 0},
9565         {0x6C, 0, 0, 0, 0},
9566         {0x6D, 0x1, 0x1, 0, 0},
9567         {0x6E, 0, 0, 0, 0},
9568         {0x6F, 0, 0, 0, 0},
9569         {0x70, 0x60, 0x60, 0, 0},
9570         {0x71, 0x66, 0x66, 0, 0},
9571         {0x72, 0xc, 0xc, 0, 0},
9572         {0x73, 0x66, 0x66, 0, 0},
9573         {0x74, 0x8f, 0x8f, 1, 1},
9574         {0x75, 0, 0, 0, 0},
9575         {0x76, 0xcc, 0xcc, 0, 0},
9576         {0x77, 0x1, 0x1, 0, 0},
9577         {0x78, 0x66, 0x66, 0, 0},
9578         {0x79, 0x66, 0x66, 0, 0},
9579         {0x7A, 0, 0, 0, 0},
9580         {0x7B, 0, 0, 0, 0},
9581         {0x7C, 0, 0, 0, 0},
9582         {0x7D, 0, 0, 0, 0},
9583         {0x7E, 0, 0, 0, 0},
9584         {0x7F, 0, 0, 0, 0},
9585         {0x80, 0, 0, 0, 0},
9586         {0x81, 0, 0, 0, 0},
9587         {0x82, 0, 0, 0, 0},
9588         {0x83, 0, 0, 0, 0},
9589         {0x84, 0, 0, 0, 0},
9590         {0x85, 0xff, 0xff, 0, 0},
9591         {0x86, 0, 0, 0, 0},
9592         {0x87, 0, 0, 0, 0},
9593         {0x88, 0, 0, 0, 0},
9594         {0x89, 0, 0, 0, 0},
9595         {0x8A, 0, 0, 0, 0},
9596         {0x8B, 0, 0, 0, 0},
9597         {0x8C, 0, 0, 0, 0},
9598         {0x8D, 0, 0, 0, 0},
9599         {0x8E, 0, 0, 0, 0},
9600         {0x8F, 0, 0, 0, 0},
9601         {0x90, 0, 0, 0, 0},
9602         {0x91, 0, 0, 0, 0},
9603         {0x92, 0, 0, 0, 0},
9604         {0x93, 0, 0, 0, 0},
9605         {0x94, 0, 0, 0, 0},
9606         {0x95, 0, 0, 0, 0},
9607         {0x96, 0, 0, 0, 0},
9608         {0x97, 0, 0, 0, 0},
9609         {0x98, 0, 0, 0, 0},
9610         {0x99, 0, 0, 0, 0},
9611         {0x9A, 0, 0, 0, 0},
9612         {0x9B, 0, 0, 0, 0},
9613         {0x9C, 0, 0, 0, 0},
9614         {0x9D, 0, 0, 0, 0},
9615         {0x9E, 0, 0, 0, 0},
9616         {0x9F, 0x6, 0x6, 0, 0},
9617         {0xA0, 0x66, 0x66, 0, 0},
9618         {0xA1, 0x66, 0x66, 0, 0},
9619         {0xA2, 0x66, 0x66, 0, 0},
9620         {0xA3, 0x66, 0x66, 0, 0},
9621         {0xA4, 0x66, 0x66, 0, 0},
9622         {0xA5, 0x66, 0x66, 0, 0},
9623         {0xA6, 0x66, 0x66, 0, 0},
9624         {0xA7, 0x66, 0x66, 0, 0},
9625         {0xA8, 0x66, 0x66, 0, 0},
9626         {0xA9, 0x66, 0x66, 0, 0},
9627         {0xAA, 0x66, 0x66, 0, 0},
9628         {0xAB, 0x66, 0x66, 0, 0},
9629         {0xAC, 0x66, 0x66, 0, 0},
9630         {0xAD, 0x66, 0x66, 0, 0},
9631         {0xAE, 0x66, 0x66, 0, 0},
9632         {0xAF, 0x66, 0x66, 0, 0},
9633         {0xB0, 0x66, 0x66, 0, 0},
9634         {0xB1, 0x66, 0x66, 0, 0},
9635         {0xB2, 0x66, 0x66, 0, 0},
9636         {0xB3, 0xa, 0xa, 0, 0},
9637         {0xB4, 0, 0, 0, 0},
9638         {0xB5, 0, 0, 0, 0},
9639         {0xB6, 0, 0, 0, 0},
9640         {0xFFFF, 0, 0, 0, 0}
9641 };
9642
9643 static struct radio_regs regs_TX_2056_rev6[] = {
9644         {0x02, 0, 0, 0, 0},
9645         {0x03, 0, 0, 0, 0},
9646         {0x04, 0, 0, 0, 0},
9647         {0x05, 0, 0, 0, 0},
9648         {0x06, 0, 0, 0, 0},
9649         {0x07, 0, 0, 0, 0},
9650         {0x08, 0, 0, 0, 0},
9651         {0x09, 0, 0, 0, 0},
9652         {0x0A, 0, 0, 0, 0},
9653         {0x0B, 0, 0, 0, 0},
9654         {0x0C, 0, 0, 0, 0},
9655         {0x0D, 0, 0, 0, 0},
9656         {0x0E, 0, 0, 0, 0},
9657         {0x0F, 0, 0, 0, 0},
9658         {0x10, 0, 0, 0, 0},
9659         {0x11, 0, 0, 0, 0},
9660         {0x12, 0, 0, 0, 0},
9661         {0x13, 0, 0, 0, 0},
9662         {0x14, 0, 0, 0, 0},
9663         {0x15, 0, 0, 0, 0},
9664         {0x16, 0, 0, 0, 0},
9665         {0x17, 0, 0, 0, 0},
9666         {0x18, 0, 0, 0, 0},
9667         {0x19, 0, 0, 0, 0},
9668         {0x1A, 0, 0, 0, 0},
9669         {0x1B, 0, 0, 0, 0},
9670         {0x1C, 0, 0, 0, 0},
9671         {0x1D, 0, 0, 0, 0},
9672         {0x1E, 0, 0, 0, 0},
9673         {0x1F, 0, 0, 0, 0},
9674         {0x20, 0, 0, 0, 0},
9675         {0x21, 0x88, 0x88, 0, 0},
9676         {0x22, 0x88, 0x88, 0, 0},
9677         {0x23, 0x88, 0x88, 0, 0},
9678         {0x24, 0x88, 0x88, 0, 0},
9679         {0x25, 0xc, 0xc, 0, 0},
9680         {0x26, 0, 0, 0, 0},
9681         {0x27, 0x3, 0x3, 0, 0},
9682         {0x28, 0, 0, 0, 0},
9683         {0x29, 0x3, 0x3, 0, 0},
9684         {0x2A, 0x37, 0x37, 0, 0},
9685         {0x2B, 0x3, 0x3, 0, 0},
9686         {0x2C, 0, 0, 0, 0},
9687         {0x2D, 0, 0, 0, 0},
9688         {0x2E, 0x1, 0x1, 0, 0},
9689         {0x2F, 0x1, 0x1, 0, 0},
9690         {0x30, 0, 0, 0, 0},
9691         {0x31, 0, 0, 0, 0},
9692         {0x32, 0, 0, 0, 0},
9693         {0x33, 0x11, 0x11, 0, 0},
9694         {0x34, 0xee, 0xee, 1, 1},
9695         {0x35, 0, 0, 0, 0},
9696         {0x36, 0, 0, 0, 0},
9697         {0x37, 0x3, 0x3, 0, 0},
9698         {0x38, 0x50, 0x50, 1, 1},
9699         {0x39, 0, 0, 0, 0},
9700         {0x3A, 0x50, 0x50, 1, 1},
9701         {0x3B, 0, 0, 0, 0},
9702         {0x3C, 0x6e, 0x6e, 0, 0},
9703         {0x3D, 0xf0, 0xf0, 1, 1},
9704         {0x3E, 0, 0, 0, 0},
9705         {0x3F, 0, 0, 0, 0},
9706         {0x40, 0, 0, 0, 0},
9707         {0x41, 0x3, 0x3, 0, 0},
9708         {0x42, 0x3, 0x3, 0, 0},
9709         {0x43, 0, 0, 0, 0},
9710         {0x44, 0x1e, 0x1e, 0, 0},
9711         {0x45, 0, 0, 0, 0},
9712         {0x46, 0x6e, 0x6e, 0, 0},
9713         {0x47, 0xf0, 0xf0, 1, 1},
9714         {0x48, 0, 0, 0, 0},
9715         {0x49, 0x2, 0x2, 0, 0},
9716         {0x4A, 0xff, 0xff, 1, 1},
9717         {0x4B, 0xc, 0xc, 0, 0},
9718         {0x4C, 0, 0, 0, 0},
9719         {0x4D, 0x38, 0x38, 0, 0},
9720         {0x4E, 0x70, 0x70, 1, 1},
9721         {0x4F, 0x2, 0x2, 0, 0},
9722         {0x50, 0x88, 0x88, 0, 0},
9723         {0x51, 0xc, 0xc, 0, 0},
9724         {0x52, 0, 0, 0, 0},
9725         {0x53, 0x8, 0x8, 0, 0},
9726         {0x54, 0x70, 0x70, 1, 1},
9727         {0x55, 0x2, 0x2, 0, 0},
9728         {0x56, 0xff, 0xff, 1, 1},
9729         {0x57, 0, 0, 0, 0},
9730         {0x58, 0x83, 0x83, 0, 0},
9731         {0x59, 0x77, 0x77, 1, 1},
9732         {0x5A, 0, 0, 0, 0},
9733         {0x5B, 0x2, 0x2, 0, 0},
9734         {0x5C, 0x88, 0x88, 0, 0},
9735         {0x5D, 0, 0, 0, 0},
9736         {0x5E, 0x8, 0x8, 0, 0},
9737         {0x5F, 0x77, 0x77, 1, 1},
9738         {0x60, 0x1, 0x1, 0, 0},
9739         {0x61, 0, 0, 0, 0},
9740         {0x62, 0x7, 0x7, 0, 0},
9741         {0x63, 0, 0, 0, 0},
9742         {0x64, 0x7, 0x7, 0, 0},
9743         {0x65, 0, 0, 0, 0},
9744         {0x66, 0, 0, 0, 0},
9745         {0x67, 0, 0, 1, 1},
9746         {0x68, 0, 0, 0, 0},
9747         {0x69, 0xa, 0xa, 0, 0},
9748         {0x6A, 0, 0, 0, 0},
9749         {0x6B, 0, 0, 0, 0},
9750         {0x6C, 0, 0, 0, 0},
9751         {0x6D, 0, 0, 0, 0},
9752         {0x6E, 0, 0, 0, 0},
9753         {0x6F, 0, 0, 0, 0},
9754         {0x70, 0, 0, 0, 0},
9755         {0x71, 0x2, 0x2, 0, 0},
9756         {0x72, 0, 0, 0, 0},
9757         {0x73, 0, 0, 0, 0},
9758         {0x74, 0xe, 0xe, 0, 0},
9759         {0x75, 0xe, 0xe, 0, 0},
9760         {0x76, 0xe, 0xe, 0, 0},
9761         {0x77, 0x13, 0x13, 0, 0},
9762         {0x78, 0x13, 0x13, 0, 0},
9763         {0x79, 0x1b, 0x1b, 0, 0},
9764         {0x7A, 0x1b, 0x1b, 0, 0},
9765         {0x7B, 0x55, 0x55, 0, 0},
9766         {0x7C, 0x5b, 0x5b, 0, 0},
9767         {0x7D, 0x30, 0x30, 1, 1},
9768         {0x7E, 0, 0, 0, 0},
9769         {0x7F, 0, 0, 0, 0},
9770         {0x80, 0, 0, 0, 0},
9771         {0x81, 0, 0, 0, 0},
9772         {0x82, 0, 0, 0, 0},
9773         {0x83, 0, 0, 0, 0},
9774         {0x84, 0, 0, 0, 0},
9775         {0x85, 0, 0, 0, 0},
9776         {0x86, 0, 0, 0, 0},
9777         {0x87, 0, 0, 0, 0},
9778         {0x88, 0, 0, 0, 0},
9779         {0x89, 0, 0, 0, 0},
9780         {0x8A, 0, 0, 0, 0},
9781         {0x8B, 0, 0, 0, 0},
9782         {0x8C, 0, 0, 0, 0},
9783         {0x8D, 0, 0, 0, 0},
9784         {0x8E, 0, 0, 0, 0},
9785         {0x8F, 0, 0, 0, 0},
9786         {0x90, 0, 0, 0, 0},
9787         {0x91, 0, 0, 0, 0},
9788         {0x92, 0, 0, 0, 0},
9789         {0x93, 0x70, 0x70, 0, 0},
9790         {0x94, 0x70, 0x70, 0, 0},
9791         {0x95, 0x70, 0x70, 0, 0},
9792         {0x96, 0x70, 0x70, 0, 0},
9793         {0x97, 0x70, 0x70, 0, 0},
9794         {0x98, 0x70, 0x70, 0, 0},
9795         {0x99, 0x70, 0x70, 0, 0},
9796         {0x9A, 0x70, 0x70, 0, 0},
9797         {0xFFFF, 0, 0, 0, 0}
9798 };
9799
9800 static struct radio_regs regs_RX_2056_rev6[] = {
9801         {0x02, 0, 0, 0, 0},
9802         {0x03, 0, 0, 0, 0},
9803         {0x04, 0, 0, 0, 0},
9804         {0x05, 0, 0, 0, 0},
9805         {0x06, 0, 0, 0, 0},
9806         {0x07, 0, 0, 0, 0},
9807         {0x08, 0, 0, 0, 0},
9808         {0x09, 0, 0, 0, 0},
9809         {0x0A, 0, 0, 0, 0},
9810         {0x0B, 0, 0, 0, 0},
9811         {0x0C, 0, 0, 0, 0},
9812         {0x0D, 0, 0, 0, 0},
9813         {0x0E, 0, 0, 0, 0},
9814         {0x0F, 0, 0, 0, 0},
9815         {0x10, 0, 0, 0, 0},
9816         {0x11, 0, 0, 0, 0},
9817         {0x12, 0, 0, 0, 0},
9818         {0x13, 0, 0, 0, 0},
9819         {0x14, 0, 0, 0, 0},
9820         {0x15, 0, 0, 0, 0},
9821         {0x16, 0, 0, 0, 0},
9822         {0x17, 0, 0, 0, 0},
9823         {0x18, 0, 0, 0, 0},
9824         {0x19, 0, 0, 0, 0},
9825         {0x1A, 0, 0, 0, 0},
9826         {0x1B, 0, 0, 0, 0},
9827         {0x1C, 0, 0, 0, 0},
9828         {0x1D, 0, 0, 0, 0},
9829         {0x1E, 0, 0, 0, 0},
9830         {0x1F, 0, 0, 0, 0},
9831         {0x20, 0x3, 0x3, 0, 0},
9832         {0x21, 0, 0, 0, 0},
9833         {0x22, 0, 0, 0, 0},
9834         {0x23, 0x90, 0x90, 0, 0},
9835         {0x24, 0x55, 0x55, 0, 0},
9836         {0x25, 0x15, 0x15, 0, 0},
9837         {0x26, 0x5, 0x5, 0, 0},
9838         {0x27, 0x15, 0x15, 0, 0},
9839         {0x28, 0x5, 0x5, 0, 0},
9840         {0x29, 0x20, 0x20, 0, 0},
9841         {0x2A, 0x11, 0x11, 0, 0},
9842         {0x2B, 0x90, 0x90, 0, 0},
9843         {0x2C, 0, 0, 0, 0},
9844         {0x2D, 0x88, 0x88, 0, 0},
9845         {0x2E, 0x32, 0x32, 0, 0},
9846         {0x2F, 0x77, 0x77, 0, 0},
9847         {0x30, 0x17, 0x17, 1, 1},
9848         {0x31, 0xff, 0xff, 1, 1},
9849         {0x32, 0x20, 0x20, 0, 0},
9850         {0x33, 0, 0, 0, 0},
9851         {0x34, 0x88, 0x88, 0, 0},
9852         {0x35, 0x32, 0x32, 0, 0},
9853         {0x36, 0x77, 0x77, 0, 0},
9854         {0x37, 0x17, 0x17, 1, 1},
9855         {0x38, 0xf0, 0xf0, 1, 1},
9856         {0x39, 0x20, 0x20, 0, 0},
9857         {0x3A, 0x8, 0x8, 0, 0},
9858         {0x3B, 0x55, 0x55, 1, 1},
9859         {0x3C, 0, 0, 0, 0},
9860         {0x3D, 0x88, 0x88, 1, 1},
9861         {0x3E, 0, 0, 0, 0},
9862         {0x3F, 0x44, 0x44, 0, 0},
9863         {0x40, 0x7, 0x7, 1, 1},
9864         {0x41, 0x6, 0x6, 0, 0},
9865         {0x42, 0x4, 0x4, 0, 0},
9866         {0x43, 0, 0, 0, 0},
9867         {0x44, 0x8, 0x8, 0, 0},
9868         {0x45, 0x55, 0x55, 1, 1},
9869         {0x46, 0, 0, 0, 0},
9870         {0x47, 0x11, 0x11, 0, 0},
9871         {0x48, 0, 0, 0, 0},
9872         {0x49, 0x44, 0x44, 0, 0},
9873         {0x4A, 0x7, 0x7, 0, 0},
9874         {0x4B, 0x6, 0x6, 0, 0},
9875         {0x4C, 0x4, 0x4, 0, 0},
9876         {0x4D, 0, 0, 0, 0},
9877         {0x4E, 0, 0, 0, 0},
9878         {0x4F, 0x26, 0x26, 1, 1},
9879         {0x50, 0x26, 0x26, 1, 1},
9880         {0x51, 0xf, 0xf, 1, 1},
9881         {0x52, 0xf, 0xf, 1, 1},
9882         {0x53, 0x44, 0x44, 0, 0},
9883         {0x54, 0, 0, 0, 0},
9884         {0x55, 0, 0, 0, 0},
9885         {0x56, 0x8, 0x8, 0, 0},
9886         {0x57, 0x8, 0x8, 0, 0},
9887         {0x58, 0x7, 0x7, 0, 0},
9888         {0x59, 0x22, 0x22, 0, 0},
9889         {0x5A, 0x22, 0x22, 0, 0},
9890         {0x5B, 0x2, 0x2, 0, 0},
9891         {0x5C, 0x4, 0x4, 1, 1},
9892         {0x5D, 0x7, 0x7, 0, 0},
9893         {0x5E, 0x55, 0x55, 0, 0},
9894         {0x5F, 0x23, 0x23, 0, 0},
9895         {0x60, 0x41, 0x41, 0, 0},
9896         {0x61, 0x1, 0x1, 0, 0},
9897         {0x62, 0xa, 0xa, 0, 0},
9898         {0x63, 0, 0, 0, 0},
9899         {0x64, 0, 0, 0, 0},
9900         {0x65, 0, 0, 0, 0},
9901         {0x66, 0, 0, 0, 0},
9902         {0x67, 0, 0, 0, 0},
9903         {0x68, 0, 0, 0, 0},
9904         {0x69, 0, 0, 0, 0},
9905         {0x6A, 0, 0, 0, 0},
9906         {0x6B, 0xc, 0xc, 0, 0},
9907         {0x6C, 0, 0, 0, 0},
9908         {0x6D, 0, 0, 0, 0},
9909         {0x6E, 0, 0, 0, 0},
9910         {0x6F, 0, 0, 0, 0},
9911         {0x70, 0, 0, 0, 0},
9912         {0x71, 0, 0, 0, 0},
9913         {0x72, 0x22, 0x22, 0, 0},
9914         {0x73, 0x22, 0x22, 0, 0},
9915         {0x74, 0, 0, 1, 1},
9916         {0x75, 0xa, 0xa, 0, 0},
9917         {0x76, 0x1, 0x1, 0, 0},
9918         {0x77, 0x22, 0x22, 0, 0},
9919         {0x78, 0x30, 0x30, 0, 0},
9920         {0x79, 0, 0, 0, 0},
9921         {0x7A, 0, 0, 0, 0},
9922         {0x7B, 0, 0, 0, 0},
9923         {0x7C, 0, 0, 0, 0},
9924         {0x7D, 0x5, 0x5, 1, 1},
9925         {0x7E, 0, 0, 0, 0},
9926         {0x7F, 0, 0, 0, 0},
9927         {0x80, 0, 0, 0, 0},
9928         {0x81, 0, 0, 0, 0},
9929         {0x82, 0, 0, 0, 0},
9930         {0x83, 0, 0, 0, 0},
9931         {0x84, 0, 0, 0, 0},
9932         {0x85, 0, 0, 0, 0},
9933         {0x86, 0, 0, 0, 0},
9934         {0x87, 0, 0, 0, 0},
9935         {0x88, 0, 0, 0, 0},
9936         {0x89, 0, 0, 0, 0},
9937         {0x8A, 0, 0, 0, 0},
9938         {0x8B, 0, 0, 0, 0},
9939         {0x8C, 0, 0, 0, 0},
9940         {0x8D, 0, 0, 0, 0},
9941         {0x8E, 0, 0, 0, 0},
9942         {0x8F, 0, 0, 0, 0},
9943         {0x90, 0, 0, 0, 0},
9944         {0x91, 0, 0, 0, 0},
9945         {0x92, 0, 0, 0, 0},
9946         {0x93, 0, 0, 0, 0},
9947         {0x94, 0, 0, 0, 0},
9948         {0xFFFF, 0, 0, 0, 0}
9949 };
9950
9951 static struct radio_regs regs_SYN_2056_rev7[] = {
9952         {0x02, 0, 0, 0, 0},
9953         {0x03, 0, 0, 0, 0},
9954         {0x04, 0, 0, 0, 0},
9955         {0x05, 0, 0, 0, 0},
9956         {0x06, 0, 0, 0, 0},
9957         {0x07, 0, 0, 0, 0},
9958         {0x08, 0, 0, 0, 0},
9959         {0x09, 0x1, 0x1, 0, 0},
9960         {0x0A, 0, 0, 0, 0},
9961         {0x0B, 0, 0, 0, 0},
9962         {0x0C, 0, 0, 0, 0},
9963         {0x0D, 0, 0, 0, 0},
9964         {0x0E, 0, 0, 0, 0},
9965         {0x0F, 0, 0, 0, 0},
9966         {0x10, 0, 0, 0, 0},
9967         {0x11, 0, 0, 0, 0},
9968         {0x12, 0, 0, 0, 0},
9969         {0x13, 0, 0, 0, 0},
9970         {0x14, 0, 0, 0, 0},
9971         {0x15, 0, 0, 0, 0},
9972         {0x16, 0, 0, 0, 0},
9973         {0x17, 0, 0, 0, 0},
9974         {0x18, 0, 0, 0, 0},
9975         {0x19, 0, 0, 0, 0},
9976         {0x1A, 0, 0, 0, 0},
9977         {0x1B, 0, 0, 0, 0},
9978         {0x1C, 0, 0, 0, 0},
9979         {0x1D, 0, 0, 0, 0},
9980         {0x1E, 0, 0, 0, 0},
9981         {0x1F, 0, 0, 0, 0},
9982         {0x20, 0, 0, 0, 0},
9983         {0x21, 0, 0, 0, 0},
9984         {0x22, 0x60, 0x60, 0, 0},
9985         {0x23, 0x6, 0x6, 0, 0},
9986         {0x24, 0xc, 0xc, 0, 0},
9987         {0x25, 0, 0, 0, 0},
9988         {0x26, 0, 0, 0, 0},
9989         {0x27, 0, 0, 0, 0},
9990         {0x28, 0x1, 0x1, 0, 0},
9991         {0x29, 0, 0, 0, 0},
9992         {0x2A, 0, 0, 0, 0},
9993         {0x2B, 0, 0, 0, 0},
9994         {0x2C, 0, 0, 0, 0},
9995         {0x2D, 0, 0, 0, 0},
9996         {0x2E, 0, 0, 0, 0},
9997         {0x2F, 0x1f, 0x1f, 0, 0},
9998         {0x30, 0x15, 0x15, 0, 0},
9999         {0x31, 0xf, 0xf, 0, 0},
10000         {0x32, 0, 0, 0, 0},
10001         {0x33, 0, 0, 0, 0},
10002         {0x34, 0, 0, 0, 0},
10003         {0x35, 0, 0, 0, 0},
10004         {0x36, 0, 0, 0, 0},
10005         {0x37, 0, 0, 0, 0},
10006         {0x38, 0, 0, 0, 0},
10007         {0x39, 0, 0, 0, 0},
10008         {0x3A, 0, 0, 0, 0},
10009         {0x3B, 0, 0, 0, 0},
10010         {0x3C, 0x13, 0x13, 0, 0},
10011         {0x3D, 0xf, 0xf, 0, 0},
10012         {0x3E, 0x18, 0x18, 0, 0},
10013         {0x3F, 0, 0, 0, 0},
10014         {0x40, 0, 0, 0, 0},
10015         {0x41, 0x20, 0x20, 0, 0},
10016         {0x42, 0x20, 0x20, 0, 0},
10017         {0x43, 0, 0, 0, 0},
10018         {0x44, 0x77, 0x77, 0, 0},
10019         {0x45, 0x7, 0x7, 0, 0},
10020         {0x46, 0x1, 0x1, 0, 0},
10021         {0x47, 0x4, 0x4, 0, 0},
10022         {0x48, 0xf, 0xf, 0, 0},
10023         {0x49, 0x30, 0x30, 0, 0},
10024         {0x4A, 0x32, 0x32, 0, 0},
10025         {0x4B, 0xd, 0xd, 0, 0},
10026         {0x4C, 0xd, 0xd, 0, 0},
10027         {0x4D, 0x4, 0x4, 0, 0},
10028         {0x4E, 0x6, 0x6, 0, 0},
10029         {0x4F, 0x1, 0x1, 0, 0},
10030         {0x50, 0x1c, 0x1c, 0, 0},
10031         {0x51, 0x2, 0x2, 0, 0},
10032         {0x52, 0x2, 0x2, 0, 0},
10033         {0x53, 0xf7, 0xf7, 1, 1},
10034         {0x54, 0xb4, 0xb4, 0, 0},
10035         {0x55, 0xd2, 0xd2, 0, 0},
10036         {0x56, 0, 0, 0, 0},
10037         {0x57, 0, 0, 0, 0},
10038         {0x58, 0x4, 0x4, 0, 0},
10039         {0x59, 0x96, 0x96, 0, 0},
10040         {0x5A, 0x3e, 0x3e, 0, 0},
10041         {0x5B, 0x3e, 0x3e, 0, 0},
10042         {0x5C, 0x13, 0x13, 0, 0},
10043         {0x5D, 0x2, 0x2, 0, 0},
10044         {0x5E, 0, 0, 0, 0},
10045         {0x5F, 0x7, 0x7, 0, 0},
10046         {0x60, 0x7, 0x7, 1, 1},
10047         {0x61, 0x8, 0x8, 0, 0},
10048         {0x62, 0x3, 0x3, 0, 0},
10049         {0x63, 0, 0, 0, 0},
10050         {0x64, 0, 0, 0, 0},
10051         {0x65, 0, 0, 0, 0},
10052         {0x66, 0, 0, 0, 0},
10053         {0x67, 0, 0, 0, 0},
10054         {0x68, 0x40, 0x40, 0, 0},
10055         {0x69, 0, 0, 0, 0},
10056         {0x6A, 0, 0, 0, 0},
10057         {0x6B, 0, 0, 0, 0},
10058         {0x6C, 0, 0, 0, 0},
10059         {0x6D, 0x1, 0x1, 0, 0},
10060         {0x6E, 0, 0, 0, 0},
10061         {0x6F, 0, 0, 0, 0},
10062         {0x70, 0x60, 0x60, 0, 0},
10063         {0x71, 0x66, 0x66, 0, 0},
10064         {0x72, 0xc, 0xc, 0, 0},
10065         {0x73, 0x66, 0x66, 0, 0},
10066         {0x74, 0x8f, 0x8f, 1, 1},
10067         {0x75, 0, 0, 0, 0},
10068         {0x76, 0xcc, 0xcc, 0, 0},
10069         {0x77, 0x1, 0x1, 0, 0},
10070         {0x78, 0x66, 0x66, 0, 0},
10071         {0x79, 0x66, 0x66, 0, 0},
10072         {0x7A, 0, 0, 0, 0},
10073         {0x7B, 0, 0, 0, 0},
10074         {0x7C, 0, 0, 0, 0},
10075         {0x7D, 0, 0, 0, 0},
10076         {0x7E, 0, 0, 0, 0},
10077         {0x7F, 0, 0, 0, 0},
10078         {0x80, 0, 0, 0, 0},
10079         {0x81, 0, 0, 0, 0},
10080         {0x82, 0, 0, 0, 0},
10081         {0x83, 0, 0, 0, 0},
10082         {0x84, 0, 0, 0, 0},
10083         {0x85, 0xff, 0xff, 0, 0},
10084         {0x86, 0, 0, 0, 0},
10085         {0x87, 0, 0, 0, 0},
10086         {0x88, 0, 0, 0, 0},
10087         {0x89, 0, 0, 0, 0},
10088         {0x8A, 0, 0, 0, 0},
10089         {0x8B, 0, 0, 0, 0},
10090         {0x8C, 0, 0, 0, 0},
10091         {0x8D, 0, 0, 0, 0},
10092         {0x8E, 0, 0, 0, 0},
10093         {0x8F, 0, 0, 0, 0},
10094         {0x90, 0, 0, 0, 0},
10095         {0x91, 0, 0, 0, 0},
10096         {0x92, 0, 0, 0, 0},
10097         {0x93, 0, 0, 0, 0},
10098         {0x94, 0, 0, 0, 0},
10099         {0x95, 0, 0, 0, 0},
10100         {0x96, 0, 0, 0, 0},
10101         {0x97, 0, 0, 0, 0},
10102         {0x98, 0, 0, 0, 0},
10103         {0x99, 0, 0, 0, 0},
10104         {0x9A, 0, 0, 0, 0},
10105         {0x9B, 0, 0, 0, 0},
10106         {0x9C, 0, 0, 0, 0},
10107         {0x9D, 0, 0, 0, 0},
10108         {0x9E, 0, 0, 0, 0},
10109         {0x9F, 0x6, 0x6, 0, 0},
10110         {0xA0, 0x66, 0x66, 0, 0},
10111         {0xA1, 0x66, 0x66, 0, 0},
10112         {0xA2, 0x66, 0x66, 0, 0},
10113         {0xA3, 0x66, 0x66, 0, 0},
10114         {0xA4, 0x66, 0x66, 0, 0},
10115         {0xA5, 0x66, 0x66, 0, 0},
10116         {0xA6, 0x66, 0x66, 0, 0},
10117         {0xA7, 0x66, 0x66, 0, 0},
10118         {0xA8, 0x66, 0x66, 0, 0},
10119         {0xA9, 0x66, 0x66, 0, 0},
10120         {0xAA, 0x66, 0x66, 0, 0},
10121         {0xAB, 0x66, 0x66, 0, 0},
10122         {0xAC, 0x66, 0x66, 0, 0},
10123         {0xAD, 0x66, 0x66, 0, 0},
10124         {0xAE, 0x66, 0x66, 0, 0},
10125         {0xAF, 0x66, 0x66, 0, 0},
10126         {0xB0, 0x66, 0x66, 0, 0},
10127         {0xB1, 0x66, 0x66, 0, 0},
10128         {0xB2, 0x66, 0x66, 0, 0},
10129         {0xB3, 0xa, 0xa, 0, 0},
10130         {0xB4, 0, 0, 0, 0},
10131         {0xB5, 0, 0, 0, 0},
10132         {0xB6, 0, 0, 0, 0},
10133         {0xFFFF, 0, 0, 0, 0},
10134 };
10135
10136 static struct radio_regs regs_TX_2056_rev7[] = {
10137         {0x02, 0, 0, 0, 0},
10138         {0x03, 0, 0, 0, 0},
10139         {0x04, 0, 0, 0, 0},
10140         {0x05, 0, 0, 0, 0},
10141         {0x06, 0, 0, 0, 0},
10142         {0x07, 0, 0, 0, 0},
10143         {0x08, 0, 0, 0, 0},
10144         {0x09, 0, 0, 0, 0},
10145         {0x0A, 0, 0, 0, 0},
10146         {0x0B, 0, 0, 0, 0},
10147         {0x0C, 0, 0, 0, 0},
10148         {0x0D, 0, 0, 0, 0},
10149         {0x0E, 0, 0, 0, 0},
10150         {0x0F, 0, 0, 0, 0},
10151         {0x10, 0, 0, 0, 0},
10152         {0x11, 0, 0, 0, 0},
10153         {0x12, 0, 0, 0, 0},
10154         {0x13, 0, 0, 0, 0},
10155         {0x14, 0, 0, 0, 0},
10156         {0x15, 0, 0, 0, 0},
10157         {0x16, 0, 0, 0, 0},
10158         {0x17, 0, 0, 0, 0},
10159         {0x18, 0, 0, 0, 0},
10160         {0x19, 0, 0, 0, 0},
10161         {0x1A, 0, 0, 0, 0},
10162         {0x1B, 0, 0, 0, 0},
10163         {0x1C, 0, 0, 0, 0},
10164         {0x1D, 0, 0, 0, 0},
10165         {0x1E, 0, 0, 0, 0},
10166         {0x1F, 0, 0, 0, 0},
10167         {0x20, 0, 0, 0, 0},
10168         {0x21, 0x88, 0x88, 0, 0},
10169         {0x22, 0x88, 0x88, 0, 0},
10170         {0x23, 0x88, 0x88, 0, 0},
10171         {0x24, 0x88, 0x88, 0, 0},
10172         {0x25, 0xc, 0xc, 0, 0},
10173         {0x26, 0, 0, 0, 0},
10174         {0x27, 0x3, 0x3, 0, 0},
10175         {0x28, 0, 0, 0, 0},
10176         {0x29, 0x3, 0x3, 0, 0},
10177         {0x2A, 0x37, 0x37, 0, 0},
10178         {0x2B, 0x3, 0x3, 0, 0},
10179         {0x2C, 0, 0, 0, 0},
10180         {0x2D, 0, 0, 0, 0},
10181         {0x2E, 0x1, 0x1, 0, 0},
10182         {0x2F, 0x1, 0x1, 0, 0},
10183         {0x30, 0, 0, 0, 0},
10184         {0x31, 0, 0, 0, 0},
10185         {0x32, 0, 0, 0, 0},
10186         {0x33, 0x11, 0x11, 0, 0},
10187         {0x34, 0xee, 0xee, 1, 1},
10188         {0x35, 0, 0, 0, 0},
10189         {0x36, 0, 0, 0, 0},
10190         {0x37, 0x3, 0x3, 0, 0},
10191         {0x38, 0x50, 0x50, 1, 1},
10192         {0x39, 0, 0, 0, 0},
10193         {0x3A, 0x50, 0x50, 1, 1},
10194         {0x3B, 0, 0, 0, 0},
10195         {0x3C, 0x6e, 0x6e, 0, 0},
10196         {0x3D, 0xf0, 0xf0, 1, 1},
10197         {0x3E, 0, 0, 0, 0},
10198         {0x3F, 0, 0, 0, 0},
10199         {0x40, 0, 0, 0, 0},
10200         {0x41, 0x3, 0x3, 0, 0},
10201         {0x42, 0x3, 0x3, 0, 0},
10202         {0x43, 0, 0, 0, 0},
10203         {0x44, 0x1e, 0x1e, 0, 0},
10204         {0x45, 0, 0, 0, 0},
10205         {0x46, 0x6e, 0x6e, 0, 0},
10206         {0x47, 0xf0, 0xf0, 1, 1},
10207         {0x48, 0, 0, 0, 0},
10208         {0x49, 0x2, 0x2, 0, 0},
10209         {0x4A, 0xff, 0xff, 1, 1},
10210         {0x4B, 0xc, 0xc, 0, 0},
10211         {0x4C, 0, 0, 0, 0},
10212         {0x4D, 0x38, 0x38, 0, 0},
10213         {0x4E, 0x70, 0x70, 1, 1},
10214         {0x4F, 0x2, 0x2, 0, 0},
10215         {0x50, 0x88, 0x88, 0, 0},
10216         {0x51, 0xc, 0xc, 0, 0},
10217         {0x52, 0, 0, 0, 0},
10218         {0x53, 0x8, 0x8, 0, 0},
10219         {0x54, 0x70, 0x70, 1, 1},
10220         {0x55, 0x2, 0x2, 0, 0},
10221         {0x56, 0xff, 0xff, 1, 1},
10222         {0x57, 0, 0, 0, 0},
10223         {0x58, 0x83, 0x83, 0, 0},
10224         {0x59, 0x77, 0x77, 1, 1},
10225         {0x5A, 0, 0, 0, 0},
10226         {0x5B, 0x2, 0x2, 0, 0},
10227         {0x5C, 0x88, 0x88, 0, 0},
10228         {0x5D, 0, 0, 0, 0},
10229         {0x5E, 0x8, 0x8, 0, 0},
10230         {0x5F, 0x77, 0x77, 1, 1},
10231         {0x60, 0x1, 0x1, 0, 0},
10232         {0x61, 0, 0, 0, 0},
10233         {0x62, 0x7, 0x7, 0, 0},
10234         {0x63, 0, 0, 0, 0},
10235         {0x64, 0x7, 0x7, 0, 0},
10236         {0x65, 0, 0, 0, 0},
10237         {0x66, 0, 0, 0, 0},
10238         {0x67, 0, 0, 1, 1},
10239         {0x68, 0, 0, 0, 0},
10240         {0x69, 0xa, 0xa, 0, 0},
10241         {0x6A, 0, 0, 0, 0},
10242         {0x6B, 0, 0, 0, 0},
10243         {0x6C, 0, 0, 0, 0},
10244         {0x6D, 0, 0, 0, 0},
10245         {0x6E, 0, 0, 0, 0},
10246         {0x6F, 0, 0, 0, 0},
10247         {0x70, 0, 0, 0, 0},
10248         {0x71, 0x2, 0x2, 0, 0},
10249         {0x72, 0, 0, 0, 0},
10250         {0x73, 0, 0, 0, 0},
10251         {0x74, 0xe, 0xe, 0, 0},
10252         {0x75, 0xe, 0xe, 0, 0},
10253         {0x76, 0xe, 0xe, 0, 0},
10254         {0x77, 0x13, 0x13, 0, 0},
10255         {0x78, 0x13, 0x13, 0, 0},
10256         {0x79, 0x1b, 0x1b, 0, 0},
10257         {0x7A, 0x1b, 0x1b, 0, 0},
10258         {0x7B, 0x55, 0x55, 0, 0},
10259         {0x7C, 0x5b, 0x5b, 0, 0},
10260         {0x7D, 0x30, 0x30, 1, 1},
10261         {0x7E, 0, 0, 0, 0},
10262         {0x7F, 0, 0, 0, 0},
10263         {0x80, 0, 0, 0, 0},
10264         {0x81, 0, 0, 0, 0},
10265         {0x82, 0, 0, 0, 0},
10266         {0x83, 0, 0, 0, 0},
10267         {0x84, 0, 0, 0, 0},
10268         {0x85, 0, 0, 0, 0},
10269         {0x86, 0, 0, 0, 0},
10270         {0x87, 0, 0, 0, 0},
10271         {0x88, 0, 0, 0, 0},
10272         {0x89, 0, 0, 0, 0},
10273         {0x8A, 0, 0, 0, 0},
10274         {0x8B, 0, 0, 0, 0},
10275         {0x8C, 0, 0, 0, 0},
10276         {0x8D, 0, 0, 0, 0},
10277         {0x8E, 0, 0, 0, 0},
10278         {0x8F, 0, 0, 0, 0},
10279         {0x90, 0, 0, 0, 0},
10280         {0x91, 0, 0, 0, 0},
10281         {0x92, 0, 0, 0, 0},
10282         {0x93, 0x70, 0x70, 0, 0},
10283         {0x94, 0x70, 0x70, 0, 0},
10284         {0x95, 0x71, 0x71, 1, 1},
10285         {0x96, 0x71, 0x71, 1, 1},
10286         {0x97, 0x72, 0x72, 1, 1},
10287         {0x98, 0x73, 0x73, 1, 1},
10288         {0x99, 0x74, 0x74, 1, 1},
10289         {0x9A, 0x75, 0x75, 1, 1},
10290         {0xFFFF, 0, 0, 0, 0},
10291 };
10292
10293 static struct radio_regs regs_RX_2056_rev7[] = {
10294         {0x02, 0, 0, 0, 0},
10295         {0x03, 0, 0, 0, 0},
10296         {0x04, 0, 0, 0, 0},
10297         {0x05, 0, 0, 0, 0},
10298         {0x06, 0, 0, 0, 0},
10299         {0x07, 0, 0, 0, 0},
10300         {0x08, 0, 0, 0, 0},
10301         {0x09, 0, 0, 0, 0},
10302         {0x0A, 0, 0, 0, 0},
10303         {0x0B, 0, 0, 0, 0},
10304         {0x0C, 0, 0, 0, 0},
10305         {0x0D, 0, 0, 0, 0},
10306         {0x0E, 0, 0, 0, 0},
10307         {0x0F, 0, 0, 0, 0},
10308         {0x10, 0, 0, 0, 0},
10309         {0x11, 0, 0, 0, 0},
10310         {0x12, 0, 0, 0, 0},
10311         {0x13, 0, 0, 0, 0},
10312         {0x14, 0, 0, 0, 0},
10313         {0x15, 0, 0, 0, 0},
10314         {0x16, 0, 0, 0, 0},
10315         {0x17, 0, 0, 0, 0},
10316         {0x18, 0, 0, 0, 0},
10317         {0x19, 0, 0, 0, 0},
10318         {0x1A, 0, 0, 0, 0},
10319         {0x1B, 0, 0, 0, 0},
10320         {0x1C, 0, 0, 0, 0},
10321         {0x1D, 0, 0, 0, 0},
10322         {0x1E, 0, 0, 0, 0},
10323         {0x1F, 0, 0, 0, 0},
10324         {0x20, 0x3, 0x3, 0, 0},
10325         {0x21, 0, 0, 0, 0},
10326         {0x22, 0, 0, 0, 0},
10327         {0x23, 0x90, 0x90, 0, 0},
10328         {0x24, 0x55, 0x55, 0, 0},
10329         {0x25, 0x15, 0x15, 0, 0},
10330         {0x26, 0x5, 0x5, 0, 0},
10331         {0x27, 0x15, 0x15, 0, 0},
10332         {0x28, 0x5, 0x5, 0, 0},
10333         {0x29, 0x20, 0x20, 0, 0},
10334         {0x2A, 0x11, 0x11, 0, 0},
10335         {0x2B, 0x90, 0x90, 0, 0},
10336         {0x2C, 0, 0, 0, 0},
10337         {0x2D, 0x88, 0x88, 0, 0},
10338         {0x2E, 0x32, 0x32, 0, 0},
10339         {0x2F, 0x77, 0x77, 0, 0},
10340         {0x30, 0x17, 0x17, 1, 1},
10341         {0x31, 0xff, 0xff, 1, 1},
10342         {0x32, 0x20, 0x20, 0, 0},
10343         {0x33, 0, 0, 0, 0},
10344         {0x34, 0x88, 0x88, 0, 0},
10345         {0x35, 0x32, 0x32, 0, 0},
10346         {0x36, 0x77, 0x77, 0, 0},
10347         {0x37, 0x17, 0x17, 1, 1},
10348         {0x38, 0xf0, 0xf0, 1, 1},
10349         {0x39, 0x20, 0x20, 0, 0},
10350         {0x3A, 0x8, 0x8, 0, 0},
10351         {0x3B, 0x55, 0x55, 1, 1},
10352         {0x3C, 0, 0, 0, 0},
10353         {0x3D, 0x88, 0x88, 1, 1},
10354         {0x3E, 0, 0, 0, 0},
10355         {0x3F, 0, 0, 1, 1},
10356         {0x40, 0x7, 0x7, 1, 1},
10357         {0x41, 0x6, 0x6, 0, 0},
10358         {0x42, 0x4, 0x4, 0, 0},
10359         {0x43, 0, 0, 0, 0},
10360         {0x44, 0x8, 0x8, 0, 0},
10361         {0x45, 0x55, 0x55, 1, 1},
10362         {0x46, 0, 0, 0, 0},
10363         {0x47, 0x11, 0x11, 0, 0},
10364         {0x48, 0, 0, 0, 0},
10365         {0x49, 0, 0, 1, 1},
10366         {0x4A, 0x7, 0x7, 0, 0},
10367         {0x4B, 0x6, 0x6, 0, 0},
10368         {0x4C, 0x4, 0x4, 0, 0},
10369         {0x4D, 0, 0, 0, 0},
10370         {0x4E, 0, 0, 0, 0},
10371         {0x4F, 0x26, 0x26, 1, 1},
10372         {0x50, 0x26, 0x26, 1, 1},
10373         {0x51, 0xf, 0xf, 1, 1},
10374         {0x52, 0xf, 0xf, 1, 1},
10375         {0x53, 0x44, 0x44, 0, 0},
10376         {0x54, 0, 0, 0, 0},
10377         {0x55, 0, 0, 0, 0},
10378         {0x56, 0x8, 0x8, 0, 0},
10379         {0x57, 0x8, 0x8, 0, 0},
10380         {0x58, 0x7, 0x7, 0, 0},
10381         {0x59, 0x22, 0x22, 0, 0},
10382         {0x5A, 0x22, 0x22, 0, 0},
10383         {0x5B, 0x2, 0x2, 0, 0},
10384         {0x5C, 0x4, 0x4, 1, 1},
10385         {0x5D, 0x7, 0x7, 0, 0},
10386         {0x5E, 0x55, 0x55, 0, 0},
10387         {0x5F, 0x23, 0x23, 0, 0},
10388         {0x60, 0x41, 0x41, 0, 0},
10389         {0x61, 0x1, 0x1, 0, 0},
10390         {0x62, 0xa, 0xa, 0, 0},
10391         {0x63, 0, 0, 0, 0},
10392         {0x64, 0, 0, 0, 0},
10393         {0x65, 0, 0, 0, 0},
10394         {0x66, 0, 0, 0, 0},
10395         {0x67, 0, 0, 0, 0},
10396         {0x68, 0, 0, 0, 0},
10397         {0x69, 0, 0, 0, 0},
10398         {0x6A, 0, 0, 0, 0},
10399         {0x6B, 0xc, 0xc, 0, 0},
10400         {0x6C, 0, 0, 0, 0},
10401         {0x6D, 0, 0, 0, 0},
10402         {0x6E, 0, 0, 0, 0},
10403         {0x6F, 0, 0, 0, 0},
10404         {0x70, 0, 0, 0, 0},
10405         {0x71, 0, 0, 0, 0},
10406         {0x72, 0x22, 0x22, 0, 0},
10407         {0x73, 0x22, 0x22, 0, 0},
10408         {0x74, 0, 0, 1, 1},
10409         {0x75, 0xa, 0xa, 0, 0},
10410         {0x76, 0x1, 0x1, 0, 0},
10411         {0x77, 0x22, 0x22, 0, 0},
10412         {0x78, 0x30, 0x30, 0, 0},
10413         {0x79, 0, 0, 0, 0},
10414         {0x7A, 0, 0, 0, 0},
10415         {0x7B, 0, 0, 0, 0},
10416         {0x7C, 0, 0, 0, 0},
10417         {0x7D, 0, 0, 0, 0},
10418         {0x7E, 0, 0, 0, 0},
10419         {0x7F, 0, 0, 0, 0},
10420         {0x80, 0, 0, 0, 0},
10421         {0x81, 0, 0, 0, 0},
10422         {0x82, 0, 0, 0, 0},
10423         {0x83, 0, 0, 0, 0},
10424         {0x84, 0, 0, 0, 0},
10425         {0x85, 0, 0, 0, 0},
10426         {0x86, 0, 0, 0, 0},
10427         {0x87, 0, 0, 0, 0},
10428         {0x88, 0, 0, 0, 0},
10429         {0x89, 0, 0, 0, 0},
10430         {0x8A, 0, 0, 0, 0},
10431         {0x8B, 0, 0, 0, 0},
10432         {0x8C, 0, 0, 0, 0},
10433         {0x8D, 0, 0, 0, 0},
10434         {0x8E, 0, 0, 0, 0},
10435         {0x8F, 0, 0, 0, 0},
10436         {0x90, 0, 0, 0, 0},
10437         {0x91, 0, 0, 0, 0},
10438         {0x92, 0, 0, 0, 0},
10439         {0x93, 0, 0, 0, 0},
10440         {0x94, 0, 0, 0, 0},
10441         {0xFFFF, 0, 0, 0, 0},
10442 };
10443
10444 static struct radio_regs regs_SYN_2056_rev8[] = {
10445         {0x02, 0, 0, 0, 0},
10446         {0x03, 0, 0, 0, 0},
10447         {0x04, 0, 0, 0, 0},
10448         {0x05, 0, 0, 0, 0},
10449         {0x06, 0, 0, 0, 0},
10450         {0x07, 0, 0, 0, 0},
10451         {0x08, 0, 0, 0, 0},
10452         {0x09, 0x1, 0x1, 0, 0},
10453         {0x0A, 0, 0, 0, 0},
10454         {0x0B, 0, 0, 0, 0},
10455         {0x0C, 0, 0, 0, 0},
10456         {0x0D, 0, 0, 0, 0},
10457         {0x0E, 0, 0, 0, 0},
10458         {0x0F, 0, 0, 0, 0},
10459         {0x10, 0, 0, 0, 0},
10460         {0x11, 0, 0, 0, 0},
10461         {0x12, 0, 0, 0, 0},
10462         {0x13, 0, 0, 0, 0},
10463         {0x14, 0, 0, 0, 0},
10464         {0x15, 0, 0, 0, 0},
10465         {0x16, 0, 0, 0, 0},
10466         {0x17, 0, 0, 0, 0},
10467         {0x18, 0, 0, 0, 0},
10468         {0x19, 0, 0, 0, 0},
10469         {0x1A, 0, 0, 0, 0},
10470         {0x1B, 0, 0, 0, 0},
10471         {0x1C, 0, 0, 0, 0},
10472         {0x1D, 0, 0, 0, 0},
10473         {0x1E, 0, 0, 0, 0},
10474         {0x1F, 0, 0, 0, 0},
10475         {0x20, 0, 0, 0, 0},
10476         {0x21, 0, 0, 0, 0},
10477         {0x22, 0x60, 0x60, 0, 0},
10478         {0x23, 0x6, 0x6, 0, 0},
10479         {0x24, 0xc, 0xc, 0, 0},
10480         {0x25, 0, 0, 0, 0},
10481         {0x26, 0, 0, 0, 0},
10482         {0x27, 0, 0, 0, 0},
10483         {0x28, 0x1, 0x1, 0, 0},
10484         {0x29, 0, 0, 0, 0},
10485         {0x2A, 0, 0, 0, 0},
10486         {0x2B, 0, 0, 0, 0},
10487         {0x2C, 0, 0, 0, 0},
10488         {0x2D, 0, 0, 0, 0},
10489         {0x2E, 0, 0, 0, 0},
10490         {0x2F, 0x1f, 0x1f, 0, 0},
10491         {0x30, 0x15, 0x15, 0, 0},
10492         {0x31, 0xf, 0xf, 0, 0},
10493         {0x32, 0, 0, 0, 0},
10494         {0x33, 0, 0, 0, 0},
10495         {0x34, 0, 0, 0, 0},
10496         {0x35, 0, 0, 0, 0},
10497         {0x36, 0, 0, 0, 0},
10498         {0x37, 0, 0, 0, 0},
10499         {0x38, 0, 0, 0, 0},
10500         {0x39, 0, 0, 0, 0},
10501         {0x3A, 0, 0, 0, 0},
10502         {0x3B, 0, 0, 0, 0},
10503         {0x3C, 0x13, 0x13, 0, 0},
10504         {0x3D, 0xf, 0xf, 0, 0},
10505         {0x3E, 0x18, 0x18, 0, 0},
10506         {0x3F, 0, 0, 0, 0},
10507         {0x40, 0, 0, 0, 0},
10508         {0x41, 0x20, 0x20, 0, 0},
10509         {0x42, 0x20, 0x20, 0, 0},
10510         {0x43, 0, 0, 0, 0},
10511         {0x44, 0x77, 0x77, 0, 0},
10512         {0x45, 0x7, 0x7, 0, 0},
10513         {0x46, 0x1, 0x1, 0, 0},
10514         {0x47, 0x4, 0x4, 0, 0},
10515         {0x48, 0xf, 0xf, 0, 0},
10516         {0x49, 0x30, 0x30, 0, 0},
10517         {0x4A, 0x32, 0x32, 0, 0},
10518         {0x4B, 0xd, 0xd, 0, 0},
10519         {0x4C, 0xd, 0xd, 0, 0},
10520         {0x4D, 0x4, 0x4, 0, 0},
10521         {0x4E, 0x6, 0x6, 0, 0},
10522         {0x4F, 0x1, 0x1, 0, 0},
10523         {0x50, 0x1c, 0x1c, 0, 0},
10524         {0x51, 0x2, 0x2, 0, 0},
10525         {0x52, 0x2, 0x2, 0, 0},
10526         {0x53, 0xf7, 0xf7, 1, 1},
10527         {0x54, 0xb4, 0xb4, 0, 0},
10528         {0x55, 0xd2, 0xd2, 0, 0},
10529         {0x56, 0, 0, 0, 0},
10530         {0x57, 0, 0, 0, 0},
10531         {0x58, 0x4, 0x4, 0, 0},
10532         {0x59, 0x96, 0x96, 0, 0},
10533         {0x5A, 0x3e, 0x3e, 0, 0},
10534         {0x5B, 0x3e, 0x3e, 0, 0},
10535         {0x5C, 0x13, 0x13, 0, 0},
10536         {0x5D, 0x2, 0x2, 0, 0},
10537         {0x5E, 0, 0, 0, 0},
10538         {0x5F, 0x7, 0x7, 0, 0},
10539         {0x60, 0x7, 0x7, 1, 1},
10540         {0x61, 0x8, 0x8, 0, 0},
10541         {0x62, 0x3, 0x3, 0, 0},
10542         {0x63, 0, 0, 0, 0},
10543         {0x64, 0, 0, 0, 0},
10544         {0x65, 0, 0, 0, 0},
10545         {0x66, 0, 0, 0, 0},
10546         {0x67, 0, 0, 0, 0},
10547         {0x68, 0x40, 0x40, 0, 0},
10548         {0x69, 0, 0, 0, 0},
10549         {0x6A, 0, 0, 0, 0},
10550         {0x6B, 0, 0, 0, 0},
10551         {0x6C, 0, 0, 0, 0},
10552         {0x6D, 0x1, 0x1, 0, 0},
10553         {0x6E, 0, 0, 0, 0},
10554         {0x6F, 0, 0, 0, 0},
10555         {0x70, 0x60, 0x60, 0, 0},
10556         {0x71, 0x66, 0x66, 0, 0},
10557         {0x72, 0xc, 0xc, 0, 0},
10558         {0x73, 0x66, 0x66, 0, 0},
10559         {0x74, 0x8f, 0x8f, 1, 1},
10560         {0x75, 0, 0, 0, 0},
10561         {0x76, 0xcc, 0xcc, 0, 0},
10562         {0x77, 0x1, 0x1, 0, 0},
10563         {0x78, 0x66, 0x66, 0, 0},
10564         {0x79, 0x66, 0x66, 0, 0},
10565         {0x7A, 0, 0, 0, 0},
10566         {0x7B, 0, 0, 0, 0},
10567         {0x7C, 0, 0, 0, 0},
10568         {0x7D, 0, 0, 0, 0},
10569         {0x7E, 0, 0, 0, 0},
10570         {0x7F, 0, 0, 0, 0},
10571         {0x80, 0, 0, 0, 0},
10572         {0x81, 0, 0, 0, 0},
10573         {0x82, 0, 0, 0, 0},
10574         {0x83, 0, 0, 0, 0},
10575         {0x84, 0, 0, 0, 0},
10576         {0x85, 0xff, 0xff, 0, 0},
10577         {0x86, 0, 0, 0, 0},
10578         {0x87, 0, 0, 0, 0},
10579         {0x88, 0, 0, 0, 0},
10580         {0x89, 0, 0, 0, 0},
10581         {0x8A, 0, 0, 0, 0},
10582         {0x8B, 0, 0, 0, 0},
10583         {0x8C, 0, 0, 0, 0},
10584         {0x8D, 0, 0, 0, 0},
10585         {0x8E, 0, 0, 0, 0},
10586         {0x8F, 0, 0, 0, 0},
10587         {0x90, 0, 0, 0, 0},
10588         {0x91, 0, 0, 0, 0},
10589         {0x92, 0, 0, 0, 0},
10590         {0x93, 0, 0, 0, 0},
10591         {0x94, 0, 0, 0, 0},
10592         {0x95, 0, 0, 0, 0},
10593         {0x96, 0, 0, 0, 0},
10594         {0x97, 0, 0, 0, 0},
10595         {0x98, 0, 0, 0, 0},
10596         {0x99, 0, 0, 0, 0},
10597         {0x9A, 0, 0, 0, 0},
10598         {0x9B, 0, 0, 0, 0},
10599         {0x9C, 0, 0, 0, 0},
10600         {0x9D, 0, 0, 0, 0},
10601         {0x9E, 0, 0, 0, 0},
10602         {0x9F, 0x6, 0x6, 0, 0},
10603         {0xA0, 0x66, 0x66, 0, 0},
10604         {0xA1, 0x66, 0x66, 0, 0},
10605         {0xA2, 0x66, 0x66, 0, 0},
10606         {0xA3, 0x66, 0x66, 0, 0},
10607         {0xA4, 0x66, 0x66, 0, 0},
10608         {0xA5, 0x66, 0x66, 0, 0},
10609         {0xA6, 0x66, 0x66, 0, 0},
10610         {0xA7, 0x66, 0x66, 0, 0},
10611         {0xA8, 0x66, 0x66, 0, 0},
10612         {0xA9, 0x66, 0x66, 0, 0},
10613         {0xAA, 0x66, 0x66, 0, 0},
10614         {0xAB, 0x66, 0x66, 0, 0},
10615         {0xAC, 0x66, 0x66, 0, 0},
10616         {0xAD, 0x66, 0x66, 0, 0},
10617         {0xAE, 0x66, 0x66, 0, 0},
10618         {0xAF, 0x66, 0x66, 0, 0},
10619         {0xB0, 0x66, 0x66, 0, 0},
10620         {0xB1, 0x66, 0x66, 0, 0},
10621         {0xB2, 0x66, 0x66, 0, 0},
10622         {0xB3, 0xa, 0xa, 0, 0},
10623         {0xB4, 0, 0, 0, 0},
10624         {0xB5, 0, 0, 0, 0},
10625         {0xB6, 0, 0, 0, 0},
10626         {0xFFFF, 0, 0, 0, 0},
10627 };
10628
10629 static struct radio_regs regs_TX_2056_rev8[] = {
10630         {0x02, 0, 0, 0, 0},
10631         {0x03, 0, 0, 0, 0},
10632         {0x04, 0, 0, 0, 0},
10633         {0x05, 0, 0, 0, 0},
10634         {0x06, 0, 0, 0, 0},
10635         {0x07, 0, 0, 0, 0},
10636         {0x08, 0, 0, 0, 0},
10637         {0x09, 0, 0, 0, 0},
10638         {0x0A, 0, 0, 0, 0},
10639         {0x0B, 0, 0, 0, 0},
10640         {0x0C, 0, 0, 0, 0},
10641         {0x0D, 0, 0, 0, 0},
10642         {0x0E, 0, 0, 0, 0},
10643         {0x0F, 0, 0, 0, 0},
10644         {0x10, 0, 0, 0, 0},
10645         {0x11, 0, 0, 0, 0},
10646         {0x12, 0, 0, 0, 0},
10647         {0x13, 0, 0, 0, 0},
10648         {0x14, 0, 0, 0, 0},
10649         {0x15, 0, 0, 0, 0},
10650         {0x16, 0, 0, 0, 0},
10651         {0x17, 0, 0, 0, 0},
10652         {0x18, 0, 0, 0, 0},
10653         {0x19, 0, 0, 0, 0},
10654         {0x1A, 0, 0, 0, 0},
10655         {0x1B, 0, 0, 0, 0},
10656         {0x1C, 0, 0, 0, 0},
10657         {0x1D, 0, 0, 0, 0},
10658         {0x1E, 0, 0, 0, 0},
10659         {0x1F, 0, 0, 0, 0},
10660         {0x20, 0, 0, 0, 0},
10661         {0x21, 0x88, 0x88, 0, 0},
10662         {0x22, 0x88, 0x88, 0, 0},
10663         {0x23, 0x88, 0x88, 0, 0},
10664         {0x24, 0x88, 0x88, 0, 0},
10665         {0x25, 0xc, 0xc, 0, 0},
10666         {0x26, 0, 0, 0, 0},
10667         {0x27, 0x3, 0x3, 0, 0},
10668         {0x28, 0, 0, 0, 0},
10669         {0x29, 0x3, 0x3, 0, 0},
10670         {0x2A, 0x37, 0x37, 0, 0},
10671         {0x2B, 0x3, 0x3, 0, 0},
10672         {0x2C, 0, 0, 0, 0},
10673         {0x2D, 0, 0, 0, 0},
10674         {0x2E, 0x1, 0x1, 0, 0},
10675         {0x2F, 0x1, 0x1, 0, 0},
10676         {0x30, 0, 0, 0, 0},
10677         {0x31, 0, 0, 0, 0},
10678         {0x32, 0, 0, 0, 0},
10679         {0x33, 0x11, 0x11, 0, 0},
10680         {0x34, 0xee, 0xee, 1, 1},
10681         {0x35, 0, 0, 0, 0},
10682         {0x36, 0, 0, 0, 0},
10683         {0x37, 0x3, 0x3, 0, 0},
10684         {0x38, 0x50, 0x50, 1, 1},
10685         {0x39, 0, 0, 0, 0},
10686         {0x3A, 0x50, 0x50, 1, 1},
10687         {0x3B, 0, 0, 0, 0},
10688         {0x3C, 0x6e, 0x6e, 0, 0},
10689         {0x3D, 0xf0, 0xf0, 1, 1},
10690         {0x3E, 0, 0, 0, 0},
10691         {0x3F, 0, 0, 0, 0},
10692         {0x40, 0, 0, 0, 0},
10693         {0x41, 0x3, 0x3, 0, 0},
10694         {0x42, 0x3, 0x3, 0, 0},
10695         {0x43, 0, 0, 0, 0},
10696         {0x44, 0x1e, 0x1e, 0, 0},
10697         {0x45, 0, 0, 0, 0},
10698         {0x46, 0x6e, 0x6e, 0, 0},
10699         {0x47, 0xf0, 0xf0, 1, 1},
10700         {0x48, 0, 0, 0, 0},
10701         {0x49, 0x2, 0x2, 0, 0},
10702         {0x4A, 0xff, 0xff, 1, 1},
10703         {0x4B, 0xc, 0xc, 0, 0},
10704         {0x4C, 0, 0, 0, 0},
10705         {0x4D, 0x38, 0x38, 0, 0},
10706         {0x4E, 0x70, 0x70, 1, 1},
10707         {0x4F, 0x2, 0x2, 0, 0},
10708         {0x50, 0x88, 0x88, 0, 0},
10709         {0x51, 0xc, 0xc, 0, 0},
10710         {0x52, 0, 0, 0, 0},
10711         {0x53, 0x8, 0x8, 0, 0},
10712         {0x54, 0x70, 0x70, 1, 1},
10713         {0x55, 0x2, 0x2, 0, 0},
10714         {0x56, 0xff, 0xff, 1, 1},
10715         {0x57, 0, 0, 0, 0},
10716         {0x58, 0x83, 0x83, 0, 0},
10717         {0x59, 0x77, 0x77, 1, 1},
10718         {0x5A, 0, 0, 0, 0},
10719         {0x5B, 0x2, 0x2, 0, 0},
10720         {0x5C, 0x88, 0x88, 0, 0},
10721         {0x5D, 0, 0, 0, 0},
10722         {0x5E, 0x8, 0x8, 0, 0},
10723         {0x5F, 0x77, 0x77, 1, 1},
10724         {0x60, 0x1, 0x1, 0, 0},
10725         {0x61, 0, 0, 0, 0},
10726         {0x62, 0x7, 0x7, 0, 0},
10727         {0x63, 0, 0, 0, 0},
10728         {0x64, 0x7, 0x7, 0, 0},
10729         {0x65, 0, 0, 0, 0},
10730         {0x66, 0, 0, 0, 0},
10731         {0x67, 0, 0, 1, 1},
10732         {0x68, 0, 0, 0, 0},
10733         {0x69, 0xa, 0xa, 0, 0},
10734         {0x6A, 0, 0, 0, 0},
10735         {0x6B, 0, 0, 0, 0},
10736         {0x6C, 0, 0, 0, 0},
10737         {0x6D, 0, 0, 0, 0},
10738         {0x6E, 0, 0, 0, 0},
10739         {0x6F, 0, 0, 0, 0},
10740         {0x70, 0, 0, 0, 0},
10741         {0x71, 0x2, 0x2, 0, 0},
10742         {0x72, 0, 0, 0, 0},
10743         {0x73, 0, 0, 0, 0},
10744         {0x74, 0xe, 0xe, 0, 0},
10745         {0x75, 0xe, 0xe, 0, 0},
10746         {0x76, 0xe, 0xe, 0, 0},
10747         {0x77, 0x13, 0x13, 0, 0},
10748         {0x78, 0x13, 0x13, 0, 0},
10749         {0x79, 0x1b, 0x1b, 0, 0},
10750         {0x7A, 0x1b, 0x1b, 0, 0},
10751         {0x7B, 0x55, 0x55, 0, 0},
10752         {0x7C, 0x5b, 0x5b, 0, 0},
10753         {0x7D, 0x30, 0x30, 1, 1},
10754         {0x7E, 0, 0, 0, 0},
10755         {0x7F, 0, 0, 0, 0},
10756         {0x80, 0, 0, 0, 0},
10757         {0x81, 0, 0, 0, 0},
10758         {0x82, 0, 0, 0, 0},
10759         {0x83, 0, 0, 0, 0},
10760         {0x84, 0, 0, 0, 0},
10761         {0x85, 0, 0, 0, 0},
10762         {0x86, 0, 0, 0, 0},
10763         {0x87, 0, 0, 0, 0},
10764         {0x88, 0, 0, 0, 0},
10765         {0x89, 0, 0, 0, 0},
10766         {0x8A, 0, 0, 0, 0},
10767         {0x8B, 0, 0, 0, 0},
10768         {0x8C, 0, 0, 0, 0},
10769         {0x8D, 0, 0, 0, 0},
10770         {0x8E, 0, 0, 0, 0},
10771         {0x8F, 0, 0, 0, 0},
10772         {0x90, 0, 0, 0, 0},
10773         {0x91, 0, 0, 0, 0},
10774         {0x92, 0, 0, 0, 0},
10775         {0x93, 0x70, 0x70, 0, 0},
10776         {0x94, 0x70, 0x70, 0, 0},
10777         {0x95, 0x70, 0x70, 0, 0},
10778         {0x96, 0x70, 0x70, 0, 0},
10779         {0x97, 0x70, 0x70, 0, 0},
10780         {0x98, 0x70, 0x70, 0, 0},
10781         {0x99, 0x70, 0x70, 0, 0},
10782         {0x9A, 0x70, 0x70, 0, 0},
10783         {0xFFFF, 0, 0, 0, 0},
10784 };
10785
10786 static struct radio_regs regs_RX_2056_rev8[] = {
10787         {0x02, 0, 0, 0, 0},
10788         {0x03, 0, 0, 0, 0},
10789         {0x04, 0, 0, 0, 0},
10790         {0x05, 0, 0, 0, 0},
10791         {0x06, 0, 0, 0, 0},
10792         {0x07, 0, 0, 0, 0},
10793         {0x08, 0, 0, 0, 0},
10794         {0x09, 0, 0, 0, 0},
10795         {0x0A, 0, 0, 0, 0},
10796         {0x0B, 0, 0, 0, 0},
10797         {0x0C, 0, 0, 0, 0},
10798         {0x0D, 0, 0, 0, 0},
10799         {0x0E, 0, 0, 0, 0},
10800         {0x0F, 0, 0, 0, 0},
10801         {0x10, 0, 0, 0, 0},
10802         {0x11, 0, 0, 0, 0},
10803         {0x12, 0, 0, 0, 0},
10804         {0x13, 0, 0, 0, 0},
10805         {0x14, 0, 0, 0, 0},
10806         {0x15, 0, 0, 0, 0},
10807         {0x16, 0, 0, 0, 0},
10808         {0x17, 0, 0, 0, 0},
10809         {0x18, 0, 0, 0, 0},
10810         {0x19, 0, 0, 0, 0},
10811         {0x1A, 0, 0, 0, 0},
10812         {0x1B, 0, 0, 0, 0},
10813         {0x1C, 0, 0, 0, 0},
10814         {0x1D, 0, 0, 0, 0},
10815         {0x1E, 0, 0, 0, 0},
10816         {0x1F, 0, 0, 0, 0},
10817         {0x20, 0x3, 0x3, 0, 0},
10818         {0x21, 0, 0, 0, 0},
10819         {0x22, 0, 0, 0, 0},
10820         {0x23, 0x90, 0x90, 0, 0},
10821         {0x24, 0x55, 0x55, 0, 0},
10822         {0x25, 0x15, 0x15, 0, 0},
10823         {0x26, 0x5, 0x5, 0, 0},
10824         {0x27, 0x15, 0x15, 0, 0},
10825         {0x28, 0x5, 0x5, 0, 0},
10826         {0x29, 0x20, 0x20, 0, 0},
10827         {0x2A, 0x11, 0x11, 0, 0},
10828         {0x2B, 0x90, 0x90, 0, 0},
10829         {0x2C, 0, 0, 0, 0},
10830         {0x2D, 0x88, 0x88, 0, 0},
10831         {0x2E, 0x32, 0x32, 0, 0},
10832         {0x2F, 0x77, 0x77, 0, 0},
10833         {0x30, 0x17, 0x17, 1, 1},
10834         {0x31, 0xff, 0xff, 1, 1},
10835         {0x32, 0x20, 0x20, 0, 0},
10836         {0x33, 0, 0, 0, 0},
10837         {0x34, 0x88, 0x88, 0, 0},
10838         {0x35, 0x32, 0x32, 0, 0},
10839         {0x36, 0x77, 0x77, 0, 0},
10840         {0x37, 0x17, 0x17, 1, 1},
10841         {0x38, 0xf0, 0xf0, 1, 1},
10842         {0x39, 0x20, 0x20, 0, 0},
10843         {0x3A, 0x8, 0x8, 0, 0},
10844         {0x3B, 0x55, 0x55, 1, 1},
10845         {0x3C, 0, 0, 0, 0},
10846         {0x3D, 0x88, 0x88, 1, 1},
10847         {0x3E, 0, 0, 0, 0},
10848         {0x3F, 0x44, 0x44, 0, 0},
10849         {0x40, 0x7, 0x7, 1, 1},
10850         {0x41, 0x6, 0x6, 0, 0},
10851         {0x42, 0x4, 0x4, 0, 0},
10852         {0x43, 0, 0, 0, 0},
10853         {0x44, 0x8, 0x8, 0, 0},
10854         {0x45, 0x55, 0x55, 1, 1},
10855         {0x46, 0, 0, 0, 0},
10856         {0x47, 0x11, 0x11, 0, 0},
10857         {0x48, 0, 0, 0, 0},
10858         {0x49, 0x44, 0x44, 0, 0},
10859         {0x4A, 0x7, 0x7, 0, 0},
10860         {0x4B, 0x6, 0x6, 0, 0},
10861         {0x4C, 0x4, 0x4, 0, 0},
10862         {0x4D, 0, 0, 0, 0},
10863         {0x4E, 0, 0, 0, 0},
10864         {0x4F, 0x26, 0x26, 1, 1},
10865         {0x50, 0x26, 0x26, 1, 1},
10866         {0x51, 0xf, 0xf, 1, 1},
10867         {0x52, 0xf, 0xf, 1, 1},
10868         {0x53, 0x44, 0x44, 0, 0},
10869         {0x54, 0, 0, 0, 0},
10870         {0x55, 0, 0, 0, 0},
10871         {0x56, 0x8, 0x8, 0, 0},
10872         {0x57, 0x8, 0x8, 0, 0},
10873         {0x58, 0x7, 0x7, 0, 0},
10874         {0x59, 0x22, 0x22, 0, 0},
10875         {0x5A, 0x22, 0x22, 0, 0},
10876         {0x5B, 0x2, 0x2, 0, 0},
10877         {0x5C, 0x4, 0x4, 1, 1},
10878         {0x5D, 0x7, 0x7, 0, 0},
10879         {0x5E, 0x55, 0x55, 0, 0},
10880         {0x5F, 0x23, 0x23, 0, 0},
10881         {0x60, 0x41, 0x41, 0, 0},
10882         {0x61, 0x1, 0x1, 0, 0},
10883         {0x62, 0xa, 0xa, 0, 0},
10884         {0x63, 0, 0, 0, 0},
10885         {0x64, 0, 0, 0, 0},
10886         {0x65, 0, 0, 0, 0},
10887         {0x66, 0, 0, 0, 0},
10888         {0x67, 0, 0, 0, 0},
10889         {0x68, 0, 0, 0, 0},
10890         {0x69, 0, 0, 0, 0},
10891         {0x6A, 0, 0, 0, 0},
10892         {0x6B, 0xc, 0xc, 0, 0},
10893         {0x6C, 0, 0, 0, 0},
10894         {0x6D, 0, 0, 0, 0},
10895         {0x6E, 0, 0, 0, 0},
10896         {0x6F, 0, 0, 0, 0},
10897         {0x70, 0, 0, 0, 0},
10898         {0x71, 0, 0, 0, 0},
10899         {0x72, 0x22, 0x22, 0, 0},
10900         {0x73, 0x22, 0x22, 0, 0},
10901         {0x74, 0, 0, 1, 1},
10902         {0x75, 0xa, 0xa, 0, 0},
10903         {0x76, 0x1, 0x1, 0, 0},
10904         {0x77, 0x22, 0x22, 0, 0},
10905         {0x78, 0x30, 0x30, 0, 0},
10906         {0x79, 0, 0, 0, 0},
10907         {0x7A, 0, 0, 0, 0},
10908         {0x7B, 0, 0, 0, 0},
10909         {0x7C, 0, 0, 0, 0},
10910         {0x7D, 0x5, 0x5, 1, 1},
10911         {0x7E, 0, 0, 0, 0},
10912         {0x7F, 0, 0, 0, 0},
10913         {0x80, 0, 0, 0, 0},
10914         {0x81, 0, 0, 0, 0},
10915         {0x82, 0, 0, 0, 0},
10916         {0x83, 0, 0, 0, 0},
10917         {0x84, 0, 0, 0, 0},
10918         {0x85, 0, 0, 0, 0},
10919         {0x86, 0, 0, 0, 0},
10920         {0x87, 0, 0, 0, 0},
10921         {0x88, 0, 0, 0, 0},
10922         {0x89, 0, 0, 0, 0},
10923         {0x8A, 0, 0, 0, 0},
10924         {0x8B, 0, 0, 0, 0},
10925         {0x8C, 0, 0, 0, 0},
10926         {0x8D, 0, 0, 0, 0},
10927         {0x8E, 0, 0, 0, 0},
10928         {0x8F, 0, 0, 0, 0},
10929         {0x90, 0, 0, 0, 0},
10930         {0x91, 0, 0, 0, 0},
10931         {0x92, 0, 0, 0, 0},
10932         {0x93, 0, 0, 0, 0},
10933         {0x94, 0, 0, 0, 0},
10934         {0xFFFF, 0, 0, 0, 0},
10935 };
10936
10937 static const struct radio_regs regs_SYN_2056_rev11[] = {
10938         {0x02, 0, 0, 0, 0},
10939         {0x03, 0, 0, 0, 0},
10940         {0x04, 0, 0, 0, 0},
10941         {0x05, 0, 0, 0, 0},
10942         {0x06, 0, 0, 0, 0},
10943         {0x07, 0, 0, 0, 0},
10944         {0x08, 0, 0, 0, 0},
10945         {0x09, 0x1, 0x1, 0, 0},
10946         {0x0A, 0, 0, 0, 0},
10947         {0x0B, 0, 0, 0, 0},
10948         {0x0C, 0, 0, 0, 0},
10949         {0x0D, 0, 0, 0, 0},
10950         {0x0E, 0, 0, 0, 0},
10951         {0x0F, 0, 0, 0, 0},
10952         {0x10, 0, 0, 0, 0},
10953         {0x11, 0, 0, 0, 0},
10954         {0x12, 0, 0, 0, 0},
10955         {0x13, 0, 0, 0, 0},
10956         {0x14, 0, 0, 0, 0},
10957         {0x15, 0, 0, 0, 0},
10958         {0x16, 0, 0, 0, 0},
10959         {0x17, 0, 0, 0, 0},
10960         {0x18, 0, 0, 0, 0},
10961         {0x19, 0, 0, 0, 0},
10962         {0x1A, 0, 0, 0, 0},
10963         {0x1B, 0, 0, 0, 0},
10964         {0x1C, 0, 0, 0, 0},
10965         {0x1D, 0, 0, 0, 0},
10966         {0x1E, 0, 0, 0, 0},
10967         {0x1F, 0, 0, 0, 0},
10968         {0x20, 0, 0, 0, 0},
10969         {0x21, 0, 0, 0, 0},
10970         {0x22, 0x60, 0x60, 0, 0},
10971         {0x23, 0x6, 0x6, 0, 0},
10972         {0x24, 0xc, 0xc, 0, 0},
10973         {0x25, 0, 0, 0, 0},
10974         {0x26, 0, 0, 0, 0},
10975         {0x27, 0, 0, 0, 0},
10976         {0x28, 0x1, 0x1, 0, 0},
10977         {0x29, 0, 0, 0, 0},
10978         {0x2A, 0, 0, 0, 0},
10979         {0x2B, 0, 0, 0, 0},
10980         {0x2C, 0, 0, 0, 0},
10981         {0x2D, 0, 0, 0, 0},
10982         {0x2E, 0, 0, 0, 0},
10983         {0x2F, 0x1f, 0x1f, 0, 0},
10984         {0x30, 0x15, 0x15, 0, 0},
10985         {0x31, 0xf, 0xf, 0, 0},
10986         {0x32, 0, 0, 0, 0},
10987         {0x33, 0, 0, 0, 0},
10988         {0x34, 0, 0, 0, 0},
10989         {0x35, 0, 0, 0, 0},
10990         {0x36, 0, 0, 0, 0},
10991         {0x37, 0, 0, 0, 0},
10992         {0x38, 0, 0, 0, 0},
10993         {0x39, 0, 0, 0, 0},
10994         {0x3A, 0, 0, 0, 0},
10995         {0x3B, 0, 0, 0, 0},
10996         {0x3C, 0x13, 0x13, 0, 0},
10997         {0x3D, 0xf, 0xf, 0, 0},
10998         {0x3E, 0x18, 0x18, 0, 0},
10999         {0x3F, 0, 0, 0, 0},
11000         {0x40, 0, 0, 0, 0},
11001         {0x41, 0x20, 0x20, 0, 0},
11002         {0x42, 0x20, 0x20, 0, 0},
11003         {0x43, 0, 0, 0, 0},
11004         {0x44, 0x77, 0x77, 0, 0},
11005         {0x45, 0x7, 0x7, 0, 0},
11006         {0x46, 0x1, 0x1, 0, 0},
11007         {0x47, 0x6, 0x6, 1, 1},
11008         {0x48, 0xf, 0xf, 0, 0},
11009         {0x49, 0x3f, 0x3f, 1, 1},
11010         {0x4A, 0x32, 0x32, 0, 0},
11011         {0x4B, 0x6, 0x6, 1, 1},
11012         {0x4C, 0x6, 0x6, 1, 1},
11013         {0x4D, 0x4, 0x4, 0, 0},
11014         {0x4E, 0x2b, 0x2b, 1, 1},
11015         {0x4F, 0x1, 0x1, 0, 0},
11016         {0x50, 0x1c, 0x1c, 0, 0},
11017         {0x51, 0x2, 0x2, 0, 0},
11018         {0x52, 0x2, 0x2, 0, 0},
11019         {0x53, 0xf7, 0xf7, 1, 1},
11020         {0x54, 0xb4, 0xb4, 0, 0},
11021         {0x55, 0xd2, 0xd2, 0, 0},
11022         {0x56, 0, 0, 0, 0},
11023         {0x57, 0, 0, 0, 0},
11024         {0x58, 0x4, 0x4, 0, 0},
11025         {0x59, 0x96, 0x96, 0, 0},
11026         {0x5A, 0x3e, 0x3e, 0, 0},
11027         {0x5B, 0x3e, 0x3e, 0, 0},
11028         {0x5C, 0x13, 0x13, 0, 0},
11029         {0x5D, 0x2, 0x2, 0, 0},
11030         {0x5E, 0, 0, 0, 0},
11031         {0x5F, 0x7, 0x7, 0, 0},
11032         {0x60, 0x7, 0x7, 1, 1},
11033         {0x61, 0x8, 0x8, 0, 0},
11034         {0x62, 0x3, 0x3, 0, 0},
11035         {0x63, 0, 0, 0, 0},
11036         {0x64, 0, 0, 0, 0},
11037         {0x65, 0, 0, 0, 0},
11038         {0x66, 0, 0, 0, 0},
11039         {0x67, 0, 0, 0, 0},
11040         {0x68, 0x40, 0x40, 0, 0},
11041         {0x69, 0, 0, 0, 0},
11042         {0x6A, 0, 0, 0, 0},
11043         {0x6B, 0, 0, 0, 0},
11044         {0x6C, 0, 0, 0, 0},
11045         {0x6D, 0x1, 0x1, 0, 0},
11046         {0x6E, 0, 0, 0, 0},
11047         {0x6F, 0, 0, 0, 0},
11048         {0x70, 0x60, 0x60, 0, 0},
11049         {0x71, 0x66, 0x66, 0, 0},
11050         {0x72, 0xc, 0xc, 0, 0},
11051         {0x73, 0x66, 0x66, 0, 0},
11052         {0x74, 0x8f, 0x8f, 1, 1},
11053         {0x75, 0, 0, 0, 0},
11054         {0x76, 0xcc, 0xcc, 0, 0},
11055         {0x77, 0x1, 0x1, 0, 0},
11056         {0x78, 0x66, 0x66, 0, 0},
11057         {0x79, 0x66, 0x66, 0, 0},
11058         {0x7A, 0, 0, 0, 0},
11059         {0x7B, 0, 0, 0, 0},
11060         {0x7C, 0, 0, 0, 0},
11061         {0x7D, 0, 0, 0, 0},
11062         {0x7E, 0, 0, 0, 0},
11063         {0x7F, 0, 0, 0, 0},
11064         {0x80, 0, 0, 0, 0},
11065         {0x81, 0, 0, 0, 0},
11066         {0x82, 0, 0, 0, 0},
11067         {0x83, 0, 0, 0, 0},
11068         {0x84, 0, 0, 0, 0},
11069         {0x85, 0xff, 0xff, 0, 0},
11070         {0x86, 0, 0, 0, 0},
11071         {0x87, 0, 0, 0, 0},
11072         {0x88, 0, 0, 0, 0},
11073         {0x89, 0, 0, 0, 0},
11074         {0x8A, 0, 0, 0, 0},
11075         {0x8B, 0, 0, 0, 0},
11076         {0x8C, 0, 0, 0, 0},
11077         {0x8D, 0, 0, 0, 0},
11078         {0x8E, 0, 0, 0, 0},
11079         {0x8F, 0, 0, 0, 0},
11080         {0x90, 0, 0, 0, 0},
11081         {0x91, 0, 0, 0, 0},
11082         {0x92, 0, 0, 0, 0},
11083         {0x93, 0, 0, 0, 0},
11084         {0x94, 0, 0, 0, 0},
11085         {0x95, 0, 0, 0, 0},
11086         {0x96, 0, 0, 0, 0},
11087         {0x97, 0, 0, 0, 0},
11088         {0x98, 0, 0, 0, 0},
11089         {0x99, 0, 0, 0, 0},
11090         {0x9A, 0, 0, 0, 0},
11091         {0x9B, 0, 0, 0, 0},
11092         {0x9C, 0, 0, 0, 0},
11093         {0x9D, 0, 0, 0, 0},
11094         {0x9E, 0, 0, 0, 0},
11095         {0x9F, 0x6, 0x6, 0, 0},
11096         {0xA0, 0x66, 0x66, 0, 0},
11097         {0xA1, 0x66, 0x66, 0, 0},
11098         {0xA2, 0x66, 0x66, 0, 0},
11099         {0xA3, 0x66, 0x66, 0, 0},
11100         {0xA4, 0x66, 0x66, 0, 0},
11101         {0xA5, 0x66, 0x66, 0, 0},
11102         {0xA6, 0x66, 0x66, 0, 0},
11103         {0xA7, 0x66, 0x66, 0, 0},
11104         {0xA8, 0x66, 0x66, 0, 0},
11105         {0xA9, 0x66, 0x66, 0, 0},
11106         {0xAA, 0x66, 0x66, 0, 0},
11107         {0xAB, 0x66, 0x66, 0, 0},
11108         {0xAC, 0x66, 0x66, 0, 0},
11109         {0xAD, 0x66, 0x66, 0, 0},
11110         {0xAE, 0x66, 0x66, 0, 0},
11111         {0xAF, 0x66, 0x66, 0, 0},
11112         {0xB0, 0x66, 0x66, 0, 0},
11113         {0xB1, 0x66, 0x66, 0, 0},
11114         {0xB2, 0x66, 0x66, 0, 0},
11115         {0xB3, 0xa, 0xa, 0, 0},
11116         {0xB4, 0, 0, 0, 0},
11117         {0xB5, 0, 0, 0, 0},
11118         {0xB6, 0, 0, 0, 0},
11119         {0xFFFF, 0, 0, 0, 0},
11120 };
11121
11122 static const struct radio_regs regs_TX_2056_rev11[] = {
11123         {0x02, 0, 0, 0, 0},
11124         {0x03, 0, 0, 0, 0},
11125         {0x04, 0, 0, 0, 0},
11126         {0x05, 0, 0, 0, 0},
11127         {0x06, 0, 0, 0, 0},
11128         {0x07, 0, 0, 0, 0},
11129         {0x08, 0, 0, 0, 0},
11130         {0x09, 0, 0, 0, 0},
11131         {0x0A, 0, 0, 0, 0},
11132         {0x0B, 0, 0, 0, 0},
11133         {0x0C, 0, 0, 0, 0},
11134         {0x0D, 0, 0, 0, 0},
11135         {0x0E, 0, 0, 0, 0},
11136         {0x0F, 0, 0, 0, 0},
11137         {0x10, 0, 0, 0, 0},
11138         {0x11, 0, 0, 0, 0},
11139         {0x12, 0, 0, 0, 0},
11140         {0x13, 0, 0, 0, 0},
11141         {0x14, 0, 0, 0, 0},
11142         {0x15, 0, 0, 0, 0},
11143         {0x16, 0, 0, 0, 0},
11144         {0x17, 0, 0, 0, 0},
11145         {0x18, 0, 0, 0, 0},
11146         {0x19, 0, 0, 0, 0},
11147         {0x1A, 0, 0, 0, 0},
11148         {0x1B, 0, 0, 0, 0},
11149         {0x1C, 0, 0, 0, 0},
11150         {0x1D, 0, 0, 0, 0},
11151         {0x1E, 0, 0, 0, 0},
11152         {0x1F, 0, 0, 0, 0},
11153         {0x20, 0, 0, 0, 0},
11154         {0x21, 0x88, 0x88, 0, 0},
11155         {0x22, 0x88, 0x88, 0, 0},
11156         {0x23, 0x88, 0x88, 0, 0},
11157         {0x24, 0x88, 0x88, 0, 0},
11158         {0x25, 0xc, 0xc, 0, 0},
11159         {0x26, 0, 0, 0, 0},
11160         {0x27, 0x3, 0x3, 0, 0},
11161         {0x28, 0, 0, 0, 0},
11162         {0x29, 0x3, 0x3, 0, 0},
11163         {0x2A, 0x37, 0x37, 0, 0},
11164         {0x2B, 0x3, 0x3, 0, 0},
11165         {0x2C, 0, 0, 0, 0},
11166         {0x2D, 0, 0, 0, 0},
11167         {0x2E, 0x1, 0x1, 0, 0},
11168         {0x2F, 0x1, 0x1, 0, 0},
11169         {0x30, 0, 0, 0, 0},
11170         {0x31, 0, 0, 0, 0},
11171         {0x32, 0, 0, 0, 0},
11172         {0x33, 0x11, 0x11, 0, 0},
11173         {0x34, 0xee, 0xee, 1, 1},
11174         {0x35, 0, 0, 0, 0},
11175         {0x36, 0, 0, 0, 0},
11176         {0x37, 0x3, 0x3, 0, 0},
11177         {0x38, 0x50, 0x50, 1, 1},
11178         {0x39, 0, 0, 0, 0},
11179         {0x3A, 0x50, 0x50, 1, 1},
11180         {0x3B, 0, 0, 0, 0},
11181         {0x3C, 0x6e, 0x6e, 0, 0},
11182         {0x3D, 0xf0, 0xf0, 1, 1},
11183         {0x3E, 0, 0, 0, 0},
11184         {0x3F, 0, 0, 0, 0},
11185         {0x40, 0, 0, 0, 0},
11186         {0x41, 0x3, 0x3, 0, 0},
11187         {0x42, 0x3, 0x3, 0, 0},
11188         {0x43, 0, 0, 0, 0},
11189         {0x44, 0x1e, 0x1e, 0, 0},
11190         {0x45, 0, 0, 0, 0},
11191         {0x46, 0x6e, 0x6e, 0, 0},
11192         {0x47, 0xf0, 0xf0, 1, 1},
11193         {0x48, 0, 0, 0, 0},
11194         {0x49, 0x2, 0x2, 0, 0},
11195         {0x4A, 0xff, 0xff, 1, 1},
11196         {0x4B, 0xc, 0xc, 0, 0},
11197         {0x4C, 0, 0, 0, 0},
11198         {0x4D, 0x38, 0x38, 0, 0},
11199         {0x4E, 0x70, 0x70, 1, 1},
11200         {0x4F, 0x2, 0x2, 0, 0},
11201         {0x50, 0x88, 0x88, 0, 0},
11202         {0x51, 0xc, 0xc, 0, 0},
11203         {0x52, 0, 0, 0, 0},
11204         {0x53, 0x8, 0x8, 0, 0},
11205         {0x54, 0x70, 0x70, 1, 1},
11206         {0x55, 0x2, 0x2, 0, 0},
11207         {0x56, 0xff, 0xff, 1, 1},
11208         {0x57, 0, 0, 0, 0},
11209         {0x58, 0x83, 0x83, 0, 0},
11210         {0x59, 0x77, 0x77, 1, 1},
11211         {0x5A, 0, 0, 0, 0},
11212         {0x5B, 0x2, 0x2, 0, 0},
11213         {0x5C, 0x88, 0x88, 0, 0},
11214         {0x5D, 0, 0, 0, 0},
11215         {0x5E, 0x8, 0x8, 0, 0},
11216         {0x5F, 0x77, 0x77, 1, 1},
11217         {0x60, 0x1, 0x1, 0, 0},
11218         {0x61, 0, 0, 0, 0},
11219         {0x62, 0x7, 0x7, 0, 0},
11220         {0x63, 0, 0, 0, 0},
11221         {0x64, 0x7, 0x7, 0, 0},
11222         {0x65, 0, 0, 0, 0},
11223         {0x66, 0, 0, 0, 0},
11224         {0x67, 0, 0, 1, 1},
11225         {0x68, 0, 0, 0, 0},
11226         {0x69, 0xa, 0xa, 0, 0},
11227         {0x6A, 0, 0, 0, 0},
11228         {0x6B, 0, 0, 0, 0},
11229         {0x6C, 0, 0, 0, 0},
11230         {0x6D, 0, 0, 0, 0},
11231         {0x6E, 0, 0, 0, 0},
11232         {0x6F, 0, 0, 0, 0},
11233         {0x70, 0, 0, 0, 0},
11234         {0x71, 0x2, 0x2, 0, 0},
11235         {0x72, 0, 0, 0, 0},
11236         {0x73, 0, 0, 0, 0},
11237         {0x74, 0xe, 0xe, 0, 0},
11238         {0x75, 0xe, 0xe, 0, 0},
11239         {0x76, 0xe, 0xe, 0, 0},
11240         {0x77, 0x13, 0x13, 0, 0},
11241         {0x78, 0x13, 0x13, 0, 0},
11242         {0x79, 0x1b, 0x1b, 0, 0},
11243         {0x7A, 0x1b, 0x1b, 0, 0},
11244         {0x7B, 0x55, 0x55, 0, 0},
11245         {0x7C, 0x5b, 0x5b, 0, 0},
11246         {0x7D, 0x30, 0x30, 1, 1},
11247         {0x7E, 0, 0, 0, 0},
11248         {0x7F, 0, 0, 0, 0},
11249         {0x80, 0, 0, 0, 0},
11250         {0x81, 0, 0, 0, 0},
11251         {0x82, 0, 0, 0, 0},
11252         {0x83, 0, 0, 0, 0},
11253         {0x84, 0, 0, 0, 0},
11254         {0x85, 0, 0, 0, 0},
11255         {0x86, 0, 0, 0, 0},
11256         {0x87, 0, 0, 0, 0},
11257         {0x88, 0, 0, 0, 0},
11258         {0x89, 0, 0, 0, 0},
11259         {0x8A, 0, 0, 0, 0},
11260         {0x8B, 0, 0, 0, 0},
11261         {0x8C, 0, 0, 0, 0},
11262         {0x8D, 0, 0, 0, 0},
11263         {0x8E, 0, 0, 0, 0},
11264         {0x8F, 0, 0, 0, 0},
11265         {0x90, 0, 0, 0, 0},
11266         {0x91, 0, 0, 0, 0},
11267         {0x92, 0, 0, 0, 0},
11268         {0x93, 0x70, 0x70, 0, 0},
11269         {0x94, 0x70, 0x70, 0, 0},
11270         {0x95, 0x70, 0x70, 0, 0},
11271         {0x96, 0x70, 0x70, 0, 0},
11272         {0x97, 0x70, 0x70, 0, 0},
11273         {0x98, 0x70, 0x70, 0, 0},
11274         {0x99, 0x70, 0x70, 0, 0},
11275         {0x9A, 0x70, 0x70, 0, 0},
11276         {0xFFFF, 0, 0, 0, 0},
11277 };
11278
11279 static const struct radio_regs regs_RX_2056_rev11[] = {
11280         {0x02, 0, 0, 0, 0},
11281         {0x03, 0, 0, 0, 0},
11282         {0x04, 0, 0, 0, 0},
11283         {0x05, 0, 0, 0, 0},
11284         {0x06, 0, 0, 0, 0},
11285         {0x07, 0, 0, 0, 0},
11286         {0x08, 0, 0, 0, 0},
11287         {0x09, 0, 0, 0, 0},
11288         {0x0A, 0, 0, 0, 0},
11289         {0x0B, 0, 0, 0, 0},
11290         {0x0C, 0, 0, 0, 0},
11291         {0x0D, 0, 0, 0, 0},
11292         {0x0E, 0, 0, 0, 0},
11293         {0x0F, 0, 0, 0, 0},
11294         {0x10, 0, 0, 0, 0},
11295         {0x11, 0, 0, 0, 0},
11296         {0x12, 0, 0, 0, 0},
11297         {0x13, 0, 0, 0, 0},
11298         {0x14, 0, 0, 0, 0},
11299         {0x15, 0, 0, 0, 0},
11300         {0x16, 0, 0, 0, 0},
11301         {0x17, 0, 0, 0, 0},
11302         {0x18, 0, 0, 0, 0},
11303         {0x19, 0, 0, 0, 0},
11304         {0x1A, 0, 0, 0, 0},
11305         {0x1B, 0, 0, 0, 0},
11306         {0x1C, 0, 0, 0, 0},
11307         {0x1D, 0, 0, 0, 0},
11308         {0x1E, 0, 0, 0, 0},
11309         {0x1F, 0, 0, 0, 0},
11310         {0x20, 0x3, 0x3, 0, 0},
11311         {0x21, 0, 0, 0, 0},
11312         {0x22, 0, 0, 0, 0},
11313         {0x23, 0x90, 0x90, 0, 0},
11314         {0x24, 0x55, 0x55, 0, 0},
11315         {0x25, 0x15, 0x15, 0, 0},
11316         {0x26, 0x5, 0x5, 0, 0},
11317         {0x27, 0x15, 0x15, 0, 0},
11318         {0x28, 0x5, 0x5, 0, 0},
11319         {0x29, 0x20, 0x20, 0, 0},
11320         {0x2A, 0x11, 0x11, 0, 0},
11321         {0x2B, 0x90, 0x90, 0, 0},
11322         {0x2C, 0, 0, 0, 0},
11323         {0x2D, 0x88, 0x88, 0, 0},
11324         {0x2E, 0x32, 0x32, 0, 0},
11325         {0x2F, 0x77, 0x77, 0, 0},
11326         {0x30, 0x17, 0x17, 1, 1},
11327         {0x31, 0xff, 0xff, 1, 1},
11328         {0x32, 0x20, 0x20, 0, 0},
11329         {0x33, 0, 0, 0, 0},
11330         {0x34, 0x88, 0x88, 0, 0},
11331         {0x35, 0x32, 0x32, 0, 0},
11332         {0x36, 0x77, 0x77, 0, 0},
11333         {0x37, 0x17, 0x17, 1, 1},
11334         {0x38, 0xf0, 0xf0, 1, 1},
11335         {0x39, 0x20, 0x20, 0, 0},
11336         {0x3A, 0x8, 0x8, 0, 0},
11337         {0x3B, 0x55, 0x55, 1, 1},
11338         {0x3C, 0, 0, 0, 0},
11339         {0x3D, 0x88, 0x88, 1, 1},
11340         {0x3E, 0, 0, 0, 0},
11341         {0x3F, 0x44, 0x44, 0, 0},
11342         {0x40, 0x7, 0x7, 1, 1},
11343         {0x41, 0x6, 0x6, 0, 0},
11344         {0x42, 0x4, 0x4, 0, 0},
11345         {0x43, 0, 0, 0, 0},
11346         {0x44, 0x8, 0x8, 0, 0},
11347         {0x45, 0x55, 0x55, 1, 1},
11348         {0x46, 0, 0, 0, 0},
11349         {0x47, 0x11, 0x11, 0, 0},
11350         {0x48, 0, 0, 0, 0},
11351         {0x49, 0x44, 0x44, 0, 0},
11352         {0x4A, 0x7, 0x7, 0, 0},
11353         {0x4B, 0x6, 0x6, 0, 0},
11354         {0x4C, 0x4, 0x4, 0, 0},
11355         {0x4D, 0, 0, 0, 0},
11356         {0x4E, 0, 0, 0, 0},
11357         {0x4F, 0x26, 0x26, 1, 1},
11358         {0x50, 0x26, 0x26, 1, 1},
11359         {0x51, 0xf, 0xf, 1, 1},
11360         {0x52, 0xf, 0xf, 1, 1},
11361         {0x53, 0x44, 0x44, 0, 0},
11362         {0x54, 0, 0, 0, 0},
11363         {0x55, 0, 0, 0, 0},
11364         {0x56, 0x8, 0x8, 0, 0},
11365         {0x57, 0x8, 0x8, 0, 0},
11366         {0x58, 0x7, 0x7, 0, 0},
11367         {0x59, 0x22, 0x22, 0, 0},
11368         {0x5A, 0x22, 0x22, 0, 0},
11369         {0x5B, 0x2, 0x2, 0, 0},
11370         {0x5C, 0x4, 0x4, 1, 1},
11371         {0x5D, 0x7, 0x7, 0, 0},
11372         {0x5E, 0x55, 0x55, 0, 0},
11373         {0x5F, 0x23, 0x23, 0, 0},
11374         {0x60, 0x41, 0x41, 0, 0},
11375         {0x61, 0x1, 0x1, 0, 0},
11376         {0x62, 0xa, 0xa, 0, 0},
11377         {0x63, 0, 0, 0, 0},
11378         {0x64, 0, 0, 0, 0},
11379         {0x65, 0, 0, 0, 0},
11380         {0x66, 0, 0, 0, 0},
11381         {0x67, 0, 0, 0, 0},
11382         {0x68, 0, 0, 0, 0},
11383         {0x69, 0, 0, 0, 0},
11384         {0x6A, 0, 0, 0, 0},
11385         {0x6B, 0xc, 0xc, 0, 0},
11386         {0x6C, 0, 0, 0, 0},
11387         {0x6D, 0, 0, 0, 0},
11388         {0x6E, 0, 0, 0, 0},
11389         {0x6F, 0, 0, 0, 0},
11390         {0x70, 0, 0, 0, 0},
11391         {0x71, 0, 0, 0, 0},
11392         {0x72, 0x22, 0x22, 0, 0},
11393         {0x73, 0x22, 0x22, 0, 0},
11394         {0x74, 0, 0, 1, 1},
11395         {0x75, 0xa, 0xa, 0, 0},
11396         {0x76, 0x1, 0x1, 0, 0},
11397         {0x77, 0x22, 0x22, 0, 0},
11398         {0x78, 0x30, 0x30, 0, 0},
11399         {0x79, 0, 0, 0, 0},
11400         {0x7A, 0, 0, 0, 0},
11401         {0x7B, 0, 0, 0, 0},
11402         {0x7C, 0, 0, 0, 0},
11403         {0x7D, 0x5, 0x5, 1, 1},
11404         {0x7E, 0, 0, 0, 0},
11405         {0x7F, 0, 0, 0, 0},
11406         {0x80, 0, 0, 0, 0},
11407         {0x81, 0, 0, 0, 0},
11408         {0x82, 0, 0, 0, 0},
11409         {0x83, 0, 0, 0, 0},
11410         {0x84, 0, 0, 0, 0},
11411         {0x85, 0, 0, 0, 0},
11412         {0x86, 0, 0, 0, 0},
11413         {0x87, 0, 0, 0, 0},
11414         {0x88, 0, 0, 0, 0},
11415         {0x89, 0, 0, 0, 0},
11416         {0x8A, 0, 0, 0, 0},
11417         {0x8B, 0, 0, 0, 0},
11418         {0x8C, 0, 0, 0, 0},
11419         {0x8D, 0, 0, 0, 0},
11420         {0x8E, 0, 0, 0, 0},
11421         {0x8F, 0, 0, 0, 0},
11422         {0x90, 0, 0, 0, 0},
11423         {0x91, 0, 0, 0, 0},
11424         {0x92, 0, 0, 0, 0},
11425         {0x93, 0, 0, 0, 0},
11426         {0x94, 0, 0, 0, 0},
11427         {0xFFFF, 0, 0, 0, 0},
11428 };
11429
11430 static struct radio_20xx_regs regs_2057_rev4[] = {
11431         {0x00, 0x84, 0},
11432         {0x01, 0, 0},
11433         {0x02, 0x60, 0},
11434         {0x03, 0x1f, 0},
11435         {0x04, 0x4, 0},
11436         {0x05, 0x2, 0},
11437         {0x06, 0x1, 0},
11438         {0x07, 0x1, 0},
11439         {0x08, 0x1, 0},
11440         {0x09, 0x69, 0},
11441         {0x0A, 0x66, 0},
11442         {0x0B, 0x6, 0},
11443         {0x0C, 0x18, 0},
11444         {0x0D, 0x3, 0},
11445         {0x0E, 0x20, 1},
11446         {0x0F, 0x20, 0},
11447         {0x10, 0, 0},
11448         {0x11, 0x7c, 0},
11449         {0x12, 0x42, 0},
11450         {0x13, 0xbd, 0},
11451         {0x14, 0x7, 0},
11452         {0x15, 0xf7, 0},
11453         {0x16, 0x8, 0},
11454         {0x17, 0x17, 0},
11455         {0x18, 0x7, 0},
11456         {0x19, 0, 0},
11457         {0x1A, 0x2, 0},
11458         {0x1B, 0x13, 0},
11459         {0x1C, 0x3e, 0},
11460         {0x1D, 0x3e, 0},
11461         {0x1E, 0x96, 0},
11462         {0x1F, 0x4, 0},
11463         {0x20, 0, 0},
11464         {0x21, 0, 0},
11465         {0x22, 0x17, 0},
11466         {0x23, 0x4, 0},
11467         {0x24, 0x1, 0},
11468         {0x25, 0x6, 0},
11469         {0x26, 0x4, 0},
11470         {0x27, 0xd, 0},
11471         {0x28, 0xd, 0},
11472         {0x29, 0x30, 0},
11473         {0x2A, 0x32, 0},
11474         {0x2B, 0x8, 0},
11475         {0x2C, 0x1c, 0},
11476         {0x2D, 0x2, 0},
11477         {0x2E, 0x4, 0},
11478         {0x2F, 0x7f, 0},
11479         {0x30, 0x27, 0},
11480         {0x31, 0, 1},
11481         {0x32, 0, 1},
11482         {0x33, 0, 1},
11483         {0x34, 0, 0},
11484         {0x35, 0x26, 1},
11485         {0x36, 0x18, 0},
11486         {0x37, 0x7, 0},
11487         {0x38, 0x66, 0},
11488         {0x39, 0x66, 0},
11489         {0x3A, 0x66, 0},
11490         {0x3B, 0x66, 0},
11491         {0x3C, 0xff, 1},
11492         {0x3D, 0xff, 1},
11493         {0x3E, 0xff, 1},
11494         {0x3F, 0xff, 1},
11495         {0x40, 0x16, 0},
11496         {0x41, 0x7, 0},
11497         {0x42, 0x19, 0},
11498         {0x43, 0x7, 0},
11499         {0x44, 0x6, 0},
11500         {0x45, 0x3, 0},
11501         {0x46, 0x1, 0},
11502         {0x47, 0x7, 0},
11503         {0x48, 0x33, 0},
11504         {0x49, 0x5, 0},
11505         {0x4A, 0x77, 0},
11506         {0x4B, 0x66, 0},
11507         {0x4C, 0x66, 0},
11508         {0x4D, 0, 0},
11509         {0x4E, 0x4, 0},
11510         {0x4F, 0xc, 0},
11511         {0x50, 0, 0},
11512         {0x51, 0x75, 0},
11513         {0x56, 0x7, 0},
11514         {0x57, 0, 0},
11515         {0x58, 0, 0},
11516         {0x59, 0xa8, 0},
11517         {0x5A, 0, 0},
11518         {0x5B, 0x1f, 0},
11519         {0x5C, 0x30, 0},
11520         {0x5D, 0x1, 0},
11521         {0x5E, 0x30, 0},
11522         {0x5F, 0x70, 0},
11523         {0x60, 0, 0},
11524         {0x61, 0, 0},
11525         {0x62, 0x33, 1},
11526         {0x63, 0x19, 0},
11527         {0x64, 0x62, 0},
11528         {0x65, 0, 0},
11529         {0x66, 0x11, 0},
11530         {0x69, 0, 0},
11531         {0x6A, 0x7e, 0},
11532         {0x6B, 0x3f, 0},
11533         {0x6C, 0x7f, 0},
11534         {0x6D, 0x78, 0},
11535         {0x6E, 0xc8, 0},
11536         {0x6F, 0x88, 0},
11537         {0x70, 0x8, 0},
11538         {0x71, 0xf, 0},
11539         {0x72, 0xbc, 0},
11540         {0x73, 0x8, 0},
11541         {0x74, 0x60, 0},
11542         {0x75, 0x1e, 0},
11543         {0x76, 0x70, 0},
11544         {0x77, 0, 0},
11545         {0x78, 0, 0},
11546         {0x79, 0, 0},
11547         {0x7A, 0x33, 0},
11548         {0x7B, 0x1e, 0},
11549         {0x7C, 0x62, 0},
11550         {0x7D, 0x11, 0},
11551         {0x80, 0x3c, 0},
11552         {0x81, 0x9c, 0},
11553         {0x82, 0xa, 0},
11554         {0x83, 0x9d, 0},
11555         {0x84, 0xa, 0},
11556         {0x85, 0, 0},
11557         {0x86, 0x40, 0},
11558         {0x87, 0x40, 0},
11559         {0x88, 0x88, 0},
11560         {0x89, 0x10, 0},
11561         {0x8A, 0xf0, 1},
11562         {0x8B, 0x10, 1},
11563         {0x8C, 0xf0, 1},
11564         {0x8D, 0, 0},
11565         {0x8E, 0, 0},
11566         {0x8F, 0x10, 0},
11567         {0x90, 0x55, 0},
11568         {0x91, 0x3f, 1},
11569         {0x92, 0x36, 1},
11570         {0x93, 0, 0},
11571         {0x94, 0, 0},
11572         {0x95, 0, 0},
11573         {0x96, 0x87, 0},
11574         {0x97, 0x11, 0},
11575         {0x98, 0, 0},
11576         {0x99, 0x33, 0},
11577         {0x9A, 0x88, 0},
11578         {0x9B, 0, 0},
11579         {0x9C, 0x87, 0},
11580         {0x9D, 0x11, 0},
11581         {0x9E, 0, 0},
11582         {0x9F, 0x33, 0},
11583         {0xA0, 0x88, 0},
11584         {0xA1, 0xe1, 0},
11585         {0xA2, 0x3f, 0},
11586         {0xA3, 0x44, 0},
11587         {0xA4, 0x8c, 1},
11588         {0xA5, 0x6d, 0},
11589         {0xA6, 0x22, 0},
11590         {0xA7, 0xbe, 0},
11591         {0xA8, 0x55, 1},
11592         {0xA9, 0xc, 0},
11593         {0xAA, 0xc, 0},
11594         {0xAB, 0xaa, 0},
11595         {0xAC, 0x2, 0},
11596         {0xAD, 0, 0},
11597         {0xAE, 0x10, 0},
11598         {0xAF, 0x1, 1},
11599         {0xB0, 0, 0},
11600         {0xB1, 0, 0},
11601         {0xB2, 0x80, 0},
11602         {0xB3, 0x60, 0},
11603         {0xB4, 0x44, 0},
11604         {0xB5, 0x55, 0},
11605         {0xB6, 0x1, 0},
11606         {0xB7, 0x55, 0},
11607         {0xB8, 0x1, 0},
11608         {0xB9, 0x5, 0},
11609         {0xBA, 0x55, 0},
11610         {0xBB, 0x55, 0},
11611         {0xC1, 0, 0},
11612         {0xC2, 0, 0},
11613         {0xC3, 0, 0},
11614         {0xC4, 0, 0},
11615         {0xC5, 0, 0},
11616         {0xC6, 0, 0},
11617         {0xC7, 0, 0},
11618         {0xC8, 0, 0},
11619         {0xC9, 0, 0},
11620         {0xCA, 0, 0},
11621         {0xCB, 0, 0},
11622         {0xCC, 0, 0},
11623         {0xCD, 0, 0},
11624         {0xCE, 0x5e, 0},
11625         {0xCF, 0xc, 0},
11626         {0xD0, 0xc, 0},
11627         {0xD1, 0xc, 0},
11628         {0xD2, 0, 0},
11629         {0xD3, 0x2b, 0},
11630         {0xD4, 0xc, 0},
11631         {0xD5, 0, 0},
11632         {0xD6, 0x75, 0},
11633         {0xDB, 0x7, 0},
11634         {0xDC, 0, 0},
11635         {0xDD, 0, 0},
11636         {0xDE, 0xa8, 0},
11637         {0xDF, 0, 0},
11638         {0xE0, 0x1f, 0},
11639         {0xE1, 0x30, 0},
11640         {0xE2, 0x1, 0},
11641         {0xE3, 0x30, 0},
11642         {0xE4, 0x70, 0},
11643         {0xE5, 0, 0},
11644         {0xE6, 0, 0},
11645         {0xE7, 0x33, 0},
11646         {0xE8, 0x19, 0},
11647         {0xE9, 0x62, 0},
11648         {0xEA, 0, 0},
11649         {0xEB, 0x11, 0},
11650         {0xEE, 0, 0},
11651         {0xEF, 0x7e, 0},
11652         {0xF0, 0x3f, 0},
11653         {0xF1, 0x7f, 0},
11654         {0xF2, 0x78, 0},
11655         {0xF3, 0xc8, 0},
11656         {0xF4, 0x88, 0},
11657         {0xF5, 0x8, 0},
11658         {0xF6, 0xf, 0},
11659         {0xF7, 0xbc, 0},
11660         {0xF8, 0x8, 0},
11661         {0xF9, 0x60, 0},
11662         {0xFA, 0x1e, 0},
11663         {0xFB, 0x70, 0},
11664         {0xFC, 0, 0},
11665         {0xFD, 0, 0},
11666         {0xFE, 0, 0},
11667         {0xFF, 0x33, 0},
11668         {0x100, 0x1e, 0},
11669         {0x101, 0x62, 0},
11670         {0x102, 0x11, 0},
11671         {0x105, 0x3c, 0},
11672         {0x106, 0x9c, 0},
11673         {0x107, 0xa, 0},
11674         {0x108, 0x9d, 0},
11675         {0x109, 0xa, 0},
11676         {0x10A, 0, 0},
11677         {0x10B, 0x40, 0},
11678         {0x10C, 0x40, 0},
11679         {0x10D, 0x88, 0},
11680         {0x10E, 0x10, 0},
11681         {0x10F, 0xf0, 1},
11682         {0x110, 0x10, 1},
11683         {0x111, 0xf0, 1},
11684         {0x112, 0, 0},
11685         {0x113, 0, 0},
11686         {0x114, 0x10, 0},
11687         {0x115, 0x55, 0},
11688         {0x116, 0x3f, 1},
11689         {0x117, 0x36, 1},
11690         {0x118, 0, 0},
11691         {0x119, 0, 0},
11692         {0x11A, 0, 0},
11693         {0x11B, 0x87, 0},
11694         {0x11C, 0x11, 0},
11695         {0x11D, 0, 0},
11696         {0x11E, 0x33, 0},
11697         {0x11F, 0x88, 0},
11698         {0x120, 0, 0},
11699         {0x121, 0x87, 0},
11700         {0x122, 0x11, 0},
11701         {0x123, 0, 0},
11702         {0x124, 0x33, 0},
11703         {0x125, 0x88, 0},
11704         {0x126, 0xe1, 0},
11705         {0x127, 0x3f, 0},
11706         {0x128, 0x44, 0},
11707         {0x129, 0x8c, 1},
11708         {0x12A, 0x6d, 0},
11709         {0x12B, 0x22, 0},
11710         {0x12C, 0xbe, 0},
11711         {0x12D, 0x55, 1},
11712         {0x12E, 0xc, 0},
11713         {0x12F, 0xc, 0},
11714         {0x130, 0xaa, 0},
11715         {0x131, 0x2, 0},
11716         {0x132, 0, 0},
11717         {0x133, 0x10, 0},
11718         {0x134, 0x1, 1},
11719         {0x135, 0, 0},
11720         {0x136, 0, 0},
11721         {0x137, 0x80, 0},
11722         {0x138, 0x60, 0},
11723         {0x139, 0x44, 0},
11724         {0x13A, 0x55, 0},
11725         {0x13B, 0x1, 0},
11726         {0x13C, 0x55, 0},
11727         {0x13D, 0x1, 0},
11728         {0x13E, 0x5, 0},
11729         {0x13F, 0x55, 0},
11730         {0x140, 0x55, 0},
11731         {0x146, 0, 0},
11732         {0x147, 0, 0},
11733         {0x148, 0, 0},
11734         {0x149, 0, 0},
11735         {0x14A, 0, 0},
11736         {0x14B, 0, 0},
11737         {0x14C, 0, 0},
11738         {0x14D, 0, 0},
11739         {0x14E, 0, 0},
11740         {0x14F, 0, 0},
11741         {0x150, 0, 0},
11742         {0x151, 0, 0},
11743         {0x152, 0, 0},
11744         {0x153, 0, 0},
11745         {0x154, 0xc, 0},
11746         {0x155, 0xc, 0},
11747         {0x156, 0xc, 0},
11748         {0x157, 0, 0},
11749         {0x158, 0x2b, 0},
11750         {0x159, 0x84, 0},
11751         {0x15A, 0x15, 0},
11752         {0x15B, 0xf, 0},
11753         {0x15C, 0, 0},
11754         {0x15D, 0, 0},
11755         {0x15E, 0, 1},
11756         {0x15F, 0, 1},
11757         {0x160, 0, 1},
11758         {0x161, 0, 1},
11759         {0x162, 0, 1},
11760         {0x163, 0, 1},
11761         {0x164, 0, 0},
11762         {0x165, 0, 0},
11763         {0x166, 0, 0},
11764         {0x167, 0, 0},
11765         {0x168, 0, 0},
11766         {0x169, 0x2, 1},
11767         {0x16A, 0, 1},
11768         {0x16B, 0, 1},
11769         {0x16C, 0, 1},
11770         {0x16D, 0, 0},
11771         {0x170, 0, 0},
11772         {0x171, 0x77, 0},
11773         {0x172, 0x77, 0},
11774         {0x173, 0x77, 0},
11775         {0x174, 0x77, 0},
11776         {0x175, 0, 0},
11777         {0x176, 0x3, 0},
11778         {0x177, 0x37, 0},
11779         {0x178, 0x3, 0},
11780         {0x179, 0, 0},
11781         {0x17A, 0x21, 0},
11782         {0x17B, 0x21, 0},
11783         {0x17C, 0, 0},
11784         {0x17D, 0xaa, 0},
11785         {0x17E, 0, 0},
11786         {0x17F, 0xaa, 0},
11787         {0x180, 0, 0},
11788         {0x190, 0, 0},
11789         {0x191, 0x77, 0},
11790         {0x192, 0x77, 0},
11791         {0x193, 0x77, 0},
11792         {0x194, 0x77, 0},
11793         {0x195, 0, 0},
11794         {0x196, 0x3, 0},
11795         {0x197, 0x37, 0},
11796         {0x198, 0x3, 0},
11797         {0x199, 0, 0},
11798         {0x19A, 0x21, 0},
11799         {0x19B, 0x21, 0},
11800         {0x19C, 0, 0},
11801         {0x19D, 0xaa, 0},
11802         {0x19E, 0, 0},
11803         {0x19F, 0xaa, 0},
11804         {0x1A0, 0, 0},
11805         {0x1A1, 0x2, 0},
11806         {0x1A2, 0xf, 0},
11807         {0x1A3, 0xf, 0},
11808         {0x1A4, 0, 1},
11809         {0x1A5, 0, 1},
11810         {0x1A6, 0, 1},
11811         {0x1A7, 0x2, 0},
11812         {0x1A8, 0xf, 0},
11813         {0x1A9, 0xf, 0},
11814         {0x1AA, 0, 1},
11815         {0x1AB, 0, 1},
11816         {0x1AC, 0, 1},
11817         {0xFFFF, 0, 0},
11818 };
11819
11820 static struct radio_20xx_regs regs_2057_rev5[] = {
11821         {0x00, 0, 1},
11822         {0x01, 0x57, 1},
11823         {0x02, 0x20, 1},
11824         {0x03, 0x1f, 0},
11825         {0x04, 0x4, 0},
11826         {0x05, 0x2, 0},
11827         {0x06, 0x1, 0},
11828         {0x07, 0x1, 0},
11829         {0x08, 0x1, 0},
11830         {0x09, 0x69, 0},
11831         {0x0A, 0x66, 0},
11832         {0x0B, 0x6, 0},
11833         {0x0C, 0x18, 0},
11834         {0x0D, 0x3, 0},
11835         {0x0E, 0x20, 0},
11836         {0x0F, 0x20, 0},
11837         {0x10, 0, 0},
11838         {0x11, 0x7c, 0},
11839         {0x12, 0x42, 0},
11840         {0x13, 0xbd, 0},
11841         {0x14, 0x7, 0},
11842         {0x15, 0x87, 0},
11843         {0x16, 0x8, 0},
11844         {0x17, 0x17, 0},
11845         {0x18, 0x7, 0},
11846         {0x19, 0, 0},
11847         {0x1A, 0x2, 0},
11848         {0x1B, 0x13, 0},
11849         {0x1C, 0x3e, 0},
11850         {0x1D, 0x3e, 0},
11851         {0x1E, 0x96, 0},
11852         {0x1F, 0x4, 0},
11853         {0x20, 0, 0},
11854         {0x21, 0, 0},
11855         {0x22, 0x17, 0},
11856         {0x23, 0x6, 1},
11857         {0x24, 0x1, 0},
11858         {0x25, 0x6, 0},
11859         {0x26, 0x4, 0},
11860         {0x27, 0xd, 0},
11861         {0x28, 0xd, 0},
11862         {0x29, 0x30, 0},
11863         {0x2A, 0x32, 0},
11864         {0x2B, 0x8, 0},
11865         {0x2C, 0x1c, 0},
11866         {0x2D, 0x2, 0},
11867         {0x2E, 0x4, 0},
11868         {0x2F, 0x7f, 0},
11869         {0x30, 0x27, 0},
11870         {0x31, 0, 1},
11871         {0x32, 0, 1},
11872         {0x33, 0, 1},
11873         {0x34, 0, 0},
11874         {0x35, 0x20, 0},
11875         {0x36, 0x18, 0},
11876         {0x37, 0x7, 0},
11877         {0x38, 0x66, 0},
11878         {0x39, 0x66, 0},
11879         {0x3C, 0xff, 0},
11880         {0x3D, 0xff, 0},
11881         {0x40, 0x16, 0},
11882         {0x41, 0x7, 0},
11883         {0x45, 0x3, 0},
11884         {0x46, 0x1, 0},
11885         {0x47, 0x7, 0},
11886         {0x4B, 0x66, 0},
11887         {0x4C, 0x66, 0},
11888         {0x4D, 0, 0},
11889         {0x4E, 0x4, 0},
11890         {0x4F, 0xc, 0},
11891         {0x50, 0, 0},
11892         {0x51, 0x70, 1},
11893         {0x56, 0x7, 0},
11894         {0x57, 0, 0},
11895         {0x58, 0, 0},
11896         {0x59, 0x88, 1},
11897         {0x5A, 0, 0},
11898         {0x5B, 0x1f, 0},
11899         {0x5C, 0x20, 1},
11900         {0x5D, 0x1, 0},
11901         {0x5E, 0x30, 0},
11902         {0x5F, 0x70, 0},
11903         {0x60, 0, 0},
11904         {0x61, 0, 0},
11905         {0x62, 0x33, 1},
11906         {0x63, 0xf, 1},
11907         {0x64, 0xf, 1},
11908         {0x65, 0, 0},
11909         {0x66, 0x11, 0},
11910         {0x80, 0x3c, 0},
11911         {0x81, 0x1, 1},
11912         {0x82, 0xa, 0},
11913         {0x85, 0, 0},
11914         {0x86, 0x40, 0},
11915         {0x87, 0x40, 0},
11916         {0x88, 0x88, 0},
11917         {0x89, 0x10, 0},
11918         {0x8A, 0xf0, 0},
11919         {0x8B, 0x10, 0},
11920         {0x8C, 0xf0, 0},
11921         {0x8F, 0x10, 0},
11922         {0x90, 0x55, 0},
11923         {0x91, 0x3f, 1},
11924         {0x92, 0x36, 1},
11925         {0x93, 0, 0},
11926         {0x94, 0, 0},
11927         {0x95, 0, 0},
11928         {0x96, 0x87, 0},
11929         {0x97, 0x11, 0},
11930         {0x98, 0, 0},
11931         {0x99, 0x33, 0},
11932         {0x9A, 0x88, 0},
11933         {0xA1, 0x20, 1},
11934         {0xA2, 0x3f, 0},
11935         {0xA3, 0x44, 0},
11936         {0xA4, 0x8c, 0},
11937         {0xA5, 0x6c, 0},
11938         {0xA6, 0x22, 0},
11939         {0xA7, 0xbe, 0},
11940         {0xA8, 0x55, 0},
11941         {0xAA, 0xc, 0},
11942         {0xAB, 0xaa, 0},
11943         {0xAC, 0x2, 0},
11944         {0xAD, 0, 0},
11945         {0xAE, 0x10, 0},
11946         {0xAF, 0x1, 0},
11947         {0xB0, 0, 0},
11948         {0xB1, 0, 0},
11949         {0xB2, 0x80, 0},
11950         {0xB3, 0x60, 0},
11951         {0xB4, 0x44, 0},
11952         {0xB5, 0x55, 0},
11953         {0xB6, 0x1, 0},
11954         {0xB7, 0x55, 0},
11955         {0xB8, 0x1, 0},
11956         {0xB9, 0x5, 0},
11957         {0xBA, 0x55, 0},
11958         {0xBB, 0x55, 0},
11959         {0xC3, 0, 0},
11960         {0xC4, 0, 0},
11961         {0xC5, 0, 0},
11962         {0xC6, 0, 0},
11963         {0xC7, 0, 0},
11964         {0xC8, 0, 0},
11965         {0xC9, 0, 0},
11966         {0xCA, 0, 0},
11967         {0xCB, 0, 0},
11968         {0xCD, 0, 0},
11969         {0xCE, 0x5e, 0},
11970         {0xCF, 0xc, 0},
11971         {0xD0, 0xc, 0},
11972         {0xD1, 0xc, 0},
11973         {0xD2, 0, 0},
11974         {0xD3, 0x2b, 0},
11975         {0xD4, 0xc, 0},
11976         {0xD5, 0, 0},
11977         {0xD6, 0x70, 1},
11978         {0xDB, 0x7, 0},
11979         {0xDC, 0, 0},
11980         {0xDD, 0, 0},
11981         {0xDE, 0x88, 1},
11982         {0xDF, 0, 0},
11983         {0xE0, 0x1f, 0},
11984         {0xE1, 0x20, 1},
11985         {0xE2, 0x1, 0},
11986         {0xE3, 0x30, 0},
11987         {0xE4, 0x70, 0},
11988         {0xE5, 0, 0},
11989         {0xE6, 0, 0},
11990         {0xE7, 0x33, 0},
11991         {0xE8, 0xf, 1},
11992         {0xE9, 0xf, 1},
11993         {0xEA, 0, 0},
11994         {0xEB, 0x11, 0},
11995         {0x105, 0x3c, 0},
11996         {0x106, 0x1, 1},
11997         {0x107, 0xa, 0},
11998         {0x10A, 0, 0},
11999         {0x10B, 0x40, 0},
12000         {0x10C, 0x40, 0},
12001         {0x10D, 0x88, 0},
12002         {0x10E, 0x10, 0},
12003         {0x10F, 0xf0, 0},
12004         {0x110, 0x10, 0},
12005         {0x111, 0xf0, 0},
12006         {0x114, 0x10, 0},
12007         {0x115, 0x55, 0},
12008         {0x116, 0x3f, 1},
12009         {0x117, 0x36, 1},
12010         {0x118, 0, 0},
12011         {0x119, 0, 0},
12012         {0x11A, 0, 0},
12013         {0x11B, 0x87, 0},
12014         {0x11C, 0x11, 0},
12015         {0x11D, 0, 0},
12016         {0x11E, 0x33, 0},
12017         {0x11F, 0x88, 0},
12018         {0x126, 0x20, 1},
12019         {0x127, 0x3f, 0},
12020         {0x128, 0x44, 0},
12021         {0x129, 0x8c, 0},
12022         {0x12A, 0x6c, 0},
12023         {0x12B, 0x22, 0},
12024         {0x12C, 0xbe, 0},
12025         {0x12D, 0x55, 0},
12026         {0x12F, 0xc, 0},
12027         {0x130, 0xaa, 0},
12028         {0x131, 0x2, 0},
12029         {0x132, 0, 0},
12030         {0x133, 0x10, 0},
12031         {0x134, 0x1, 0},
12032         {0x135, 0, 0},
12033         {0x136, 0, 0},
12034         {0x137, 0x80, 0},
12035         {0x138, 0x60, 0},
12036         {0x139, 0x44, 0},
12037         {0x13A, 0x55, 0},
12038         {0x13B, 0x1, 0},
12039         {0x13C, 0x55, 0},
12040         {0x13D, 0x1, 0},
12041         {0x13E, 0x5, 0},
12042         {0x13F, 0x55, 0},
12043         {0x140, 0x55, 0},
12044         {0x148, 0, 0},
12045         {0x149, 0, 0},
12046         {0x14A, 0, 0},
12047         {0x14B, 0, 0},
12048         {0x14C, 0, 0},
12049         {0x14D, 0, 0},
12050         {0x14E, 0, 0},
12051         {0x14F, 0, 0},
12052         {0x150, 0, 0},
12053         {0x154, 0xc, 0},
12054         {0x155, 0xc, 0},
12055         {0x156, 0xc, 0},
12056         {0x157, 0, 0},
12057         {0x158, 0x2b, 0},
12058         {0x159, 0x84, 0},
12059         {0x15A, 0x15, 0},
12060         {0x15B, 0xf, 0},
12061         {0x15C, 0, 0},
12062         {0x15D, 0, 0},
12063         {0x15E, 0, 1},
12064         {0x15F, 0, 1},
12065         {0x160, 0, 1},
12066         {0x161, 0, 1},
12067         {0x162, 0, 1},
12068         {0x163, 0, 1},
12069         {0x164, 0, 0},
12070         {0x165, 0, 0},
12071         {0x166, 0, 0},
12072         {0x167, 0, 0},
12073         {0x168, 0, 0},
12074         {0x169, 0, 0},
12075         {0x16A, 0, 1},
12076         {0x16B, 0, 1},
12077         {0x16C, 0, 1},
12078         {0x16D, 0, 0},
12079         {0x170, 0, 0},
12080         {0x171, 0x77, 0},
12081         {0x172, 0x77, 0},
12082         {0x173, 0x77, 0},
12083         {0x174, 0x77, 0},
12084         {0x175, 0, 0},
12085         {0x176, 0x3, 0},
12086         {0x177, 0x37, 0},
12087         {0x178, 0x3, 0},
12088         {0x179, 0, 0},
12089         {0x17B, 0x21, 0},
12090         {0x17C, 0, 0},
12091         {0x17D, 0xaa, 0},
12092         {0x17E, 0, 0},
12093         {0x190, 0, 0},
12094         {0x191, 0x77, 0},
12095         {0x192, 0x77, 0},
12096         {0x193, 0x77, 0},
12097         {0x194, 0x77, 0},
12098         {0x195, 0, 0},
12099         {0x196, 0x3, 0},
12100         {0x197, 0x37, 0},
12101         {0x198, 0x3, 0},
12102         {0x199, 0, 0},
12103         {0x19B, 0x21, 0},
12104         {0x19C, 0, 0},
12105         {0x19D, 0xaa, 0},
12106         {0x19E, 0, 0},
12107         {0x1A1, 0x2, 0},
12108         {0x1A2, 0xf, 0},
12109         {0x1A3, 0xf, 0},
12110         {0x1A4, 0, 1},
12111         {0x1A5, 0, 1},
12112         {0x1A6, 0, 1},
12113         {0x1A7, 0x2, 0},
12114         {0x1A8, 0xf, 0},
12115         {0x1A9, 0xf, 0},
12116         {0x1AA, 0, 1},
12117         {0x1AB, 0, 1},
12118         {0x1AC, 0, 1},
12119         {0x1AD, 0x84, 0},
12120         {0x1AE, 0x60, 0},
12121         {0x1AF, 0x47, 0},
12122         {0x1B0, 0x47, 0},
12123         {0x1B1, 0, 0},
12124         {0x1B2, 0, 0},
12125         {0x1B3, 0, 0},
12126         {0x1B4, 0, 0},
12127         {0x1B5, 0, 0},
12128         {0x1B6, 0, 0},
12129         {0x1B7, 0xc, 1},
12130         {0x1B8, 0, 0},
12131         {0x1B9, 0, 0},
12132         {0x1BA, 0, 0},
12133         {0x1BB, 0, 0},
12134         {0x1BC, 0, 0},
12135         {0x1BD, 0, 0},
12136         {0x1BE, 0, 0},
12137         {0x1BF, 0, 0},
12138         {0x1C0, 0, 0},
12139         {0x1C1, 0x1, 1},
12140         {0x1C2, 0x80, 1},
12141         {0x1C3, 0, 0},
12142         {0x1C4, 0, 0},
12143         {0x1C5, 0, 0},
12144         {0x1C6, 0, 0},
12145         {0x1C7, 0, 0},
12146         {0x1C8, 0, 0},
12147         {0x1C9, 0, 0},
12148         {0x1CA, 0, 0},
12149         {0xFFFF, 0, 0}
12150 };
12151
12152 static struct radio_20xx_regs regs_2057_rev5v1[] = {
12153         {0x00, 0x15, 1},
12154         {0x01, 0x57, 1},
12155         {0x02, 0x20, 1},
12156         {0x03, 0x1f, 0},
12157         {0x04, 0x4, 0},
12158         {0x05, 0x2, 0},
12159         {0x06, 0x1, 0},
12160         {0x07, 0x1, 0},
12161         {0x08, 0x1, 0},
12162         {0x09, 0x69, 0},
12163         {0x0A, 0x66, 0},
12164         {0x0B, 0x6, 0},
12165         {0x0C, 0x18, 0},
12166         {0x0D, 0x3, 0},
12167         {0x0E, 0x20, 0},
12168         {0x0F, 0x20, 0},
12169         {0x10, 0, 0},
12170         {0x11, 0x7c, 0},
12171         {0x12, 0x42, 0},
12172         {0x13, 0xbd, 0},
12173         {0x14, 0x7, 0},
12174         {0x15, 0x87, 0},
12175         {0x16, 0x8, 0},
12176         {0x17, 0x17, 0},
12177         {0x18, 0x7, 0},
12178         {0x19, 0, 0},
12179         {0x1A, 0x2, 0},
12180         {0x1B, 0x13, 0},
12181         {0x1C, 0x3e, 0},
12182         {0x1D, 0x3e, 0},
12183         {0x1E, 0x96, 0},
12184         {0x1F, 0x4, 0},
12185         {0x20, 0, 0},
12186         {0x21, 0, 0},
12187         {0x22, 0x17, 0},
12188         {0x23, 0x6, 1},
12189         {0x24, 0x1, 0},
12190         {0x25, 0x6, 0},
12191         {0x26, 0x4, 0},
12192         {0x27, 0xd, 0},
12193         {0x28, 0xd, 0},
12194         {0x29, 0x30, 0},
12195         {0x2A, 0x32, 0},
12196         {0x2B, 0x8, 0},
12197         {0x2C, 0x1c, 0},
12198         {0x2D, 0x2, 0},
12199         {0x2E, 0x4, 0},
12200         {0x2F, 0x7f, 0},
12201         {0x30, 0x27, 0},
12202         {0x31, 0, 1},
12203         {0x32, 0, 1},
12204         {0x33, 0, 1},
12205         {0x34, 0, 0},
12206         {0x35, 0x20, 0},
12207         {0x36, 0x18, 0},
12208         {0x37, 0x7, 0},
12209         {0x38, 0x66, 0},
12210         {0x39, 0x66, 0},
12211         {0x3C, 0xff, 0},
12212         {0x3D, 0xff, 0},
12213         {0x40, 0x16, 0},
12214         {0x41, 0x7, 0},
12215         {0x45, 0x3, 0},
12216         {0x46, 0x1, 0},
12217         {0x47, 0x7, 0},
12218         {0x4B, 0x66, 0},
12219         {0x4C, 0x66, 0},
12220         {0x4D, 0, 0},
12221         {0x4E, 0x4, 0},
12222         {0x4F, 0xc, 0},
12223         {0x50, 0, 0},
12224         {0x51, 0x70, 1},
12225         {0x56, 0x7, 0},
12226         {0x57, 0, 0},
12227         {0x58, 0, 0},
12228         {0x59, 0x88, 1},
12229         {0x5A, 0, 0},
12230         {0x5B, 0x1f, 0},
12231         {0x5C, 0x20, 1},
12232         {0x5D, 0x1, 0},
12233         {0x5E, 0x30, 0},
12234         {0x5F, 0x70, 0},
12235         {0x60, 0, 0},
12236         {0x61, 0, 0},
12237         {0x62, 0x33, 1},
12238         {0x63, 0xf, 1},
12239         {0x64, 0xf, 1},
12240         {0x65, 0, 0},
12241         {0x66, 0x11, 0},
12242         {0x80, 0x3c, 0},
12243         {0x81, 0x1, 1},
12244         {0x82, 0xa, 0},
12245         {0x85, 0, 0},
12246         {0x86, 0x40, 0},
12247         {0x87, 0x40, 0},
12248         {0x88, 0x88, 0},
12249         {0x89, 0x10, 0},
12250         {0x8A, 0xf0, 0},
12251         {0x8B, 0x10, 0},
12252         {0x8C, 0xf0, 0},
12253         {0x8F, 0x10, 0},
12254         {0x90, 0x55, 0},
12255         {0x91, 0x3f, 1},
12256         {0x92, 0x36, 1},
12257         {0x93, 0, 0},
12258         {0x94, 0, 0},
12259         {0x95, 0, 0},
12260         {0x96, 0x87, 0},
12261         {0x97, 0x11, 0},
12262         {0x98, 0, 0},
12263         {0x99, 0x33, 0},
12264         {0x9A, 0x88, 0},
12265         {0xA1, 0x20, 1},
12266         {0xA2, 0x3f, 0},
12267         {0xA3, 0x44, 0},
12268         {0xA4, 0x8c, 0},
12269         {0xA5, 0x6c, 0},
12270         {0xA6, 0x22, 0},
12271         {0xA7, 0xbe, 0},
12272         {0xA8, 0x55, 0},
12273         {0xAA, 0xc, 0},
12274         {0xAB, 0xaa, 0},
12275         {0xAC, 0x2, 0},
12276         {0xAD, 0, 0},
12277         {0xAE, 0x10, 0},
12278         {0xAF, 0x1, 0},
12279         {0xB0, 0, 0},
12280         {0xB1, 0, 0},
12281         {0xB2, 0x80, 0},
12282         {0xB3, 0x60, 0},
12283         {0xB4, 0x44, 0},
12284         {0xB5, 0x55, 0},
12285         {0xB6, 0x1, 0},
12286         {0xB7, 0x55, 0},
12287         {0xB8, 0x1, 0},
12288         {0xB9, 0x5, 0},
12289         {0xBA, 0x55, 0},
12290         {0xBB, 0x55, 0},
12291         {0xC3, 0, 0},
12292         {0xC4, 0, 0},
12293         {0xC5, 0, 0},
12294         {0xC6, 0, 0},
12295         {0xC7, 0, 0},
12296         {0xC8, 0, 0},
12297         {0xC9, 0x1, 1},
12298         {0xCA, 0, 0},
12299         {0xCB, 0, 0},
12300         {0xCD, 0, 0},
12301         {0xCE, 0x5e, 0},
12302         {0xCF, 0xc, 0},
12303         {0xD0, 0xc, 0},
12304         {0xD1, 0xc, 0},
12305         {0xD2, 0, 0},
12306         {0xD3, 0x2b, 0},
12307         {0xD4, 0xc, 0},
12308         {0xD5, 0, 0},
12309         {0xD6, 0x70, 1},
12310         {0xDB, 0x7, 0},
12311         {0xDC, 0, 0},
12312         {0xDD, 0, 0},
12313         {0xDE, 0x88, 1},
12314         {0xDF, 0, 0},
12315         {0xE0, 0x1f, 0},
12316         {0xE1, 0x20, 1},
12317         {0xE2, 0x1, 0},
12318         {0xE3, 0x30, 0},
12319         {0xE4, 0x70, 0},
12320         {0xE5, 0, 0},
12321         {0xE6, 0, 0},
12322         {0xE7, 0x33, 0},
12323         {0xE8, 0xf, 1},
12324         {0xE9, 0xf, 1},
12325         {0xEA, 0, 0},
12326         {0xEB, 0x11, 0},
12327         {0x105, 0x3c, 0},
12328         {0x106, 0x1, 1},
12329         {0x107, 0xa, 0},
12330         {0x10A, 0, 0},
12331         {0x10B, 0x40, 0},
12332         {0x10C, 0x40, 0},
12333         {0x10D, 0x88, 0},
12334         {0x10E, 0x10, 0},
12335         {0x10F, 0xf0, 0},
12336         {0x110, 0x10, 0},
12337         {0x111, 0xf0, 0},
12338         {0x114, 0x10, 0},
12339         {0x115, 0x55, 0},
12340         {0x116, 0x3f, 1},
12341         {0x117, 0x36, 1},
12342         {0x118, 0, 0},
12343         {0x119, 0, 0},
12344         {0x11A, 0, 0},
12345         {0x11B, 0x87, 0},
12346         {0x11C, 0x11, 0},
12347         {0x11D, 0, 0},
12348         {0x11E, 0x33, 0},
12349         {0x11F, 0x88, 0},
12350         {0x126, 0x20, 1},
12351         {0x127, 0x3f, 0},
12352         {0x128, 0x44, 0},
12353         {0x129, 0x8c, 0},
12354         {0x12A, 0x6c, 0},
12355         {0x12B, 0x22, 0},
12356         {0x12C, 0xbe, 0},
12357         {0x12D, 0x55, 0},
12358         {0x12F, 0xc, 0},
12359         {0x130, 0xaa, 0},
12360         {0x131, 0x2, 0},
12361         {0x132, 0, 0},
12362         {0x133, 0x10, 0},
12363         {0x134, 0x1, 0},
12364         {0x135, 0, 0},
12365         {0x136, 0, 0},
12366         {0x137, 0x80, 0},
12367         {0x138, 0x60, 0},
12368         {0x139, 0x44, 0},
12369         {0x13A, 0x55, 0},
12370         {0x13B, 0x1, 0},
12371         {0x13C, 0x55, 0},
12372         {0x13D, 0x1, 0},
12373         {0x13E, 0x5, 0},
12374         {0x13F, 0x55, 0},
12375         {0x140, 0x55, 0},
12376         {0x148, 0, 0},
12377         {0x149, 0, 0},
12378         {0x14A, 0, 0},
12379         {0x14B, 0, 0},
12380         {0x14C, 0, 0},
12381         {0x14D, 0, 0},
12382         {0x14E, 0x1, 1},
12383         {0x14F, 0, 0},
12384         {0x150, 0, 0},
12385         {0x154, 0xc, 0},
12386         {0x155, 0xc, 0},
12387         {0x156, 0xc, 0},
12388         {0x157, 0, 0},
12389         {0x158, 0x2b, 0},
12390         {0x159, 0x84, 0},
12391         {0x15A, 0x15, 0},
12392         {0x15B, 0xf, 0},
12393         {0x15C, 0, 0},
12394         {0x15D, 0, 0},
12395         {0x15E, 0, 1},
12396         {0x15F, 0, 1},
12397         {0x160, 0, 1},
12398         {0x161, 0, 1},
12399         {0x162, 0, 1},
12400         {0x163, 0, 1},
12401         {0x164, 0, 0},
12402         {0x165, 0, 0},
12403         {0x166, 0, 0},
12404         {0x167, 0, 0},
12405         {0x168, 0, 0},
12406         {0x169, 0, 0},
12407         {0x16A, 0, 1},
12408         {0x16B, 0, 1},
12409         {0x16C, 0, 1},
12410         {0x16D, 0, 0},
12411         {0x170, 0, 0},
12412         {0x171, 0x77, 0},
12413         {0x172, 0x77, 0},
12414         {0x173, 0x77, 0},
12415         {0x174, 0x77, 0},
12416         {0x175, 0, 0},
12417         {0x176, 0x3, 0},
12418         {0x177, 0x37, 0},
12419         {0x178, 0x3, 0},
12420         {0x179, 0, 0},
12421         {0x17B, 0x21, 0},
12422         {0x17C, 0, 0},
12423         {0x17D, 0xaa, 0},
12424         {0x17E, 0, 0},
12425         {0x190, 0, 0},
12426         {0x191, 0x77, 0},
12427         {0x192, 0x77, 0},
12428         {0x193, 0x77, 0},
12429         {0x194, 0x77, 0},
12430         {0x195, 0, 0},
12431         {0x196, 0x3, 0},
12432         {0x197, 0x37, 0},
12433         {0x198, 0x3, 0},
12434         {0x199, 0, 0},
12435         {0x19B, 0x21, 0},
12436         {0x19C, 0, 0},
12437         {0x19D, 0xaa, 0},
12438         {0x19E, 0, 0},
12439         {0x1A1, 0x2, 0},
12440         {0x1A2, 0xf, 0},
12441         {0x1A3, 0xf, 0},
12442         {0x1A4, 0, 1},
12443         {0x1A5, 0, 1},
12444         {0x1A6, 0, 1},
12445         {0x1A7, 0x2, 0},
12446         {0x1A8, 0xf, 0},
12447         {0x1A9, 0xf, 0},
12448         {0x1AA, 0, 1},
12449         {0x1AB, 0, 1},
12450         {0x1AC, 0, 1},
12451         {0x1AD, 0x84, 0},
12452         {0x1AE, 0x60, 0},
12453         {0x1AF, 0x47, 0},
12454         {0x1B0, 0x47, 0},
12455         {0x1B1, 0, 0},
12456         {0x1B2, 0, 0},
12457         {0x1B3, 0, 0},
12458         {0x1B4, 0, 0},
12459         {0x1B5, 0, 0},
12460         {0x1B6, 0, 0},
12461         {0x1B7, 0xc, 1},
12462         {0x1B8, 0, 0},
12463         {0x1B9, 0, 0},
12464         {0x1BA, 0, 0},
12465         {0x1BB, 0, 0},
12466         {0x1BC, 0, 0},
12467         {0x1BD, 0, 0},
12468         {0x1BE, 0, 0},
12469         {0x1BF, 0, 0},
12470         {0x1C0, 0, 0},
12471         {0x1C1, 0x1, 1},
12472         {0x1C2, 0x80, 1},
12473         {0x1C3, 0, 0},
12474         {0x1C4, 0, 0},
12475         {0x1C5, 0, 0},
12476         {0x1C6, 0, 0},
12477         {0x1C7, 0, 0},
12478         {0x1C8, 0, 0},
12479         {0x1C9, 0, 0},
12480         {0x1CA, 0, 0},
12481         {0xFFFF, 0, 0}
12482 };
12483
12484 static struct radio_20xx_regs regs_2057_rev7[] = {
12485         {0x00, 0, 1},
12486         {0x01, 0x57, 1},
12487         {0x02, 0x20, 1},
12488         {0x03, 0x1f, 0},
12489         {0x04, 0x4, 0},
12490         {0x05, 0x2, 0},
12491         {0x06, 0x1, 0},
12492         {0x07, 0x1, 0},
12493         {0x08, 0x1, 0},
12494         {0x09, 0x69, 0},
12495         {0x0A, 0x66, 0},
12496         {0x0B, 0x6, 0},
12497         {0x0C, 0x18, 0},
12498         {0x0D, 0x3, 0},
12499         {0x0E, 0x20, 0},
12500         {0x0F, 0x20, 0},
12501         {0x10, 0, 0},
12502         {0x11, 0x7c, 0},
12503         {0x12, 0x42, 0},
12504         {0x13, 0xbd, 0},
12505         {0x14, 0x7, 0},
12506         {0x15, 0x87, 0},
12507         {0x16, 0x8, 0},
12508         {0x17, 0x17, 0},
12509         {0x18, 0x7, 0},
12510         {0x19, 0, 0},
12511         {0x1A, 0x2, 0},
12512         {0x1B, 0x13, 0},
12513         {0x1C, 0x3e, 0},
12514         {0x1D, 0x3e, 0},
12515         {0x1E, 0x96, 0},
12516         {0x1F, 0x4, 0},
12517         {0x20, 0, 0},
12518         {0x21, 0, 0},
12519         {0x22, 0x17, 0},
12520         {0x23, 0x6, 0},
12521         {0x24, 0x1, 0},
12522         {0x25, 0x6, 0},
12523         {0x26, 0x4, 0},
12524         {0x27, 0xd, 0},
12525         {0x28, 0xd, 0},
12526         {0x29, 0x30, 0},
12527         {0x2A, 0x32, 0},
12528         {0x2B, 0x8, 0},
12529         {0x2C, 0x1c, 0},
12530         {0x2D, 0x2, 0},
12531         {0x2E, 0x4, 0},
12532         {0x2F, 0x7f, 0},
12533         {0x30, 0x27, 0},
12534         {0x31, 0, 1},
12535         {0x32, 0, 1},
12536         {0x33, 0, 1},
12537         {0x34, 0, 0},
12538         {0x35, 0x20, 0},
12539         {0x36, 0x18, 0},
12540         {0x37, 0x7, 0},
12541         {0x38, 0x66, 0},
12542         {0x39, 0x66, 0},
12543         {0x3A, 0x66, 0},
12544         {0x3B, 0x66, 0},
12545         {0x3C, 0xff, 0},
12546         {0x3D, 0xff, 0},
12547         {0x3E, 0xff, 0},
12548         {0x3F, 0xff, 0},
12549         {0x40, 0x16, 0},
12550         {0x41, 0x7, 0},
12551         {0x42, 0x19, 0},
12552         {0x43, 0x7, 0},
12553         {0x44, 0x6, 0},
12554         {0x45, 0x3, 0},
12555         {0x46, 0x1, 0},
12556         {0x47, 0x7, 0},
12557         {0x48, 0x33, 0},
12558         {0x49, 0x5, 0},
12559         {0x4A, 0x77, 0},
12560         {0x4B, 0x66, 0},
12561         {0x4C, 0x66, 0},
12562         {0x4D, 0, 0},
12563         {0x4E, 0x4, 0},
12564         {0x4F, 0xc, 0},
12565         {0x50, 0, 0},
12566         {0x51, 0x70, 1},
12567         {0x56, 0x7, 0},
12568         {0x57, 0, 0},
12569         {0x58, 0, 0},
12570         {0x59, 0x88, 1},
12571         {0x5A, 0, 0},
12572         {0x5B, 0x1f, 0},
12573         {0x5C, 0x20, 1},
12574         {0x5D, 0x1, 0},
12575         {0x5E, 0x30, 0},
12576         {0x5F, 0x70, 0},
12577         {0x60, 0, 0},
12578         {0x61, 0, 0},
12579         {0x62, 0x33, 1},
12580         {0x63, 0xf, 1},
12581         {0x64, 0x13, 1},
12582         {0x65, 0, 0},
12583         {0x66, 0xee, 1},
12584         {0x69, 0, 0},
12585         {0x6A, 0x7e, 0},
12586         {0x6B, 0x3f, 0},
12587         {0x6C, 0x7f, 0},
12588         {0x6D, 0x78, 0},
12589         {0x6E, 0x58, 1},
12590         {0x6F, 0x88, 0},
12591         {0x70, 0x8, 0},
12592         {0x71, 0xf, 0},
12593         {0x72, 0xbc, 0},
12594         {0x73, 0x8, 0},
12595         {0x74, 0x60, 0},
12596         {0x75, 0x13, 1},
12597         {0x76, 0x70, 0},
12598         {0x77, 0, 0},
12599         {0x78, 0, 0},
12600         {0x79, 0, 0},
12601         {0x7A, 0x33, 0},
12602         {0x7B, 0x13, 1},
12603         {0x7C, 0x14, 1},
12604         {0x7D, 0xee, 1},
12605         {0x80, 0x3c, 0},
12606         {0x81, 0x1, 1},
12607         {0x82, 0xa, 0},
12608         {0x83, 0x9d, 0},
12609         {0x84, 0xa, 0},
12610         {0x85, 0, 0},
12611         {0x86, 0x40, 0},
12612         {0x87, 0x40, 0},
12613         {0x88, 0x88, 0},
12614         {0x89, 0x10, 0},
12615         {0x8A, 0xf0, 0},
12616         {0x8B, 0x10, 0},
12617         {0x8C, 0xf0, 0},
12618         {0x8D, 0, 0},
12619         {0x8E, 0, 0},
12620         {0x8F, 0x10, 0},
12621         {0x90, 0x55, 0},
12622         {0x91, 0x3f, 1},
12623         {0x92, 0x36, 1},
12624         {0x93, 0, 0},
12625         {0x94, 0, 0},
12626         {0x95, 0, 0},
12627         {0x96, 0x87, 0},
12628         {0x97, 0x11, 0},
12629         {0x98, 0, 0},
12630         {0x99, 0x33, 0},
12631         {0x9A, 0x88, 0},
12632         {0x9B, 0, 0},
12633         {0x9C, 0x87, 0},
12634         {0x9D, 0x11, 0},
12635         {0x9E, 0, 0},
12636         {0x9F, 0x33, 0},
12637         {0xA0, 0x88, 0},
12638         {0xA1, 0x20, 1},
12639         {0xA2, 0x3f, 0},
12640         {0xA3, 0x44, 0},
12641         {0xA4, 0x8c, 0},
12642         {0xA5, 0x6c, 0},
12643         {0xA6, 0x22, 0},
12644         {0xA7, 0xbe, 0},
12645         {0xA8, 0x55, 0},
12646         {0xAA, 0xc, 0},
12647         {0xAB, 0xaa, 0},
12648         {0xAC, 0x2, 0},
12649         {0xAD, 0, 0},
12650         {0xAE, 0x10, 0},
12651         {0xAF, 0x1, 0},
12652         {0xB0, 0, 0},
12653         {0xB1, 0, 0},
12654         {0xB2, 0x80, 0},
12655         {0xB3, 0x60, 0},
12656         {0xB4, 0x44, 0},
12657         {0xB5, 0x55, 0},
12658         {0xB6, 0x1, 0},
12659         {0xB7, 0x55, 0},
12660         {0xB8, 0x1, 0},
12661         {0xB9, 0x5, 0},
12662         {0xBA, 0x55, 0},
12663         {0xBB, 0x55, 0},
12664         {0xC1, 0, 0},
12665         {0xC2, 0, 0},
12666         {0xC3, 0, 0},
12667         {0xC4, 0, 0},
12668         {0xC5, 0, 0},
12669         {0xC6, 0, 0},
12670         {0xC7, 0, 0},
12671         {0xC8, 0, 0},
12672         {0xC9, 0, 0},
12673         {0xCA, 0, 0},
12674         {0xCB, 0, 0},
12675         {0xCC, 0, 0},
12676         {0xCD, 0, 0},
12677         {0xCE, 0x5e, 0},
12678         {0xCF, 0xc, 0},
12679         {0xD0, 0xc, 0},
12680         {0xD1, 0xc, 0},
12681         {0xD2, 0, 0},
12682         {0xD3, 0x2b, 0},
12683         {0xD4, 0xc, 0},
12684         {0xD5, 0, 0},
12685         {0xD6, 0x70, 1},
12686         {0xDB, 0x7, 0},
12687         {0xDC, 0, 0},
12688         {0xDD, 0, 0},
12689         {0xDE, 0x88, 1},
12690         {0xDF, 0, 0},
12691         {0xE0, 0x1f, 0},
12692         {0xE1, 0x20, 1},
12693         {0xE2, 0x1, 0},
12694         {0xE3, 0x30, 0},
12695         {0xE4, 0x70, 0},
12696         {0xE5, 0, 0},
12697         {0xE6, 0, 0},
12698         {0xE7, 0x33, 0},
12699         {0xE8, 0xf, 1},
12700         {0xE9, 0x13, 1},
12701         {0xEA, 0, 0},
12702         {0xEB, 0xee, 1},
12703         {0xEE, 0, 0},
12704         {0xEF, 0x7e, 0},
12705         {0xF0, 0x3f, 0},
12706         {0xF1, 0x7f, 0},
12707         {0xF2, 0x78, 0},
12708         {0xF3, 0x58, 1},
12709         {0xF4, 0x88, 0},
12710         {0xF5, 0x8, 0},
12711         {0xF6, 0xf, 0},
12712         {0xF7, 0xbc, 0},
12713         {0xF8, 0x8, 0},
12714         {0xF9, 0x60, 0},
12715         {0xFA, 0x13, 1},
12716         {0xFB, 0x70, 0},
12717         {0xFC, 0, 0},
12718         {0xFD, 0, 0},
12719         {0xFE, 0, 0},
12720         {0xFF, 0x33, 0},
12721         {0x100, 0x13, 1},
12722         {0x101, 0x14, 1},
12723         {0x102, 0xee, 1},
12724         {0x105, 0x3c, 0},
12725         {0x106, 0x1, 1},
12726         {0x107, 0xa, 0},
12727         {0x108, 0x9d, 0},
12728         {0x109, 0xa, 0},
12729         {0x10A, 0, 0},
12730         {0x10B, 0x40, 0},
12731         {0x10C, 0x40, 0},
12732         {0x10D, 0x88, 0},
12733         {0x10E, 0x10, 0},
12734         {0x10F, 0xf0, 0},
12735         {0x110, 0x10, 0},
12736         {0x111, 0xf0, 0},
12737         {0x112, 0, 0},
12738         {0x113, 0, 0},
12739         {0x114, 0x10, 0},
12740         {0x115, 0x55, 0},
12741         {0x116, 0x3f, 1},
12742         {0x117, 0x36, 1},
12743         {0x118, 0, 0},
12744         {0x119, 0, 0},
12745         {0x11A, 0, 0},
12746         {0x11B, 0x87, 0},
12747         {0x11C, 0x11, 0},
12748         {0x11D, 0, 0},
12749         {0x11E, 0x33, 0},
12750         {0x11F, 0x88, 0},
12751         {0x120, 0, 0},
12752         {0x121, 0x87, 0},
12753         {0x122, 0x11, 0},
12754         {0x123, 0, 0},
12755         {0x124, 0x33, 0},
12756         {0x125, 0x88, 0},
12757         {0x126, 0x20, 1},
12758         {0x127, 0x3f, 0},
12759         {0x128, 0x44, 0},
12760         {0x129, 0x8c, 0},
12761         {0x12A, 0x6c, 0},
12762         {0x12B, 0x22, 0},
12763         {0x12C, 0xbe, 0},
12764         {0x12D, 0x55, 0},
12765         {0x12F, 0xc, 0},
12766         {0x130, 0xaa, 0},
12767         {0x131, 0x2, 0},
12768         {0x132, 0, 0},
12769         {0x133, 0x10, 0},
12770         {0x134, 0x1, 0},
12771         {0x135, 0, 0},
12772         {0x136, 0, 0},
12773         {0x137, 0x80, 0},
12774         {0x138, 0x60, 0},
12775         {0x139, 0x44, 0},
12776         {0x13A, 0x55, 0},
12777         {0x13B, 0x1, 0},
12778         {0x13C, 0x55, 0},
12779         {0x13D, 0x1, 0},
12780         {0x13E, 0x5, 0},
12781         {0x13F, 0x55, 0},
12782         {0x140, 0x55, 0},
12783         {0x146, 0, 0},
12784         {0x147, 0, 0},
12785         {0x148, 0, 0},
12786         {0x149, 0, 0},
12787         {0x14A, 0, 0},
12788         {0x14B, 0, 0},
12789         {0x14C, 0, 0},
12790         {0x14D, 0, 0},
12791         {0x14E, 0, 0},
12792         {0x14F, 0, 0},
12793         {0x150, 0, 0},
12794         {0x151, 0, 0},
12795         {0x154, 0xc, 0},
12796         {0x155, 0xc, 0},
12797         {0x156, 0xc, 0},
12798         {0x157, 0, 0},
12799         {0x158, 0x2b, 0},
12800         {0x159, 0x84, 0},
12801         {0x15A, 0x15, 0},
12802         {0x15B, 0xf, 0},
12803         {0x15C, 0, 0},
12804         {0x15D, 0, 0},
12805         {0x15E, 0, 1},
12806         {0x15F, 0, 1},
12807         {0x160, 0, 1},
12808         {0x161, 0, 1},
12809         {0x162, 0, 1},
12810         {0x163, 0, 1},
12811         {0x164, 0, 0},
12812         {0x165, 0, 0},
12813         {0x166, 0, 0},
12814         {0x167, 0, 0},
12815         {0x168, 0, 0},
12816         {0x169, 0, 0},
12817         {0x16A, 0, 1},
12818         {0x16B, 0, 1},
12819         {0x16C, 0, 1},
12820         {0x16D, 0, 0},
12821         {0x170, 0, 0},
12822         {0x171, 0x77, 0},
12823         {0x172, 0x77, 0},
12824         {0x173, 0x77, 0},
12825         {0x174, 0x77, 0},
12826         {0x175, 0, 0},
12827         {0x176, 0x3, 0},
12828         {0x177, 0x37, 0},
12829         {0x178, 0x3, 0},
12830         {0x179, 0, 0},
12831         {0x17A, 0x21, 0},
12832         {0x17B, 0x21, 0},
12833         {0x17C, 0, 0},
12834         {0x17D, 0xaa, 0},
12835         {0x17E, 0, 0},
12836         {0x17F, 0xaa, 0},
12837         {0x180, 0, 0},
12838         {0x190, 0, 0},
12839         {0x191, 0x77, 0},
12840         {0x192, 0x77, 0},
12841         {0x193, 0x77, 0},
12842         {0x194, 0x77, 0},
12843         {0x195, 0, 0},
12844         {0x196, 0x3, 0},
12845         {0x197, 0x37, 0},
12846         {0x198, 0x3, 0},
12847         {0x199, 0, 0},
12848         {0x19A, 0x21, 0},
12849         {0x19B, 0x21, 0},
12850         {0x19C, 0, 0},
12851         {0x19D, 0xaa, 0},
12852         {0x19E, 0, 0},
12853         {0x19F, 0xaa, 0},
12854         {0x1A0, 0, 0},
12855         {0x1A1, 0x2, 0},
12856         {0x1A2, 0xf, 0},
12857         {0x1A3, 0xf, 0},
12858         {0x1A4, 0, 1},
12859         {0x1A5, 0, 1},
12860         {0x1A6, 0, 1},
12861         {0x1A7, 0x2, 0},
12862         {0x1A8, 0xf, 0},
12863         {0x1A9, 0xf, 0},
12864         {0x1AA, 0, 1},
12865         {0x1AB, 0, 1},
12866         {0x1AC, 0, 1},
12867         {0x1AD, 0x84, 0},
12868         {0x1AE, 0x60, 0},
12869         {0x1AF, 0x47, 0},
12870         {0x1B0, 0x47, 0},
12871         {0x1B1, 0, 0},
12872         {0x1B2, 0, 0},
12873         {0x1B3, 0, 0},
12874         {0x1B4, 0, 0},
12875         {0x1B5, 0, 0},
12876         {0x1B6, 0, 0},
12877         {0x1B7, 0x5, 1},
12878         {0x1B8, 0, 0},
12879         {0x1B9, 0, 0},
12880         {0x1BA, 0, 0},
12881         {0x1BB, 0, 0},
12882         {0x1BC, 0, 0},
12883         {0x1BD, 0, 0},
12884         {0x1BE, 0, 0},
12885         {0x1BF, 0, 0},
12886         {0x1C0, 0, 0},
12887         {0x1C1, 0, 0},
12888         {0x1C2, 0xa0, 1},
12889         {0x1C3, 0, 0},
12890         {0x1C4, 0, 0},
12891         {0x1C5, 0, 0},
12892         {0x1C6, 0, 0},
12893         {0x1C7, 0, 0},
12894         {0x1C8, 0, 0},
12895         {0x1C9, 0, 0},
12896         {0x1CA, 0, 0},
12897         {0xFFFF, 0, 0}
12898 };
12899
12900 static struct radio_20xx_regs regs_2057_rev8[] = {
12901         {0x00, 0x8, 1},
12902         {0x01, 0x57, 1},
12903         {0x02, 0x20, 1},
12904         {0x03, 0x1f, 0},
12905         {0x04, 0x4, 0},
12906         {0x05, 0x2, 0},
12907         {0x06, 0x1, 0},
12908         {0x07, 0x1, 0},
12909         {0x08, 0x1, 0},
12910         {0x09, 0x69, 0},
12911         {0x0A, 0x66, 0},
12912         {0x0B, 0x6, 0},
12913         {0x0C, 0x18, 0},
12914         {0x0D, 0x3, 0},
12915         {0x0E, 0x20, 0},
12916         {0x0F, 0x20, 0},
12917         {0x10, 0, 0},
12918         {0x11, 0x7c, 0},
12919         {0x12, 0x42, 0},
12920         {0x13, 0xbd, 0},
12921         {0x14, 0x7, 0},
12922         {0x15, 0x87, 0},
12923         {0x16, 0x8, 0},
12924         {0x17, 0x17, 0},
12925         {0x18, 0x7, 0},
12926         {0x19, 0, 0},
12927         {0x1A, 0x2, 0},
12928         {0x1B, 0x13, 0},
12929         {0x1C, 0x3e, 0},
12930         {0x1D, 0x3e, 0},
12931         {0x1E, 0x96, 0},
12932         {0x1F, 0x4, 0},
12933         {0x20, 0, 0},
12934         {0x21, 0, 0},
12935         {0x22, 0x17, 0},
12936         {0x23, 0x6, 0},
12937         {0x24, 0x1, 0},
12938         {0x25, 0x6, 0},
12939         {0x26, 0x4, 0},
12940         {0x27, 0xd, 0},
12941         {0x28, 0xd, 0},
12942         {0x29, 0x30, 0},
12943         {0x2A, 0x32, 0},
12944         {0x2B, 0x8, 0},
12945         {0x2C, 0x1c, 0},
12946         {0x2D, 0x2, 0},
12947         {0x2E, 0x4, 0},
12948         {0x2F, 0x7f, 0},
12949         {0x30, 0x27, 0},
12950         {0x31, 0, 1},
12951         {0x32, 0, 1},
12952         {0x33, 0, 1},
12953         {0x34, 0, 0},
12954         {0x35, 0x20, 0},
12955         {0x36, 0x18, 0},
12956         {0x37, 0x7, 0},
12957         {0x38, 0x66, 0},
12958         {0x39, 0x66, 0},
12959         {0x3A, 0x66, 0},
12960         {0x3B, 0x66, 0},
12961         {0x3C, 0xff, 0},
12962         {0x3D, 0xff, 0},
12963         {0x3E, 0xff, 0},
12964         {0x3F, 0xff, 0},
12965         {0x40, 0x16, 0},
12966         {0x41, 0x7, 0},
12967         {0x42, 0x19, 0},
12968         {0x43, 0x7, 0},
12969         {0x44, 0x6, 0},
12970         {0x45, 0x3, 0},
12971         {0x46, 0x1, 0},
12972         {0x47, 0x7, 0},
12973         {0x48, 0x33, 0},
12974         {0x49, 0x5, 0},
12975         {0x4A, 0x77, 0},
12976         {0x4B, 0x66, 0},
12977         {0x4C, 0x66, 0},
12978         {0x4D, 0, 0},
12979         {0x4E, 0x4, 0},
12980         {0x4F, 0xc, 0},
12981         {0x50, 0, 0},
12982         {0x51, 0x70, 1},
12983         {0x56, 0x7, 0},
12984         {0x57, 0, 0},
12985         {0x58, 0, 0},
12986         {0x59, 0x88, 1},
12987         {0x5A, 0, 0},
12988         {0x5B, 0x1f, 0},
12989         {0x5C, 0x20, 1},
12990         {0x5D, 0x1, 0},
12991         {0x5E, 0x30, 0},
12992         {0x5F, 0x70, 0},
12993         {0x60, 0, 0},
12994         {0x61, 0, 0},
12995         {0x62, 0x33, 1},
12996         {0x63, 0xf, 1},
12997         {0x64, 0xf, 1},
12998         {0x65, 0, 0},
12999         {0x66, 0x11, 0},
13000         {0x69, 0, 0},
13001         {0x6A, 0x7e, 0},
13002         {0x6B, 0x3f, 0},
13003         {0x6C, 0x7f, 0},
13004         {0x6D, 0x78, 0},
13005         {0x6E, 0x58, 1},
13006         {0x6F, 0x88, 0},
13007         {0x70, 0x8, 0},
13008         {0x71, 0xf, 0},
13009         {0x72, 0xbc, 0},
13010         {0x73, 0x8, 0},
13011         {0x74, 0x60, 0},
13012         {0x75, 0x13, 1},
13013         {0x76, 0x70, 0},
13014         {0x77, 0, 0},
13015         {0x78, 0, 0},
13016         {0x79, 0, 0},
13017         {0x7A, 0x33, 0},
13018         {0x7B, 0x13, 1},
13019         {0x7C, 0xf, 1},
13020         {0x7D, 0xee, 1},
13021         {0x80, 0x3c, 0},
13022         {0x81, 0x1, 1},
13023         {0x82, 0xa, 0},
13024         {0x83, 0x9d, 0},
13025         {0x84, 0xa, 0},
13026         {0x85, 0, 0},
13027         {0x86, 0x40, 0},
13028         {0x87, 0x40, 0},
13029         {0x88, 0x88, 0},
13030         {0x89, 0x10, 0},
13031         {0x8A, 0xf0, 0},
13032         {0x8B, 0x10, 0},
13033         {0x8C, 0xf0, 0},
13034         {0x8D, 0, 0},
13035         {0x8E, 0, 0},
13036         {0x8F, 0x10, 0},
13037         {0x90, 0x55, 0},
13038         {0x91, 0x3f, 1},
13039         {0x92, 0x36, 1},
13040         {0x93, 0, 0},
13041         {0x94, 0, 0},
13042         {0x95, 0, 0},
13043         {0x96, 0x87, 0},
13044         {0x97, 0x11, 0},
13045         {0x98, 0, 0},
13046         {0x99, 0x33, 0},
13047         {0x9A, 0x88, 0},
13048         {0x9B, 0, 0},
13049         {0x9C, 0x87, 0},
13050         {0x9D, 0x11, 0},
13051         {0x9E, 0, 0},
13052         {0x9F, 0x33, 0},
13053         {0xA0, 0x88, 0},
13054         {0xA1, 0x20, 1},
13055         {0xA2, 0x3f, 0},
13056         {0xA3, 0x44, 0},
13057         {0xA4, 0x8c, 0},
13058         {0xA5, 0x6c, 0},
13059         {0xA6, 0x22, 0},
13060         {0xA7, 0xbe, 0},
13061         {0xA8, 0x55, 0},
13062         {0xAA, 0xc, 0},
13063         {0xAB, 0xaa, 0},
13064         {0xAC, 0x2, 0},
13065         {0xAD, 0, 0},
13066         {0xAE, 0x10, 0},
13067         {0xAF, 0x1, 0},
13068         {0xB0, 0, 0},
13069         {0xB1, 0, 0},
13070         {0xB2, 0x80, 0},
13071         {0xB3, 0x60, 0},
13072         {0xB4, 0x44, 0},
13073         {0xB5, 0x55, 0},
13074         {0xB6, 0x1, 0},
13075         {0xB7, 0x55, 0},
13076         {0xB8, 0x1, 0},
13077         {0xB9, 0x5, 0},
13078         {0xBA, 0x55, 0},
13079         {0xBB, 0x55, 0},
13080         {0xC1, 0, 0},
13081         {0xC2, 0, 0},
13082         {0xC3, 0, 0},
13083         {0xC4, 0, 0},
13084         {0xC5, 0, 0},
13085         {0xC6, 0, 0},
13086         {0xC7, 0, 0},
13087         {0xC8, 0, 0},
13088         {0xC9, 0x1, 1},
13089         {0xCA, 0, 0},
13090         {0xCB, 0, 0},
13091         {0xCC, 0, 0},
13092         {0xCD, 0, 0},
13093         {0xCE, 0x5e, 0},
13094         {0xCF, 0xc, 0},
13095         {0xD0, 0xc, 0},
13096         {0xD1, 0xc, 0},
13097         {0xD2, 0, 0},
13098         {0xD3, 0x2b, 0},
13099         {0xD4, 0xc, 0},
13100         {0xD5, 0, 0},
13101         {0xD6, 0x70, 1},
13102         {0xDB, 0x7, 0},
13103         {0xDC, 0, 0},
13104         {0xDD, 0, 0},
13105         {0xDE, 0x88, 1},
13106         {0xDF, 0, 0},
13107         {0xE0, 0x1f, 0},
13108         {0xE1, 0x20, 1},
13109         {0xE2, 0x1, 0},
13110         {0xE3, 0x30, 0},
13111         {0xE4, 0x70, 0},
13112         {0xE5, 0, 0},
13113         {0xE6, 0, 0},
13114         {0xE7, 0x33, 0},
13115         {0xE8, 0xf, 1},
13116         {0xE9, 0xf, 1},
13117         {0xEA, 0, 0},
13118         {0xEB, 0x11, 0},
13119         {0xEE, 0, 0},
13120         {0xEF, 0x7e, 0},
13121         {0xF0, 0x3f, 0},
13122         {0xF1, 0x7f, 0},
13123         {0xF2, 0x78, 0},
13124         {0xF3, 0x58, 1},
13125         {0xF4, 0x88, 0},
13126         {0xF5, 0x8, 0},
13127         {0xF6, 0xf, 0},
13128         {0xF7, 0xbc, 0},
13129         {0xF8, 0x8, 0},
13130         {0xF9, 0x60, 0},
13131         {0xFA, 0x13, 1},
13132         {0xFB, 0x70, 0},
13133         {0xFC, 0, 0},
13134         {0xFD, 0, 0},
13135         {0xFE, 0, 0},
13136         {0xFF, 0x33, 0},
13137         {0x100, 0x13, 1},
13138         {0x101, 0xf, 1},
13139         {0x102, 0xee, 1},
13140         {0x105, 0x3c, 0},
13141         {0x106, 0x1, 1},
13142         {0x107, 0xa, 0},
13143         {0x108, 0x9d, 0},
13144         {0x109, 0xa, 0},
13145         {0x10A, 0, 0},
13146         {0x10B, 0x40, 0},
13147         {0x10C, 0x40, 0},
13148         {0x10D, 0x88, 0},
13149         {0x10E, 0x10, 0},
13150         {0x10F, 0xf0, 0},
13151         {0x110, 0x10, 0},
13152         {0x111, 0xf0, 0},
13153         {0x112, 0, 0},
13154         {0x113, 0, 0},
13155         {0x114, 0x10, 0},
13156         {0x115, 0x55, 0},
13157         {0x116, 0x3f, 1},
13158         {0x117, 0x36, 1},
13159         {0x118, 0, 0},
13160         {0x119, 0, 0},
13161         {0x11A, 0, 0},
13162         {0x11B, 0x87, 0},
13163         {0x11C, 0x11, 0},
13164         {0x11D, 0, 0},
13165         {0x11E, 0x33, 0},
13166         {0x11F, 0x88, 0},
13167         {0x120, 0, 0},
13168         {0x121, 0x87, 0},
13169         {0x122, 0x11, 0},
13170         {0x123, 0, 0},
13171         {0x124, 0x33, 0},
13172         {0x125, 0x88, 0},
13173         {0x126, 0x20, 1},
13174         {0x127, 0x3f, 0},
13175         {0x128, 0x44, 0},
13176         {0x129, 0x8c, 0},
13177         {0x12A, 0x6c, 0},
13178         {0x12B, 0x22, 0},
13179         {0x12C, 0xbe, 0},
13180         {0x12D, 0x55, 0},
13181         {0x12F, 0xc, 0},
13182         {0x130, 0xaa, 0},
13183         {0x131, 0x2, 0},
13184         {0x132, 0, 0},
13185         {0x133, 0x10, 0},
13186         {0x134, 0x1, 0},
13187         {0x135, 0, 0},
13188         {0x136, 0, 0},
13189         {0x137, 0x80, 0},
13190         {0x138, 0x60, 0},
13191         {0x139, 0x44, 0},
13192         {0x13A, 0x55, 0},
13193         {0x13B, 0x1, 0},
13194         {0x13C, 0x55, 0},
13195         {0x13D, 0x1, 0},
13196         {0x13E, 0x5, 0},
13197         {0x13F, 0x55, 0},
13198         {0x140, 0x55, 0},
13199         {0x146, 0, 0},
13200         {0x147, 0, 0},
13201         {0x148, 0, 0},
13202         {0x149, 0, 0},
13203         {0x14A, 0, 0},
13204         {0x14B, 0, 0},
13205         {0x14C, 0, 0},
13206         {0x14D, 0, 0},
13207         {0x14E, 0x1, 1},
13208         {0x14F, 0, 0},
13209         {0x150, 0, 0},
13210         {0x151, 0, 0},
13211         {0x154, 0xc, 0},
13212         {0x155, 0xc, 0},
13213         {0x156, 0xc, 0},
13214         {0x157, 0, 0},
13215         {0x158, 0x2b, 0},
13216         {0x159, 0x84, 0},
13217         {0x15A, 0x15, 0},
13218         {0x15B, 0xf, 0},
13219         {0x15C, 0, 0},
13220         {0x15D, 0, 0},
13221         {0x15E, 0, 1},
13222         {0x15F, 0, 1},
13223         {0x160, 0, 1},
13224         {0x161, 0, 1},
13225         {0x162, 0, 1},
13226         {0x163, 0, 1},
13227         {0x164, 0, 0},
13228         {0x165, 0, 0},
13229         {0x166, 0, 0},
13230         {0x167, 0, 0},
13231         {0x168, 0, 0},
13232         {0x169, 0, 0},
13233         {0x16A, 0, 1},
13234         {0x16B, 0, 1},
13235         {0x16C, 0, 1},
13236         {0x16D, 0, 0},
13237         {0x170, 0, 0},
13238         {0x171, 0x77, 0},
13239         {0x172, 0x77, 0},
13240         {0x173, 0x77, 0},
13241         {0x174, 0x77, 0},
13242         {0x175, 0, 0},
13243         {0x176, 0x3, 0},
13244         {0x177, 0x37, 0},
13245         {0x178, 0x3, 0},
13246         {0x179, 0, 0},
13247         {0x17A, 0x21, 0},
13248         {0x17B, 0x21, 0},
13249         {0x17C, 0, 0},
13250         {0x17D, 0xaa, 0},
13251         {0x17E, 0, 0},
13252         {0x17F, 0xaa, 0},
13253         {0x180, 0, 0},
13254         {0x190, 0, 0},
13255         {0x191, 0x77, 0},
13256         {0x192, 0x77, 0},
13257         {0x193, 0x77, 0},
13258         {0x194, 0x77, 0},
13259         {0x195, 0, 0},
13260         {0x196, 0x3, 0},
13261         {0x197, 0x37, 0},
13262         {0x198, 0x3, 0},
13263         {0x199, 0, 0},
13264         {0x19A, 0x21, 0},
13265         {0x19B, 0x21, 0},
13266         {0x19C, 0, 0},
13267         {0x19D, 0xaa, 0},
13268         {0x19E, 0, 0},
13269         {0x19F, 0xaa, 0},
13270         {0x1A0, 0, 0},
13271         {0x1A1, 0x2, 0},
13272         {0x1A2, 0xf, 0},
13273         {0x1A3, 0xf, 0},
13274         {0x1A4, 0, 1},
13275         {0x1A5, 0, 1},
13276         {0x1A6, 0, 1},
13277         {0x1A7, 0x2, 0},
13278         {0x1A8, 0xf, 0},
13279         {0x1A9, 0xf, 0},
13280         {0x1AA, 0, 1},
13281         {0x1AB, 0, 1},
13282         {0x1AC, 0, 1},
13283         {0x1AD, 0x84, 0},
13284         {0x1AE, 0x60, 0},
13285         {0x1AF, 0x47, 0},
13286         {0x1B0, 0x47, 0},
13287         {0x1B1, 0, 0},
13288         {0x1B2, 0, 0},
13289         {0x1B3, 0, 0},
13290         {0x1B4, 0, 0},
13291         {0x1B5, 0, 0},
13292         {0x1B6, 0, 0},
13293         {0x1B7, 0x5, 1},
13294         {0x1B8, 0, 0},
13295         {0x1B9, 0, 0},
13296         {0x1BA, 0, 0},
13297         {0x1BB, 0, 0},
13298         {0x1BC, 0, 0},
13299         {0x1BD, 0, 0},
13300         {0x1BE, 0, 0},
13301         {0x1BF, 0, 0},
13302         {0x1C0, 0, 0},
13303         {0x1C1, 0, 0},
13304         {0x1C2, 0xa0, 1},
13305         {0x1C3, 0, 0},
13306         {0x1C4, 0, 0},
13307         {0x1C5, 0, 0},
13308         {0x1C6, 0, 0},
13309         {0x1C7, 0, 0},
13310         {0x1C8, 0, 0},
13311         {0x1C9, 0, 0},
13312         {0x1CA, 0, 0},
13313         {0xFFFF, 0, 0}
13314 };
13315
13316 static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13317
13318 static s32 nphy_lnagain_est0[] = { -315, 40370 };
13319 static s32 nphy_lnagain_est1[] = { -224, 23242 };
13320
13321 static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13322         {
13323                 {0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13324                 {0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13325                 {0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13326                 {0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13327                 {0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13328                 {0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13329                 {0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13330                 {0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13331                 {0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13332         },
13333         {
13334                 {0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13335                 {0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13336                 {0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13337                 {0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13338                 {0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13339                 {0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13340                 {0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13341                 {0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13342                 {0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13343         }
13344 };
13345
13346 static const u32 nphy_tpc_txgain[] = {
13347         0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13348         0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13349         0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13350         0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13351         0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13352         0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13353         0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13354         0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13355         0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13356         0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13357         0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13358         0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13359         0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13360         0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13361         0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13362         0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13363         0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13364         0x03902942, 0x03902844, 0x03902842, 0x03902744,
13365         0x03902742, 0x03902644, 0x03902642, 0x03902544,
13366         0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13367         0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13368         0x03802842, 0x03802744, 0x03802742, 0x03802644,
13369         0x03802642, 0x03802544, 0x03802542, 0x03802444,
13370         0x03802442, 0x03802344, 0x03802342, 0x03802244,
13371         0x03802242, 0x03802144, 0x03802142, 0x03802044,
13372         0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13373         0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13374         0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13375         0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13376         0x03801842, 0x03801744, 0x03801742, 0x03801644,
13377         0x03801642, 0x03801544, 0x03801542, 0x03801444,
13378         0x03801442, 0x03801344, 0x03801342, 0x00002b00
13379 };
13380
13381 static const u16 nphy_tpc_loscale[] = {
13382         256, 256, 271, 271, 287, 256, 256, 271,
13383         271, 287, 287, 304, 304, 256, 256, 271,
13384         271, 287, 287, 304, 304, 322, 322, 341,
13385         341, 362, 362, 383, 383, 256, 256, 271,
13386         271, 287, 287, 304, 304, 322, 322, 256,
13387         256, 271, 271, 287, 287, 304, 304, 322,
13388         322, 341, 341, 362, 362, 256, 256, 271,
13389         271, 287, 287, 304, 304, 322, 322, 256,
13390         256, 271, 271, 287, 287, 304, 304, 322,
13391         322, 341, 341, 362, 362, 256, 256, 271,
13392         271, 287, 287, 304, 304, 322, 322, 341,
13393         341, 362, 362, 383, 383, 406, 406, 430,
13394         430, 455, 455, 482, 482, 511, 511, 541,
13395         541, 573, 573, 607, 607, 643, 643, 681,
13396         681, 722, 722, 764, 764, 810, 810, 858,
13397         858, 908, 908, 962, 962, 1019, 1019, 256
13398 };
13399
13400 static u32 nphy_tpc_txgain_ipa[] = {
13401         0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13402         0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13403         0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13404         0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13405         0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13406         0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13407         0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13408         0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13409         0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13410         0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13411         0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13412         0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13413         0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13414         0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13415         0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13416         0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13417         0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13418         0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13419         0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13420         0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13421         0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13422         0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13423         0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13424         0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13425         0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13426         0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13427         0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13428         0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13429         0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13430         0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13431         0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13432         0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13433 };
13434
13435 static u32 nphy_tpc_txgain_ipa_rev5[] = {
13436         0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13437         0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13438         0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13439         0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13440         0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13441         0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13442         0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13443         0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13444         0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13445         0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13446         0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13447         0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13448         0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13449         0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13450         0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13451         0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13452         0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13453         0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13454         0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13455         0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13456         0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13457         0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13458         0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13459         0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13460         0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13461         0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13462         0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13463         0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13464         0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13465         0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13466         0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13467         0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13468 };
13469
13470 static u32 nphy_tpc_txgain_ipa_rev6[] = {
13471         0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13472         0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13473         0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13474         0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13475         0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13476         0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13477         0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13478         0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13479         0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13480         0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13481         0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13482         0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13483         0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13484         0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13485         0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13486         0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13487         0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13488         0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13489         0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13490         0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13491         0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13492         0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13493         0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13494         0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13495         0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13496         0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13497         0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13498         0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13499         0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13500         0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13501         0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13502         0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13503 };
13504
13505 static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13506         0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13507         0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13508         0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13509         0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13510         0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13511         0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13512         0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13513         0x70470028, 0x70470026, 0x70470024, 0x70470022,
13514         0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13515         0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13516         0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13517         0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13518         0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13519         0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13520         0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13521         0x70170019, 0x70170018, 0x70170016, 0x70170015,
13522         0x70170014, 0x70170013, 0x70170012, 0x70170010,
13523         0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13524         0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13525         0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13526         0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13527         0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13528         0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13529         0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13530         0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13531         0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13532         0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13533         0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13534         0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13535         0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13536         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13537         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13538 };
13539
13540 static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13541         0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13542         0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13543         0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13544         0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13545         0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13546         0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13547         0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13548         0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13549         0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13550         0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13551         0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13552         0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13553         0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13554         0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13555         0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13556         0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13557         0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13558         0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13559         0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13560         0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13561         0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13562         0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13563         0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13564         0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13565         0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13566         0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13567         0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13568         0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13569         0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13570         0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13571         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13572         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13573 };
13574
13575 static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13576         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13577         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13578         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13579         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13580         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13581         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13582         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13583         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13584         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13585         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13586         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13587         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13588         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13589         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13590         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13591         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13592         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13593         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13594         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13595         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13596         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13597         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13598         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13599         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13600         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13601         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13602         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13603         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13604         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13605         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13606         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13607         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13608 };
13609
13610 static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13611         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13612         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13613         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13614         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13615         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13616         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13617         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13618         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13619         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13620         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13621         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13622         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13623         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13624         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13625         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13626         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13627         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13628         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13629         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13630         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13631         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13632         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13633         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13634         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13635         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13636         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13637         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13638         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13639         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13640         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13641         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13642         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13643 };
13644
13645 static u32 nphy_tpc_txgain_ipa_5g[] = {
13646         0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13647         0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13648         0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13649         0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13650         0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13651         0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13652         0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13653         0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13654         0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13655         0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13656         0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13657         0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13658         0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13659         0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13660         0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13661         0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13662         0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13663         0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13664         0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13665         0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13666         0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13667         0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13668         0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13669         0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13670         0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13671         0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13672         0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13673         0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13674         0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13675         0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13676         0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13677         0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13678 };
13679
13680 static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13681         0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13682         0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13683         0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13684         0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13685         0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13686         0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13687         0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13688         0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13689         0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13690         0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13691         0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13692         0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13693         0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13694         0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13695         0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13696         0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13697         0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13698         0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13699         0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13700         0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13701         0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13702         0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13703         0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13704         0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13705         0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13706         0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13707         0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13708         0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13709         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13710         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13711         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13712         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13713 };
13714
13715 static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13716         0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13717         0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13718         0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13719         0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13720         0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13721         0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13722         0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13723         0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13724         0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13725         0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13726         0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13727         0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13728         0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13729         0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13730         0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13731         0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13732         0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13733         0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13734         0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13735         0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13736         0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13737         0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13738         0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13739         0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13740         0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13741         0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13742         0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13743         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13744         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13745         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13746         0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13747         0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13748 };
13749
13750 static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13751         -114, -108, -98, -91, -84, -78, -70, -62,
13752         -54, -46, -39, -31, -23, -15, -8, 0
13753 };
13754
13755 static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13756         -100, -95, -89, -83, -77, -70, -63, -56,
13757         -48, -41, -33, -25, -19, -12, -6, 0
13758 };
13759
13760 static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13761         -159, -113, -86, -72, -62, -54, -48, -43,
13762         -39, -35, -31, -28, -25, -23, -20, -18,
13763         -17, -15, -13, -11, -10, -8, -7, -6,
13764         -5, -4, -3, -3, -2, -1, -1, 0
13765 };
13766
13767 static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13768         -109, -109, -82, -68, -58, -50, -44, -39,
13769         -35, -31, -28, -26, -23, -21, -19, -17,
13770         -16, -14, -13, -11, -10, -9, -8, -7,
13771         -5, -5, -4, -3, -2, -1, -1, 0
13772 };
13773
13774 static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13775         -122, -122, -95, -80, -69, -61, -54, -49,
13776         -43, -39, -35, -32, -28, -26, -23, -21,
13777         -18, -16, -15, -13, -11, -10, -8, -7,
13778         -6, -5, -4, -3, -2, -1, -1, 0
13779 };
13780
13781 static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13782         -107, -101, -92, -85, -78, -71, -62, -55,
13783         -47, -39, -32, -24, -19, -12, -6, 0
13784 };
13785
13786 static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13787         -110, -104, -95, -88, -81, -74, -66, -58,
13788         -50, -44, -36, -28, -23, -15, -8, 0
13789 };
13790
13791 static u8 pad_gain_codes_used_2057rev5[] = {
13792         20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13793         10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13794 };
13795
13796 static u8 pad_gain_codes_used_2057rev7[] = {
13797         15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13798         5, 4, 3, 2, 1
13799 };
13800
13801 static u8 pad_all_gain_codes_2057[] = {
13802         31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13803         21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13804         11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13805         1, 0
13806 };
13807
13808 static u8 pga_all_gain_codes_2057[] = {
13809         15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13810 };
13811
13812 static u32 nphy_papd_scaltbl[] = {
13813         0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13814         0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13815         0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13816         0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13817         0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13818         0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13819         0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13820         0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13821         0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13822         0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13823         0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13824         0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13825         0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13826         0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13827         0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13828         0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13829 };
13830
13831 static u32 nphy_tpc_txgain_rev3[] = {
13832         0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13833         0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13834         0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13835         0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13836         0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13837         0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13838         0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13839         0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13840         0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13841         0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13842         0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13843         0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13844         0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13845         0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13846         0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13847         0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13848         0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13849         0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13850         0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13851         0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13852         0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13853         0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13854         0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13855         0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13856         0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13857         0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13858         0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13859         0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13860         0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13861         0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13862         0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13863         0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13864 };
13865
13866 static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13867         0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13868         0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13869         0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13870         0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13871         0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13872         0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13873         0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13874         0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13875         0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13876         0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13877         0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13878         0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13879         0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13880         0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13881         0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13882         0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13883         0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13884         0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13885         0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13886         0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13887         0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13888         0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13889         0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13890         0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13891         0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13892         0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13893         0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13894         0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13895         0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13896         0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13897         0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13898         0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13899 };
13900
13901 static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13902         0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13903         0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13904         0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13905         0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13906         0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13907         0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13908         0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13909         0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13910         0x80290031, 0x80210039, 0x80210036, 0x80210033,
13911         0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13912         0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13913         0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13914         0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13915         0x80110027, 0x80110024, 0x80110022, 0x80110020,
13916         0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13917         0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13918         0x80090029, 0x80090027, 0x80090025, 0x80090023,
13919         0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13920         0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13921         0x8009061d, 0x8009071d, 0x8009071d, 0x8009071d,
13922         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13923         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13924         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13925         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13926         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13927         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13928         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13929         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13930         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13931         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13932         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13933         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d
13934 };
13935
13936 static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13937         0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13938         0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13939         0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13940         0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13941         0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13942         0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13943         0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13944         0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13945         0x10290031, 0x10210039, 0x10210036, 0x10210033,
13946         0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13947         0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13948         0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13949         0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13950         0x10110027, 0x10110024, 0x10110022, 0x10110020,
13951         0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13952         0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13953         0x10090029, 0x10090027, 0x10090025, 0x10090023,
13954         0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13955         0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13956         0x10090015, 0x10090013, 0x10090012, 0x10090011,
13957         0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13958         0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13959         0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13960         0x10090008, 0x10090008, 0x10090007, 0x10090007,
13961         0x10090007, 0x10090006, 0x10090006, 0x10090005,
13962         0x10090005, 0x10090005, 0x10090005, 0x10090004,
13963         0x10090004, 0x10090004, 0x10090004, 0x10090003,
13964         0x10090003, 0x10090003, 0x10090003, 0x10090003,
13965         0x10090003, 0x10090002, 0x10090002, 0x10090002,
13966         0x10090002, 0x10090002, 0x10090002, 0x10090002,
13967         0x10090002, 0x10090002, 0x10090001, 0x10090001,
13968         0x10090001, 0x10090001, 0x10090001, 0x10090001
13969 };
13970
13971 static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13972         0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13973         0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13974         0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13975         0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13976         0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13977         0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13978         0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13979         0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13980         0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13981         0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13982         0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13983         0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13984         0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13985         0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13986         0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13987         0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13988         0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13989         0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13990         0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13991         0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13992         0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13993         0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13994         0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13995         0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13996         0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13997         0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
13998         0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
13999         0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
14000         0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
14001         0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
14002         0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
14003         0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
14004 };
14005
14006 static u32 nphy_tpc_5GHz_txgain_rev4[] = {
14007         0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
14008         0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
14009         0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
14010         0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
14011         0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
14012         0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
14013         0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
14014         0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
14015         0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
14016         0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
14017         0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
14018         0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
14019         0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
14020         0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
14021         0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
14022         0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
14023         0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
14024         0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
14025         0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
14026         0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
14027         0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
14028         0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
14029         0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
14030         0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
14031         0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
14032         0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
14033         0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14034         0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14035         0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14036         0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14037         0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14038         0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14039 };
14040
14041 static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14042         0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14043         0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14044         0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14045         0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14046         0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14047         0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14048         0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14049         0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14050         0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14051         0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14052         0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14053         0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14054         0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14055         0x09620039, 0x09620037, 0x09620035, 0x09620033,
14056         0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14057         0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14058         0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14059         0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14060         0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14061         0x06620039, 0x06620037, 0x06620035, 0x06620033,
14062         0x05620046, 0x05620044, 0x05620042, 0x05620040,
14063         0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14064         0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14065         0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14066         0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14067         0x03620038, 0x03620037, 0x03620035, 0x03620033,
14068         0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14069         0x02620046, 0x02620044, 0x02620043, 0x02620042,
14070         0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14071         0x01620043, 0x01620042, 0x01620041, 0x01620040,
14072         0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14073         0x0062003b, 0x00620039, 0x00620037, 0x00620035
14074 };
14075
14076 static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14077         0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14078         0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14079         0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14080         0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14081         0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14082         0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14083         0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14084         0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14085         0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14086         0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14087         0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14088         0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14089         0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14090         0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14091         0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14092         0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14093         0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14094         0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14095         0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14096         0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14097         0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14098         0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14099         0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14100         0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14101         0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14102         0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14103         0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14104         0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14105         0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14106         0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14107         0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14108         0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14109 };
14110
14111 static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14112 static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14113 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14114         0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a
14115 };
14116 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14117         0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16
14118 };
14119
14120 bool wlc_phy_bist_check_phy(struct brcms_phy_pub *pih)
14121 {
14122         struct brcms_phy *pi = (struct brcms_phy *) pih;
14123         u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14124
14125         if (NREV_GE(pi->pubpi.phy_rev, 16))
14126                 return true;
14127
14128         phybist0 = read_phy_reg(pi, 0x0e);
14129         phybist1 = read_phy_reg(pi, 0x0f);
14130         phybist2 = read_phy_reg(pi, 0xea);
14131         phybist3 = read_phy_reg(pi, 0xeb);
14132         phybist4 = read_phy_reg(pi, 0x156);
14133
14134         if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14135             (phybist3 == 0) && (phybist4 == 0))
14136                 return true;
14137
14138         return false;
14139 }
14140
14141 static void wlc_phy_bphy_init_nphy(struct brcms_phy *pi)
14142 {
14143         u16 addr, val;
14144
14145         val = 0x1e1f;
14146         for (addr = (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT);
14147              addr <= (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT_END); addr++) {
14148                 write_phy_reg(pi, addr, val);
14149                 if (addr == (NPHY_TO_BPHY_OFF + 0x97))
14150                         val = 0x3e3f;
14151                 else
14152                         val -= 0x0202;
14153         }
14154
14155         write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_STEP, 0x668);
14156 }
14157
14158 void
14159 wlc_phy_table_write_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14160                          u32 width, const void *data)
14161 {
14162         struct phytbl_info tbl;
14163
14164         tbl.tbl_id = id;
14165         tbl.tbl_len = len;
14166         tbl.tbl_offset = offset;
14167         tbl.tbl_width = width;
14168         tbl.tbl_ptr = data;
14169         wlc_phy_write_table_nphy(pi, &tbl);
14170 }
14171
14172 void
14173 wlc_phy_table_read_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14174                         u32 width, void *data)
14175 {
14176         struct phytbl_info tbl;
14177
14178         tbl.tbl_id = id;
14179         tbl.tbl_len = len;
14180         tbl.tbl_offset = offset;
14181         tbl.tbl_width = width;
14182         tbl.tbl_ptr = data;
14183         wlc_phy_read_table_nphy(pi, &tbl);
14184 }
14185
14186 static void
14187 wlc_phy_static_table_download_nphy(struct brcms_phy *pi)
14188 {
14189         uint idx;
14190
14191         if (NREV_GE(pi->pubpi.phy_rev, 16)) {
14192                 for (idx = 0; idx < mimophytbl_info_sz_rev16; idx++)
14193                         wlc_phy_write_table_nphy(pi,
14194                                                  &mimophytbl_info_rev16[idx]);
14195         } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14196                 for (idx = 0; idx < mimophytbl_info_sz_rev7; idx++)
14197                         wlc_phy_write_table_nphy(pi,
14198                                                  &mimophytbl_info_rev7[idx]);
14199         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14200                 for (idx = 0; idx < mimophytbl_info_sz_rev3; idx++)
14201                         wlc_phy_write_table_nphy(pi,
14202                                                  &mimophytbl_info_rev3[idx]);
14203         } else {
14204                 for (idx = 0; idx < mimophytbl_info_sz_rev0; idx++)
14205                         wlc_phy_write_table_nphy(pi,
14206                                                  &mimophytbl_info_rev0[idx]);
14207         }
14208 }
14209
14210 static void wlc_phy_tbl_init_nphy(struct brcms_phy *pi)
14211 {
14212         uint idx = 0;
14213         u8 antswctrllut;
14214
14215         if (pi->phy_init_por)
14216                 wlc_phy_static_table_download_nphy(pi);
14217
14218         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14219
14220                 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14221                                pi->srom_fem2g.antswctrllut : pi->srom_fem5g.
14222                                antswctrllut;
14223
14224                 switch (antswctrllut) {
14225                 case 0:
14226
14227                         break;
14228
14229                 case 1:
14230
14231                         if (pi->aa2g == 7)
14232                                 wlc_phy_table_write_nphy(
14233                                         pi,
14234                                         NPHY_TBL_ID_ANTSWCTRLLUT,
14235                                         2, 0x21, 8,
14236                                         &ant_sw_ctrl_tbl_rev8_2o3[0]);
14237                         else
14238                                 wlc_phy_table_write_nphy(
14239                                         pi,
14240                                         NPHY_TBL_ID_ANTSWCTRLLUT,
14241                                         2, 0x21, 8,
14242                                         &ant_sw_ctrl_tbl_rev8
14243                                         [0]);
14244
14245                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14246                                                  2, 0x25, 8,
14247                                                  &ant_sw_ctrl_tbl_rev8[2]);
14248                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14249                                                  2, 0x29, 8,
14250                                                  &ant_sw_ctrl_tbl_rev8[4]);
14251                         break;
14252
14253                 case 2:
14254
14255                         wlc_phy_table_write_nphy(
14256                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14257                                 2, 0x1, 8,
14258                                 &ant_sw_ctrl_tbl_rev8_2057v7_core0[0]);
14259                         wlc_phy_table_write_nphy(
14260                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14261                                 2, 0x5, 8,
14262                                 &ant_sw_ctrl_tbl_rev8_2057v7_core0[2]);
14263                         wlc_phy_table_write_nphy(
14264                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14265                                 2, 0x9, 8,
14266                                 &ant_sw_ctrl_tbl_rev8_2057v7_core0[4]);
14267
14268                         wlc_phy_table_write_nphy(
14269                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14270                                 2, 0x21, 8,
14271                                 &ant_sw_ctrl_tbl_rev8_2057v7_core1[0]);
14272                         wlc_phy_table_write_nphy(
14273                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14274                                 2, 0x25, 8,
14275                                 &ant_sw_ctrl_tbl_rev8_2057v7_core1[2]);
14276                         wlc_phy_table_write_nphy(
14277                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14278                                 2, 0x29, 8,
14279                                 &ant_sw_ctrl_tbl_rev8_2057v7_core1[4]);
14280                         break;
14281
14282                 default:
14283                         break;
14284                 }
14285
14286         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14287                 for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14288
14289                         if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14290                                 antswctrllut =
14291                                         CHSPEC_IS2G(pi->radio_chanspec) ?
14292                                         pi->srom_fem2g.antswctrllut :
14293                                         pi->srom_fem5g.antswctrllut;
14294                                 switch (antswctrllut) {
14295                                 case 0:
14296                                         wlc_phy_write_table_nphy(
14297                                                 pi,
14298                                                 &mimophytbl_info_rev3_volatile
14299                                                 [idx]);
14300                                         break;
14301                                 case 1:
14302                                         wlc_phy_write_table_nphy(
14303                                                 pi,
14304                                                 &mimophytbl_info_rev3_volatile1
14305                                                 [idx]);
14306                                         break;
14307                                 case 2:
14308                                         wlc_phy_write_table_nphy(
14309                                                 pi,
14310                                                 &mimophytbl_info_rev3_volatile2
14311                                                 [idx]);
14312                                         break;
14313                                 case 3:
14314                                         wlc_phy_write_table_nphy(
14315                                                 pi,
14316                                                 &mimophytbl_info_rev3_volatile3
14317                                                 [idx]);
14318                                         break;
14319                                 default:
14320                                         break;
14321                                 }
14322                         } else {
14323                                 wlc_phy_write_table_nphy(
14324                                         pi,
14325                                         &mimophytbl_info_rev3_volatile[idx]);
14326                         }
14327                 }
14328         } else {
14329                 for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++)
14330                         wlc_phy_write_table_nphy(pi,
14331                                                  &mimophytbl_info_rev0_volatile
14332                                                  [idx]);
14333         }
14334 }
14335
14336 static void
14337 wlc_phy_write_txmacreg_nphy(struct brcms_phy *pi, u16 holdoff, u16 delay)
14338 {
14339         write_phy_reg(pi, 0x77, holdoff);
14340         write_phy_reg(pi, 0xb4, delay);
14341 }
14342
14343 void wlc_phy_nphy_tkip_rifs_war(struct brcms_phy *pi, u8 rifs)
14344 {
14345         u16 holdoff, delay;
14346
14347         if (rifs) {
14348
14349                 holdoff = 0x10;
14350                 delay = 0x258;
14351         } else {
14352
14353                 holdoff = 0x15;
14354                 delay = 0x320;
14355         }
14356
14357         wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14358
14359         if (pi && pi->sh && (pi->sh->_rifs_phy != rifs))
14360                 pi->sh->_rifs_phy = rifs;
14361 }
14362
14363 static void wlc_phy_txpwrctrl_config_nphy(struct brcms_phy *pi)
14364 {
14365
14366         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14367                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14368                 pi->phy_5g_pwrgain = true;
14369                 return;
14370         }
14371
14372         pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14373         pi->phy_5g_pwrgain = false;
14374
14375         if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14376             NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14377                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14378         else if ((pi->sh->sromrev >= 4)
14379                  && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14380                 pi->phy_5g_pwrgain = true;
14381 }
14382
14383 static void wlc_phy_txpwr_srom_read_ppr_nphy(struct brcms_phy *pi)
14384 {
14385         u16 bw40po, cddpo, stbcpo, bwduppo;
14386         uint band_num;
14387         struct phy_shim_info *shim = pi->sh->physhim;
14388
14389         if (pi->sh->sromrev >= 9)
14390                 return;
14391
14392         bw40po = (u16) wlapi_getintvar(shim, BRCMS_SROM_BW40PO);
14393         pi->bw402gpo = bw40po & 0xf;
14394         pi->bw405gpo = (bw40po & 0xf0) >> 4;
14395         pi->bw405glpo = (bw40po & 0xf00) >> 8;
14396         pi->bw405ghpo = (bw40po & 0xf000) >> 12;
14397
14398         cddpo = (u16) wlapi_getintvar(shim, BRCMS_SROM_CDDPO);
14399         pi->cdd2gpo = cddpo & 0xf;
14400         pi->cdd5gpo = (cddpo & 0xf0) >> 4;
14401         pi->cdd5glpo = (cddpo & 0xf00) >> 8;
14402         pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
14403
14404         stbcpo = (u16) wlapi_getintvar(shim, BRCMS_SROM_STBCPO);
14405         pi->stbc2gpo = stbcpo & 0xf;
14406         pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
14407         pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
14408         pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
14409
14410         bwduppo = (u16) wlapi_getintvar(shim, BRCMS_SROM_BWDUPPO);
14411         pi->bwdup2gpo = bwduppo & 0xf;
14412         pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
14413         pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
14414         pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
14415
14416         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
14417              band_num++) {
14418                 switch (band_num) {
14419                 case 0:
14420
14421                         pi->nphy_txpid2g[PHY_CORE_0] =
14422                                 (u8) wlapi_getintvar(shim,
14423                                                      BRCMS_SROM_TXPID2GA0);
14424                         pi->nphy_txpid2g[PHY_CORE_1] =
14425                                 (u8) wlapi_getintvar(shim,
14426                                                      BRCMS_SROM_TXPID2GA1);
14427                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
14428                                 (s8) wlapi_getintvar(shim,
14429                                                      BRCMS_SROM_MAXP2GA0);
14430                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
14431                                 (s8) wlapi_getintvar(shim,
14432                                                      BRCMS_SROM_MAXP2GA1);
14433                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
14434                                 (s16) wlapi_getintvar(shim,
14435                                                       BRCMS_SROM_PA2GW0A0);
14436                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
14437                                 (s16) wlapi_getintvar(shim,
14438                                                       BRCMS_SROM_PA2GW0A1);
14439                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
14440                                 (s16) wlapi_getintvar(shim,
14441                                                       BRCMS_SROM_PA2GW1A0);
14442                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
14443                                 (s16) wlapi_getintvar(shim,
14444                                                       BRCMS_SROM_PA2GW1A1);
14445                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
14446                                 (s16) wlapi_getintvar(shim,
14447                                                       BRCMS_SROM_PA2GW2A0);
14448                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
14449                                 (s16) wlapi_getintvar(shim,
14450                                                       BRCMS_SROM_PA2GW2A1);
14451                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
14452                                 (s8) wlapi_getintvar(shim, BRCMS_SROM_ITT2GA0);
14453                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
14454                                 (s8) wlapi_getintvar(shim, BRCMS_SROM_ITT2GA1);
14455
14456                         pi->cck2gpo = (u16) wlapi_getintvar(shim,
14457                                                             BRCMS_SROM_CCK2GPO);
14458
14459                         pi->ofdm2gpo =
14460                                 (u32) wlapi_getintvar(shim,
14461                                                       BRCMS_SROM_OFDM2GPO);
14462
14463                         pi->mcs2gpo[0] =
14464                                 (u16) wlapi_getintvar(shim,
14465                                                       BRCMS_SROM_MCS2GPO0);
14466                         pi->mcs2gpo[1] =
14467                                 (u16) wlapi_getintvar(shim,
14468                                                       BRCMS_SROM_MCS2GPO1);
14469                         pi->mcs2gpo[2] =
14470                                 (u16) wlapi_getintvar(shim,
14471                                                       BRCMS_SROM_MCS2GPO2);
14472                         pi->mcs2gpo[3] =
14473                                 (u16) wlapi_getintvar(shim,
14474                                                       BRCMS_SROM_MCS2GPO3);
14475                         pi->mcs2gpo[4] =
14476                                 (u16) wlapi_getintvar(shim,
14477                                                       BRCMS_SROM_MCS2GPO4);
14478                         pi->mcs2gpo[5] =
14479                                 (u16) wlapi_getintvar(shim,
14480                                                       BRCMS_SROM_MCS2GPO5);
14481                         pi->mcs2gpo[6] =
14482                                 (u16) wlapi_getintvar(shim,
14483                                                       BRCMS_SROM_MCS2GPO6);
14484                         pi->mcs2gpo[7] =
14485                                 (u16) wlapi_getintvar(shim,
14486                                                       BRCMS_SROM_MCS2GPO7);
14487                         break;
14488                 case 1:
14489
14490                         pi->nphy_txpid5g[PHY_CORE_0] =
14491                                 (u8) wlapi_getintvar(shim,
14492                                                      BRCMS_SROM_TXPID5GA0);
14493                         pi->nphy_txpid5g[PHY_CORE_1] =
14494                                 (u8) wlapi_getintvar(shim,
14495                                                      BRCMS_SROM_TXPID5GA1);
14496                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
14497                                 (s8) wlapi_getintvar(shim, BRCMS_SROM_MAXP5GA0);
14498                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
14499                                 (s8) wlapi_getintvar(shim,
14500                                                      BRCMS_SROM_MAXP5GA1);
14501                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
14502                                 (s16) wlapi_getintvar(shim,
14503                                                       BRCMS_SROM_PA5GW0A0);
14504                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
14505                                 (s16) wlapi_getintvar(shim,
14506                                                       BRCMS_SROM_PA5GW0A1);
14507                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
14508                                 (s16) wlapi_getintvar(shim,
14509                                                       BRCMS_SROM_PA5GW1A0);
14510                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
14511                                 (s16) wlapi_getintvar(shim,
14512                                                       BRCMS_SROM_PA5GW1A1);
14513                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
14514                                 (s16) wlapi_getintvar(shim,
14515                                                       BRCMS_SROM_PA5GW2A0);
14516                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
14517                                 (s16) wlapi_getintvar(shim,
14518                                                       BRCMS_SROM_PA5GW2A1);
14519                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
14520                                 (s8) wlapi_getintvar(shim, BRCMS_SROM_ITT5GA0);
14521                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
14522                                 (s8) wlapi_getintvar(shim, BRCMS_SROM_ITT5GA1);
14523
14524                         pi->ofdm5gpo =
14525                                 (u32) wlapi_getintvar(shim,
14526                                                       BRCMS_SROM_OFDM5GPO);
14527
14528                         pi->mcs5gpo[0] =
14529                                 (u16) wlapi_getintvar(shim,
14530                                                       BRCMS_SROM_MCS5GPO0);
14531                         pi->mcs5gpo[1] =
14532                                 (u16) wlapi_getintvar(shim,
14533                                                       BRCMS_SROM_MCS5GPO1);
14534                         pi->mcs5gpo[2] =
14535                                 (u16) wlapi_getintvar(shim,
14536                                                       BRCMS_SROM_MCS5GPO2);
14537                         pi->mcs5gpo[3] =
14538                                 (u16) wlapi_getintvar(shim,
14539                                                       BRCMS_SROM_MCS5GPO3);
14540                         pi->mcs5gpo[4] =
14541                                 (u16) wlapi_getintvar(shim,
14542                                                       BRCMS_SROM_MCS5GPO4);
14543                         pi->mcs5gpo[5] =
14544                                 (u16) wlapi_getintvar(shim,
14545                                                       BRCMS_SROM_MCS5GPO5);
14546                         pi->mcs5gpo[6] =
14547                                 (u16) wlapi_getintvar(shim,
14548                                                       BRCMS_SROM_MCS5GPO6);
14549                         pi->mcs5gpo[7] =
14550                                 (u16) wlapi_getintvar(shim,
14551                                                       BRCMS_SROM_MCS5GPO7);
14552                         break;
14553                 case 2:
14554
14555                         pi->nphy_txpid5gl[0] =
14556                                 (u8) wlapi_getintvar(shim,
14557                                                      BRCMS_SROM_TXPID5GLA0);
14558                         pi->nphy_txpid5gl[1] =
14559                                 (u8) wlapi_getintvar(shim,
14560                                                      BRCMS_SROM_TXPID5GLA1);
14561                         pi->nphy_pwrctrl_info[0].max_pwr_5gl =
14562                                 (s8) wlapi_getintvar(shim,
14563                                                      BRCMS_SROM_MAXP5GLA0);
14564                         pi->nphy_pwrctrl_info[1].max_pwr_5gl =
14565                                 (s8) wlapi_getintvar(shim,
14566                                                      BRCMS_SROM_MAXP5GLA1);
14567                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
14568                                 (s16) wlapi_getintvar(shim,
14569                                                       BRCMS_SROM_PA5GLW0A0);
14570                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
14571                                 (s16) wlapi_getintvar(shim,
14572                                                       BRCMS_SROM_PA5GLW0A1);
14573                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
14574                                 (s16) wlapi_getintvar(shim,
14575                                                       BRCMS_SROM_PA5GLW1A0);
14576                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
14577                                 (s16) wlapi_getintvar(shim,
14578                                                       BRCMS_SROM_PA5GLW1A1);
14579                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
14580                                 (s16) wlapi_getintvar(shim,
14581                                                       BRCMS_SROM_PA5GLW2A0);
14582                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
14583                                 (s16) wlapi_getintvar(shim,
14584                                                       BRCMS_SROM_PA5GLW2A1);
14585                         pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
14586                         pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
14587
14588                         pi->ofdm5glpo =
14589                                 (u32) wlapi_getintvar(shim,
14590                                                       BRCMS_SROM_OFDM5GLPO);
14591
14592                         pi->mcs5glpo[0] =
14593                                 (u16) wlapi_getintvar(shim,
14594                                                       BRCMS_SROM_MCS5GLPO0);
14595                         pi->mcs5glpo[1] =
14596                                 (u16) wlapi_getintvar(shim,
14597                                                       BRCMS_SROM_MCS5GLPO1);
14598                         pi->mcs5glpo[2] =
14599                                 (u16) wlapi_getintvar(shim,
14600                                                       BRCMS_SROM_MCS5GLPO2);
14601                         pi->mcs5glpo[3] =
14602                                 (u16) wlapi_getintvar(shim,
14603                                                       BRCMS_SROM_MCS5GLPO3);
14604                         pi->mcs5glpo[4] =
14605                                 (u16) wlapi_getintvar(shim,
14606                                                       BRCMS_SROM_MCS5GLPO4);
14607                         pi->mcs5glpo[5] =
14608                                 (u16) wlapi_getintvar(shim,
14609                                                       BRCMS_SROM_MCS5GLPO5);
14610                         pi->mcs5glpo[6] =
14611                                 (u16) wlapi_getintvar(shim,
14612                                                       BRCMS_SROM_MCS5GLPO6);
14613                         pi->mcs5glpo[7] =
14614                                 (u16) wlapi_getintvar(shim,
14615                                                       BRCMS_SROM_MCS5GLPO7);
14616                         break;
14617                 case 3:
14618
14619                         pi->nphy_txpid5gh[0] =
14620                                 (u8) wlapi_getintvar(shim,
14621                                                      BRCMS_SROM_TXPID5GHA0);
14622                         pi->nphy_txpid5gh[1] =
14623                                 (u8) wlapi_getintvar(shim,
14624                                                      BRCMS_SROM_TXPID5GHA1);
14625                         pi->nphy_pwrctrl_info[0].max_pwr_5gh =
14626                                 (s8) wlapi_getintvar(shim,
14627                                                      BRCMS_SROM_MAXP5GHA0);
14628                         pi->nphy_pwrctrl_info[1].max_pwr_5gh =
14629                                 (s8) wlapi_getintvar(shim,
14630                                                      BRCMS_SROM_MAXP5GHA1);
14631                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
14632                                 (s16) wlapi_getintvar(shim,
14633                                                       BRCMS_SROM_PA5GHW0A0);
14634                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
14635                                 (s16) wlapi_getintvar(shim,
14636                                                       BRCMS_SROM_PA5GHW0A1);
14637                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
14638                                 (s16) wlapi_getintvar(shim,
14639                                                       BRCMS_SROM_PA5GHW1A0);
14640                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
14641                                 (s16) wlapi_getintvar(shim,
14642                                                       BRCMS_SROM_PA5GHW1A1);
14643                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
14644                                 (s16) wlapi_getintvar(shim,
14645                                                       BRCMS_SROM_PA5GHW2A0);
14646                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
14647                                 (s16) wlapi_getintvar(shim,
14648                                                       BRCMS_SROM_PA5GHW2A1);
14649                         pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
14650                         pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
14651
14652                         pi->ofdm5ghpo =
14653                                 (u32) wlapi_getintvar(shim,
14654                                                       BRCMS_SROM_OFDM5GHPO);
14655
14656                         pi->mcs5ghpo[0] =
14657                                 (u16) wlapi_getintvar(shim,
14658                                                       BRCMS_SROM_MCS5GHPO0);
14659                         pi->mcs5ghpo[1] =
14660                                 (u16) wlapi_getintvar(shim,
14661                                                       BRCMS_SROM_MCS5GHPO1);
14662                         pi->mcs5ghpo[2] =
14663                                 (u16) wlapi_getintvar(shim,
14664                                                       BRCMS_SROM_MCS5GHPO2);
14665                         pi->mcs5ghpo[3] =
14666                                 (u16) wlapi_getintvar(shim,
14667                                                       BRCMS_SROM_MCS5GHPO3);
14668                         pi->mcs5ghpo[4] =
14669                                 (u16) wlapi_getintvar(shim,
14670                                                       BRCMS_SROM_MCS5GHPO4);
14671                         pi->mcs5ghpo[5] =
14672                                 (u16) wlapi_getintvar(shim,
14673                                                       BRCMS_SROM_MCS5GHPO5);
14674                         pi->mcs5ghpo[6] =
14675                                 (u16) wlapi_getintvar(shim,
14676                                                       BRCMS_SROM_MCS5GHPO6);
14677                         pi->mcs5ghpo[7] =
14678                                 (u16) wlapi_getintvar(shim,
14679                                                       BRCMS_SROM_MCS5GHPO7);
14680                         break;
14681                 }
14682         }
14683
14684         wlc_phy_txpwr_apply_nphy(pi);
14685 }
14686
14687 static bool wlc_phy_txpwr_srom_read_nphy(struct brcms_phy *pi)
14688 {
14689         struct phy_shim_info *shim = pi->sh->physhim;
14690
14691         pi->antswitch = (u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWITCH);
14692         pi->aa2g = (u8) wlapi_getintvar(shim, BRCMS_SROM_AA2G);
14693         pi->aa5g = (u8) wlapi_getintvar(shim, BRCMS_SROM_AA5G);
14694
14695         pi->srom_fem2g.tssipos = (u8) wlapi_getintvar(shim,
14696                                                       BRCMS_SROM_TSSIPOS2G);
14697         pi->srom_fem2g.extpagain = (u8) wlapi_getintvar(shim,
14698                                                         BRCMS_SROM_EXTPAGAIN2G);
14699         pi->srom_fem2g.pdetrange = (u8) wlapi_getintvar(shim,
14700                                                         BRCMS_SROM_PDETRANGE2G);
14701         pi->srom_fem2g.triso = (u8) wlapi_getintvar(shim, BRCMS_SROM_TRISO2G);
14702         pi->srom_fem2g.antswctrllut =
14703                         (u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWCTL2G);
14704
14705         pi->srom_fem5g.tssipos = (u8) wlapi_getintvar(shim,
14706                                                       BRCMS_SROM_TSSIPOS5G);
14707         pi->srom_fem5g.extpagain = (u8) wlapi_getintvar(shim,
14708                                                         BRCMS_SROM_EXTPAGAIN5G);
14709         pi->srom_fem5g.pdetrange = (u8) wlapi_getintvar(shim,
14710                                                         BRCMS_SROM_PDETRANGE5G);
14711         pi->srom_fem5g.triso = (u8) wlapi_getintvar(shim, BRCMS_SROM_TRISO5G);
14712         if (wlapi_getvar(shim, BRCMS_SROM_ANTSWCTL5G))
14713                 pi->srom_fem5g.antswctrllut =
14714                         (u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWCTL5G);
14715         else
14716                 pi->srom_fem5g.antswctrllut =
14717                         (u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWCTL2G);
14718
14719         wlc_phy_txpower_ipa_upd(pi);
14720
14721         pi->phy_txcore_disable_temp =
14722                         (s16) wlapi_getintvar(shim, BRCMS_SROM_TEMPTHRESH);
14723         if (pi->phy_txcore_disable_temp == 0)
14724                 pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
14725
14726         pi->phy_tempsense_offset = (s8) wlapi_getintvar(shim,
14727                                                         BRCMS_SROM_TEMPOFFSET);
14728         if (pi->phy_tempsense_offset != 0) {
14729                 if (pi->phy_tempsense_offset >
14730                     (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET))
14731                         pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
14732                 else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
14733                                                      NPHY_SROM_MINTEMPOFFSET))
14734                         pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
14735                 else
14736                         pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
14737         }
14738
14739         pi->phy_txcore_enable_temp =
14740                 pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
14741
14742         pi->phycal_tempdelta =
14743                         (u8) wlapi_getintvar(shim, BRCMS_SROM_PHYCAL_TEMPDELTA);
14744         if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA)
14745                 pi->phycal_tempdelta = 0;
14746
14747         wlc_phy_txpwr_srom_read_ppr_nphy(pi);
14748
14749         return true;
14750 }
14751
14752 bool wlc_phy_attach_nphy(struct brcms_phy *pi)
14753 {
14754         uint i;
14755
14756         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6))
14757                 pi->phyhang_avoid = true;
14758
14759         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14760                 pi->nphy_gband_spurwar_en = true;
14761                 if (pi->sh->boardflags2 & BFL2_SPUR_WAR)
14762                         pi->nphy_aband_spurwar_en = true;
14763         }
14764         if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14765                 if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR)
14766                         pi->nphy_gband_spurwar2_en = true;
14767         }
14768
14769         pi->n_preamble_override = AUTO;
14770         if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14771                 pi->n_preamble_override = BRCMS_N_PREAMBLE_MIXEDMODE;
14772
14773         pi->nphy_txrx_chain = AUTO;
14774         pi->phy_scraminit = AUTO;
14775
14776         pi->nphy_rxcalparams = 0x010100B5;
14777
14778         pi->nphy_perical = PHY_PERICAL_MPHASE;
14779         pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14780         pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14781
14782         pi->nphy_gain_boost = true;
14783         pi->nphy_elna_gain_config = false;
14784         pi->radio_is_on = false;
14785
14786         for (i = 0; i < pi->pubpi.phy_corenum; i++)
14787                 pi->nphy_txpwrindex[i].index = AUTO;
14788
14789         wlc_phy_txpwrctrl_config_nphy(pi);
14790         if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14791                 pi->hwpwrctrl_capable = true;
14792
14793         pi->pi_fptr.init = wlc_phy_init_nphy;
14794         pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14795         pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14796         pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14797
14798         if (!wlc_phy_txpwr_srom_read_nphy(pi))
14799                 return false;
14800
14801         return true;
14802 }
14803
14804 static s32 get_rf_pwr_offset(struct brcms_phy *pi, s16 pga_gn, s16 pad_gn)
14805 {
14806         s32 rfpwr_offset = 0;
14807
14808         if (CHSPEC_IS2G(pi->radio_chanspec)) {
14809                 if ((pi->pubpi.radiorev == 3) ||
14810                     (pi->pubpi.radiorev == 4) ||
14811                     (pi->pubpi.radiorev == 6))
14812                         rfpwr_offset = (s16)
14813                                        nphy_papd_padgain_dlt_2g_2057rev3n4
14814                                        [pad_gn];
14815                 else if (pi->pubpi.radiorev == 5)
14816                         rfpwr_offset = (s16)
14817                                        nphy_papd_padgain_dlt_2g_2057rev5
14818                                        [pad_gn];
14819                 else if ((pi->pubpi.radiorev == 7)
14820                          || (pi->pubpi.radiorev ==
14821                              8))
14822                         rfpwr_offset = (s16)
14823                                        nphy_papd_padgain_dlt_2g_2057rev7
14824                                        [pad_gn];
14825         } else {
14826                 if ((pi->pubpi.radiorev == 3) ||
14827                     (pi->pubpi.radiorev == 4) ||
14828                     (pi->pubpi.radiorev == 6))
14829                         rfpwr_offset = (s16)
14830                                        nphy_papd_pgagain_dlt_5g_2057
14831                                        [pga_gn];
14832                 else if ((pi->pubpi.radiorev == 7)
14833                          || (pi->pubpi.radiorev ==
14834                              8))
14835                         rfpwr_offset = (s16)
14836                                        nphy_papd_pgagain_dlt_5g_2057rev7
14837                                        [pga_gn];
14838         }
14839         return rfpwr_offset;
14840 }
14841
14842 static void wlc_phy_update_mimoconfig_nphy(struct brcms_phy *pi, s32 preamble)
14843 {
14844         bool gf_preamble = false;
14845         u16 val;
14846
14847         if (preamble == BRCMS_N_PREAMBLE_GF)
14848                 gf_preamble = true;
14849
14850         val = read_phy_reg(pi, 0xed);
14851
14852         val |= RX_GF_MM_AUTO;
14853         val &= ~RX_GF_OR_MM;
14854         if (gf_preamble)
14855                 val |= RX_GF_OR_MM;
14856
14857         write_phy_reg(pi, 0xed, val);
14858 }
14859
14860 static void wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
14861 {
14862         int j, type;
14863         u16 addr_offset[] = { 0x186, 0x195, 0x2c5};
14864
14865         for (type = 0; type < 3; type++) {
14866                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14867                         write_phy_reg(pi, addr_offset[type] + j,
14868                                       NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
14869         }
14870
14871         if (pi->bw == WL_CHANSPEC_BW_40) {
14872                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14873                         write_phy_reg(pi, 0x186 + j,
14874                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14875         } else {
14876                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
14877                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14878                                 write_phy_reg(pi, 0x186 + j,
14879                                         NPHY_IPA_REV4_txdigi_filtcoeffs[5][j]);
14880                 }
14881
14882                 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
14883                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14884                                 write_phy_reg(pi, 0x2c5 + j,
14885                                         NPHY_IPA_REV4_txdigi_filtcoeffs[6][j]);
14886                 }
14887         }
14888 }
14889
14890 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy *pi)
14891 {
14892         int j;
14893
14894         if (pi->bw == WL_CHANSPEC_BW_40) {
14895                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14896                         write_phy_reg(pi, 0x195 + j,
14897                                       NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
14898         } else {
14899                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14900                         write_phy_reg(pi, 0x186 + j,
14901                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14902         }
14903 }
14904
14905 static void
14906 wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, u8 *events, u8 *dlys,
14907                        u8 len)
14908 {
14909         u32 t1_offset, t2_offset;
14910         u8 ctr;
14911         u8 end_event =
14912                 NREV_GE(pi->pubpi.phy_rev,
14913                         3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
14914         u8 end_dly = 1;
14915
14916         if (pi->phyhang_avoid)
14917                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
14918
14919         t1_offset = cmd << 4;
14920         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
14921                                  events);
14922         t2_offset = t1_offset + 0x080;
14923         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
14924                                  dlys);
14925
14926         for (ctr = len; ctr < 16; ctr++) {
14927                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14928                                          t1_offset + ctr, 8, &end_event);
14929                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14930                                          t2_offset + ctr, 8, &end_dly);
14931         }
14932
14933         if (pi->phyhang_avoid)
14934                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
14935 }
14936
14937 static u16 wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy *pi, u16 offset)
14938 {
14939         u16 lpf_bw_ctl_val = 0;
14940         u16 rx2tx_lpf_rc_lut_offset = 0;
14941
14942         if (offset == 0) {
14943                 if (CHSPEC_IS40(pi->radio_chanspec))
14944                         rx2tx_lpf_rc_lut_offset = 0x159;
14945                 else
14946                         rx2tx_lpf_rc_lut_offset = 0x154;
14947         } else {
14948                 rx2tx_lpf_rc_lut_offset = offset;
14949         }
14950         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14951                                 (u32) rx2tx_lpf_rc_lut_offset, 16,
14952                                 &lpf_bw_ctl_val);
14953
14954         lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
14955
14956         return lpf_bw_ctl_val;
14957 }
14958
14959 static void
14960 wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy *pi, u16 field, u16 value,
14961                                   u8 core_mask, u8 off, u8 override_id)
14962 {
14963         u8 core_num;
14964         u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
14965         u8 val_shift = 0;
14966
14967         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14968                 en_mask = field;
14969                 for (core_num = 0; core_num < 2; core_num++) {
14970                         if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
14971
14972                                 switch (field) {
14973                                 case (0x1 << 2):
14974                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14975                                         val_addr = (core_num == 0) ? 0x7a :
14976                                                    0x7d;
14977                                         val_mask = (0x1 << 1);
14978                                         val_shift = 1;
14979                                         break;
14980                                 case (0x1 << 3):
14981                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14982                                         val_addr = (core_num == 0) ? 0x7a :
14983                                                    0x7d;
14984                                         val_mask = (0x1 << 2);
14985                                         val_shift = 2;
14986                                         break;
14987                                 case (0x1 << 4):
14988                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14989                                         val_addr = (core_num == 0) ? 0x7a :
14990                                                    0x7d;
14991                                         val_mask = (0x1 << 4);
14992                                         val_shift = 4;
14993                                         break;
14994                                 case (0x1 << 5):
14995                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14996                                         val_addr = (core_num == 0) ? 0x7a :
14997                                                    0x7d;
14998                                         val_mask = (0x1 << 5);
14999                                         val_shift = 5;
15000                                         break;
15001                                 case (0x1 << 6):
15002                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
15003                                         val_addr = (core_num == 0) ? 0x7a :
15004                                                    0x7d;
15005                                         val_mask = (0x1 << 6);
15006                                         val_shift = 6;
15007                                         break;
15008                                 case (0x1 << 7):
15009                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
15010                                         val_addr = (core_num == 0) ? 0x7a :
15011                                                    0x7d;
15012                                         val_mask = (0x1 << 7);
15013                                         val_shift = 7;
15014                                         break;
15015                                 case (0x1 << 10):
15016                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
15017                                         val_addr = (core_num == 0) ? 0xf8 :
15018                                                    0xfa;
15019                                         val_mask = (0x7 << 4);
15020                                         val_shift = 4;
15021                                         break;
15022                                 case (0x1 << 11):
15023                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
15024                                         val_addr = (core_num == 0) ? 0x7b :
15025                                                    0x7e;
15026                                         val_mask = (0xffff << 0);
15027                                         val_shift = 0;
15028                                         break;
15029                                 case (0x1 << 12):
15030                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
15031                                         val_addr = (core_num == 0) ? 0x7c :
15032                                                    0x7f;
15033                                         val_mask = (0xffff << 0);
15034                                         val_shift = 0;
15035                                         break;
15036                                 case (0x3 << 13):
15037                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
15038                                         val_addr = (core_num == 0) ? 0x348 :
15039                                                    0x349;
15040                                         val_mask = (0xff << 0);
15041                                         val_shift = 0;
15042                                         break;
15043                                 case (0x1 << 13):
15044                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
15045                                         val_addr = (core_num == 0) ? 0x348 :
15046                                                    0x349;
15047                                         val_mask = (0xf << 0);
15048                                         val_shift = 0;
15049                                         break;
15050                                 default:
15051                                         addr = 0xffff;
15052                                         break;
15053                                 }
15054                         } else if (override_id ==
15055                                    NPHY_REV7_RFCTRLOVERRIDE_ID1) {
15056
15057                                 switch (field) {
15058                                 case (0x1 << 1):
15059                                         en_addr = (core_num == 0) ? 0x342 :
15060                                                   0x343;
15061                                         val_addr = (core_num == 0) ? 0x340 :
15062                                                    0x341;
15063                                         val_mask = (0x1 << 1);
15064                                         val_shift = 1;
15065                                         break;
15066                                 case (0x1 << 3):
15067                                         en_addr = (core_num == 0) ? 0x342 :
15068                                                   0x343;
15069                                         val_addr = (core_num == 0) ? 0x340 :
15070                                                    0x341;
15071                                         val_mask = (0x1 << 3);
15072                                         val_shift = 3;
15073                                         break;
15074                                 case (0x1 << 5):
15075                                         en_addr = (core_num == 0) ? 0x342 :
15076                                                   0x343;
15077                                         val_addr = (core_num == 0) ? 0x340 :
15078                                                    0x341;
15079                                         val_mask = (0x1 << 5);
15080                                         val_shift = 5;
15081                                         break;
15082                                 case (0x1 << 4):
15083                                         en_addr = (core_num == 0) ? 0x342 :
15084                                                   0x343;
15085                                         val_addr = (core_num == 0) ? 0x340 :
15086                                                    0x341;
15087                                         val_mask = (0x1 << 4);
15088                                         val_shift = 4;
15089                                         break;
15090                                 case (0x1 << 2):
15091
15092                                         en_addr = (core_num == 0) ? 0x342 :
15093                                                   0x343;
15094                                         val_addr = (core_num == 0) ? 0x340 :
15095                                                    0x341;
15096                                         val_mask = (0x1 << 2);
15097                                         val_shift = 2;
15098                                         break;
15099                                 case (0x1 << 7):
15100
15101                                         en_addr = (core_num == 0) ? 0x342 :
15102                                                   0x343;
15103                                         val_addr = (core_num == 0) ? 0x340 :
15104                                                    0x341;
15105                                         val_mask = (0x7 << 8);
15106                                         val_shift = 8;
15107                                         break;
15108                                 case (0x1 << 11):
15109                                         en_addr = (core_num == 0) ? 0x342 :
15110                                                   0x343;
15111                                         val_addr = (core_num == 0) ? 0x340 :
15112                                                    0x341;
15113                                         val_mask = (0x1 << 14);
15114                                         val_shift = 14;
15115                                         break;
15116                                 case (0x1 << 10):
15117                                         en_addr = (core_num == 0) ? 0x342 :
15118                                                   0x343;
15119                                         val_addr = (core_num == 0) ? 0x340 :
15120                                                    0x341;
15121                                         val_mask = (0x1 << 13);
15122                                         val_shift = 13;
15123                                         break;
15124                                 case (0x1 << 9):
15125                                         en_addr = (core_num == 0) ? 0x342 :
15126                                                   0x343;
15127                                         val_addr = (core_num == 0) ? 0x340 :
15128                                                    0x341;
15129                                         val_mask = (0x1 << 12);
15130                                         val_shift = 12;
15131                                         break;
15132                                 case (0x1 << 8):
15133                                         en_addr = (core_num == 0) ? 0x342 :
15134                                                   0x343;
15135                                         val_addr = (core_num == 0) ? 0x340 :
15136                                                    0x341;
15137                                         val_mask = (0x1 << 11);
15138                                         val_shift = 11;
15139                                         break;
15140                                 case (0x1 << 6):
15141                                         en_addr = (core_num == 0) ? 0x342 :
15142                                                   0x343;
15143                                         val_addr = (core_num == 0) ? 0x340 :
15144                                                    0x341;
15145                                         val_mask = (0x1 << 6);
15146                                         val_shift = 6;
15147                                         break;
15148                                 case (0x1 << 0):
15149                                         en_addr = (core_num == 0) ? 0x342 :
15150                                                   0x343;
15151                                         val_addr = (core_num == 0) ? 0x340 :
15152                                                    0x341;
15153                                         val_mask = (0x1 << 0);
15154                                         val_shift = 0;
15155                                         break;
15156                                 default:
15157                                         addr = 0xffff;
15158                                         break;
15159                                 }
15160                         } else if (override_id ==
15161                                    NPHY_REV7_RFCTRLOVERRIDE_ID2) {
15162
15163                                 switch (field) {
15164                                 case (0x1 << 3):
15165                                         en_addr = (core_num == 0) ? 0x346 :
15166                                                   0x347;
15167                                         val_addr = (core_num == 0) ? 0x344 :
15168                                                    0x345;
15169                                         val_mask = (0x1 << 3);
15170                                         val_shift = 3;
15171                                         break;
15172                                 case (0x1 << 1):
15173                                         en_addr = (core_num == 0) ? 0x346 :
15174                                                   0x347;
15175                                         val_addr = (core_num == 0) ? 0x344 :
15176                                                    0x345;
15177                                         val_mask = (0x1 << 1);
15178                                         val_shift = 1;
15179                                         break;
15180                                 case (0x1 << 0):
15181                                         en_addr = (core_num == 0) ? 0x346 :
15182                                                   0x347;
15183                                         val_addr = (core_num == 0) ? 0x344 :
15184                                                    0x345;
15185                                         val_mask = (0x1 << 0);
15186                                         val_shift = 0;
15187                                         break;
15188                                 case (0x1 << 2):
15189                                         en_addr = (core_num == 0) ? 0x346 :
15190                                                   0x347;
15191                                         val_addr = (core_num == 0) ? 0x344 :
15192                                                    0x345;
15193                                         val_mask = (0x1 << 2);
15194                                         val_shift = 2;
15195                                         break;
15196                                 case (0x1 << 4):
15197                                         en_addr = (core_num == 0) ? 0x346 :
15198                                                   0x347;
15199                                         val_addr = (core_num == 0) ? 0x344 :
15200                                                    0x345;
15201                                         val_mask = (0x1 << 4);
15202                                         val_shift = 4;
15203                                         break;
15204                                 default:
15205                                         addr = 0xffff;
15206                                         break;
15207                                 }
15208                         }
15209
15210                         if (off) {
15211                                 and_phy_reg(pi, en_addr, ~en_mask);
15212                                 and_phy_reg(pi, val_addr, ~val_mask);
15213                         } else {
15214
15215                                 if ((core_mask == 0)
15216                                     || (core_mask & (1 << core_num))) {
15217                                         or_phy_reg(pi, en_addr, en_mask);
15218
15219                                         if (addr != 0xffff)
15220                                                 mod_phy_reg(pi, val_addr,
15221                                                             val_mask,
15222                                                             (value <<
15223                                                              val_shift));
15224                                 }
15225                         }
15226                 }
15227         }
15228 }
15229
15230 static void wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy *pi)
15231 {
15232         uint core;
15233         int ctr;
15234         s16 gain_delta[2];
15235         u8 curr_channel;
15236         u16 minmax_gain[2];
15237         u16 regval[4];
15238
15239         if (pi->phyhang_avoid)
15240                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15241
15242         if (pi->nphy_gain_boost) {
15243                 if ((CHSPEC_IS2G(pi->radio_chanspec))) {
15244
15245                         gain_delta[0] = 6;
15246                         gain_delta[1] = 6;
15247                 } else {
15248
15249                         curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
15250                         gain_delta[0] =
15251                                 (s16)
15252                                 PHY_HW_ROUND(((nphy_lnagain_est0[0] *
15253                                                curr_channel) +
15254                                               nphy_lnagain_est0[1]), 13);
15255                         gain_delta[1] =
15256                                 (s16)
15257                                 PHY_HW_ROUND(((nphy_lnagain_est1[0] *
15258                                                curr_channel) +
15259                                               nphy_lnagain_est1[1]), 13);
15260                 }
15261         } else {
15262
15263                 gain_delta[0] = 0;
15264                 gain_delta[1] = 0;
15265         }
15266
15267         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
15268                 if (pi->nphy_elna_gain_config) {
15269
15270                         regval[0] = nphy_def_lnagains[2] + gain_delta[core];
15271                         regval[1] = nphy_def_lnagains[3] + gain_delta[core];
15272                         regval[2] = nphy_def_lnagains[3] + gain_delta[core];
15273                         regval[3] = nphy_def_lnagains[3] + gain_delta[core];
15274                 } else {
15275                         for (ctr = 0; ctr < 4; ctr++)
15276                                 regval[ctr] =
15277                                         nphy_def_lnagains[ctr] +
15278                                         gain_delta[core];
15279                 }
15280                 wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
15281
15282                 minmax_gain[core] =
15283                         (u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
15284         }
15285
15286         mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
15287         mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
15288
15289         if (pi->phyhang_avoid)
15290                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
15291 }
15292
15293 static void
15294 wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy *pi, u8 core)
15295 {
15296         if (core == PHY_CORE_0) {
15297                 write_phy_reg(pi, 0x38, 0x4);
15298                 if (CHSPEC_IS2G(pi->radio_chanspec))
15299                         write_phy_reg(pi, 0x37, 0x0060);
15300                 else
15301                         write_phy_reg(pi, 0x37, 0x1080);
15302         } else if (core == PHY_CORE_1) {
15303                 write_phy_reg(pi, 0x2ae, 0x4);
15304                 if (CHSPEC_IS2G(pi->radio_chanspec))
15305                         write_phy_reg(pi, 0x2ad, 0x0060);
15306                 else
15307                         write_phy_reg(pi, 0x2ad, 0x1080);
15308         }
15309 }
15310
15311 static void wlc_phy_war_txchain_upd_nphy(struct brcms_phy *pi, u8 txchain)
15312 {
15313         u8 txchain0, txchain1;
15314
15315         txchain0 = txchain & 0x1;
15316         txchain1 = (txchain & 0x2) >> 1;
15317         if (!txchain0)
15318                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15319
15320         if (!txchain1)
15321                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15322 }
15323
15324 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy *pi)
15325 {
15326         s8 lna1_gain_db[] = { 8, 13, 17, 22 };
15327         s8 lna2_gain_db[] = { -2, 7, 11, 15 };
15328         s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
15329         s8 tia_gainbits[] = {
15330                 0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15331
15332         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15333         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15334
15335         mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15336
15337         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
15338         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
15339
15340         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
15341                                  lna1_gain_db);
15342         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
15343                                  lna1_gain_db);
15344
15345         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
15346                                  lna2_gain_db);
15347         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
15348                                  lna2_gain_db);
15349
15350         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15351                                  tia_gain_db);
15352         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15353                                  tia_gain_db);
15354
15355         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15356                                  tia_gainbits);
15357         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15358                                  tia_gainbits);
15359
15360         write_phy_reg(pi, 0x37, 0x74);
15361         write_phy_reg(pi, 0x2ad, 0x74);
15362         write_phy_reg(pi, 0x38, 0x18);
15363         write_phy_reg(pi, 0x2ae, 0x18);
15364
15365         write_phy_reg(pi, 0x2b, 0xe8);
15366         write_phy_reg(pi, 0x41, 0xe8);
15367
15368         if (CHSPEC_IS20(pi->radio_chanspec)) {
15369
15370                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
15371                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
15372         } else {
15373
15374                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
15375                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
15376         }
15377 }
15378
15379 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
15380 {
15381         u16 currband;
15382         s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
15383         s8 *lna1_gain_db = NULL;
15384         s8 *lna1_gain_db_2 = NULL;
15385         s8 *lna2_gain_db = NULL;
15386         s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
15387         s8 *tia_gain_db;
15388         s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
15389         s8 *tia_gainbits;
15390         u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
15391         u16 *rfseq_init_gain;
15392         u16 init_gaincode;
15393         u16 clip1hi_gaincode;
15394         u16 clip1md_gaincode = 0;
15395         u16 clip1md_gaincode_B;
15396         u16 clip1lo_gaincode;
15397         u16 clip1lo_gaincode_B;
15398         u8 crsminl_th = 0;
15399         u8 crsminu_th;
15400         u16 nbclip_th = 0;
15401         u8 w1clip_th;
15402         u16 freq;
15403         s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
15404         u8 chg_nbclip_th = 0;
15405
15406         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15407         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15408
15409         currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15410         if (currband == 0) {
15411
15412                 lna1_gain_db = lna1G_gain_db_rev7;
15413
15414                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15415                                          lna1_gain_db);
15416                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15417                                          lna1_gain_db);
15418
15419                 mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
15420
15421                 if (CHSPEC_IS40(pi->radio_chanspec)) {
15422                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
15423                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
15424                 }
15425
15426                 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15427
15428                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15429                         mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
15430                         mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
15431                 }
15432         } else {
15433
15434                 init_gaincode = 0x9e;
15435                 clip1hi_gaincode = 0x9e;
15436                 clip1md_gaincode_B = 0x24;
15437                 clip1lo_gaincode = 0x8a;
15438                 clip1lo_gaincode_B = 8;
15439                 rfseq_init_gain = rfseqA_init_gain_rev7;
15440
15441                 tia_gain_db = tiaA_gain_db_rev7;
15442                 tia_gainbits = tiaA_gainbits_rev7;
15443
15444                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
15445                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15446
15447                         w1clip_th = 25;
15448                         clip1md_gaincode = 0x82;
15449
15450                         if ((freq <= 5080) || (freq == 5825)) {
15451
15452                                 s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
15453                                 s8 lna1A_gain_db_2_rev7[] = {
15454                                         11, 17, 22, 25};
15455                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15456
15457                                 crsminu_th = 0x3e;
15458                                 lna1_gain_db = lna1A_gain_db_rev7;
15459                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15460                                 lna2_gain_db = lna2A_gain_db_rev7;
15461                         } else if ((freq >= 5500) && (freq <= 5700)) {
15462
15463                                 s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
15464                                 s8 lna1A_gain_db_2_rev7[] = {
15465                                         12, 18, 22, 26};
15466                                 s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
15467
15468                                 crsminu_th = 0x45;
15469                                 clip1md_gaincode_B = 0x14;
15470                                 nbclip_th = 0xff;
15471                                 chg_nbclip_th = 1;
15472                                 lna1_gain_db = lna1A_gain_db_rev7;
15473                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15474                                 lna2_gain_db = lna2A_gain_db_rev7;
15475                         } else {
15476
15477                                 s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
15478                                 s8 lna1A_gain_db_2_rev7[] = {
15479                                         12, 18, 22, 26};
15480                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15481
15482                                 crsminu_th = 0x41;
15483                                 lna1_gain_db = lna1A_gain_db_rev7;
15484                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15485                                 lna2_gain_db = lna2A_gain_db_rev7;
15486                         }
15487
15488                         if (freq <= 4920) {
15489                                 nvar_baseline_offset0 = 5;
15490                                 nvar_baseline_offset1 = 5;
15491                         } else if ((freq > 4920) && (freq <= 5320)) {
15492                                 nvar_baseline_offset0 = 3;
15493                                 nvar_baseline_offset1 = 5;
15494                         } else if ((freq > 5320) && (freq <= 5700)) {
15495                                 nvar_baseline_offset0 = 3;
15496                                 nvar_baseline_offset1 = 2;
15497                         } else {
15498                                 nvar_baseline_offset0 = 4;
15499                                 nvar_baseline_offset1 = 0;
15500                         }
15501                 } else {
15502
15503                         crsminu_th = 0x3a;
15504                         crsminl_th = 0x3a;
15505                         w1clip_th = 20;
15506
15507                         if ((freq >= 4920) && (freq <= 5320)) {
15508                                 nvar_baseline_offset0 = 4;
15509                                 nvar_baseline_offset1 = 5;
15510                         } else if ((freq > 5320) && (freq <= 5550)) {
15511                                 nvar_baseline_offset0 = 4;
15512                                 nvar_baseline_offset1 = 2;
15513                         } else {
15514                                 nvar_baseline_offset0 = 5;
15515                                 nvar_baseline_offset1 = 3;
15516                         }
15517                 }
15518
15519                 write_phy_reg(pi, 0x20, init_gaincode);
15520                 write_phy_reg(pi, 0x2a7, init_gaincode);
15521
15522                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15523                                          pi->pubpi.phy_corenum, 0x106, 16,
15524                                          rfseq_init_gain);
15525
15526                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15527                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15528
15529                 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
15530                 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
15531
15532                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15533                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15534                 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
15535                 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
15536
15537                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15538                                          tia_gain_db);
15539                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15540                                          tia_gain_db);
15541
15542                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15543                                          tia_gainbits);
15544                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15545                                          tia_gainbits);
15546
15547                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15548
15549                 if (chg_nbclip_th == 1) {
15550                         write_phy_reg(pi, 0x2b, nbclip_th);
15551                         write_phy_reg(pi, 0x41, nbclip_th);
15552                 }
15553
15554                 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
15555                 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
15556
15557                 mod_phy_reg(pi, 0x2e4,
15558                             (0x3f << 0), (nvar_baseline_offset0 << 0));
15559
15560                 mod_phy_reg(pi, 0x2e4,
15561                             (0x3f << 6), (nvar_baseline_offset1 << 6));
15562
15563                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15564
15565                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15566                                                  lna1_gain_db);
15567                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15568                                                  lna1_gain_db_2);
15569
15570                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15571                                                  8, lna2_gain_db);
15572                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15573                                                  8, lna2_gain_db);
15574
15575                         write_phy_reg(pi, 0x24, clip1md_gaincode);
15576                         write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15577                 } else {
15578                         mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15579                 }
15580         }
15581 }
15582
15583 static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
15584 {
15585         u16 w1th, hpf_code, currband;
15586         int ctr;
15587         u8 rfseq_updategainu_events[] = {
15588                 NPHY_RFSEQ_CMD_RX_GAIN,
15589                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15590                 NPHY_RFSEQ_CMD_SET_HPF_BW
15591         };
15592         u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
15593         s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
15594         s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
15595         s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
15596         s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
15597         s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
15598         s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
15599         s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
15600         s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
15601         s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
15602         s8 *lna1_gain_db = NULL;
15603         s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
15604         s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
15605         s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
15606         s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
15607         s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
15608         s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
15609         s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
15610         s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
15611         s8 *lna2_gain_db = NULL;
15612         s8 tiaG_gain_db[] = {
15613                 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
15614         s8 tiaA_gain_db[] = {
15615                 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
15616         s8 tiaA_gain_db_rev4[] = {
15617                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15618         s8 tiaA_gain_db_rev5[] = {
15619                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15620         s8 tiaA_gain_db_rev6[] = {
15621                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15622         s8 *tia_gain_db;
15623         s8 tiaG_gainbits[] = {
15624                 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15625         s8 tiaA_gainbits[] = {
15626                 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
15627         s8 tiaA_gainbits_rev4[] = {
15628                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15629         s8 tiaA_gainbits_rev5[] = {
15630                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15631         s8 tiaA_gainbits_rev6[] = {
15632                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15633         s8 *tia_gainbits;
15634         s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
15635         s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
15636         u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
15637         u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
15638         u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
15639         u16 rfseqG_init_gain_rev5_elna[] = {
15640                 0x013f, 0x013f, 0x013f, 0x013f };
15641         u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
15642         u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
15643         u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
15644         u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
15645         u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
15646         u16 rfseqA_init_gain_rev4_elna[] = {
15647                 0x314f, 0x314f, 0x314f, 0x314f };
15648         u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
15649         u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
15650         u16 *rfseq_init_gain;
15651         u16 initG_gaincode = 0x627e;
15652         u16 initG_gaincode_rev4 = 0x527e;
15653         u16 initG_gaincode_rev5 = 0x427e;
15654         u16 initG_gaincode_rev5_elna = 0x027e;
15655         u16 initG_gaincode_rev6 = 0x527e;
15656         u16 initG_gaincode_rev6_224B0 = 0x427e;
15657         u16 initG_gaincode_rev6_elna = 0x127e;
15658         u16 initA_gaincode = 0x52de;
15659         u16 initA_gaincode_rev4 = 0x629e;
15660         u16 initA_gaincode_rev4_elna = 0x329e;
15661         u16 initA_gaincode_rev5 = 0x729e;
15662         u16 initA_gaincode_rev6 = 0x729e;
15663         u16 init_gaincode;
15664         u16 clip1hiG_gaincode = 0x107e;
15665         u16 clip1hiG_gaincode_rev4 = 0x007e;
15666         u16 clip1hiG_gaincode_rev5 = 0x1076;
15667         u16 clip1hiG_gaincode_rev6 = 0x007e;
15668         u16 clip1hiA_gaincode = 0x00de;
15669         u16 clip1hiA_gaincode_rev4 = 0x029e;
15670         u16 clip1hiA_gaincode_rev5 = 0x029e;
15671         u16 clip1hiA_gaincode_rev6 = 0x029e;
15672         u16 clip1hi_gaincode;
15673         u16 clip1mdG_gaincode = 0x0066;
15674         u16 clip1mdA_gaincode = 0x00ca;
15675         u16 clip1mdA_gaincode_rev4 = 0x1084;
15676         u16 clip1mdA_gaincode_rev5 = 0x2084;
15677         u16 clip1mdA_gaincode_rev6 = 0x2084;
15678         u16 clip1md_gaincode = 0;
15679         u16 clip1loG_gaincode = 0x0074;
15680         u16 clip1loG_gaincode_rev5[] = {
15681                 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
15682         };
15683         u16 clip1loG_gaincode_rev6[] = {
15684                 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
15685         };
15686         u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
15687         u16 clip1loA_gaincode = 0x00cc;
15688         u16 clip1loA_gaincode_rev4 = 0x0086;
15689         u16 clip1loA_gaincode_rev5 = 0x2086;
15690         u16 clip1loA_gaincode_rev6 = 0x2086;
15691         u16 clip1lo_gaincode;
15692         u8 crsminG_th = 0x18;
15693         u8 crsminG_th_rev5 = 0x18;
15694         u8 crsminG_th_rev6 = 0x18;
15695         u8 crsminA_th = 0x1e;
15696         u8 crsminA_th_rev4 = 0x24;
15697         u8 crsminA_th_rev5 = 0x24;
15698         u8 crsminA_th_rev6 = 0x24;
15699         u8 crsmin_th;
15700         u8 crsminlG_th = 0x18;
15701         u8 crsminlG_th_rev5 = 0x18;
15702         u8 crsminlG_th_rev6 = 0x18;
15703         u8 crsminlA_th = 0x1e;
15704         u8 crsminlA_th_rev4 = 0x24;
15705         u8 crsminlA_th_rev5 = 0x24;
15706         u8 crsminlA_th_rev6 = 0x24;
15707         u8 crsminl_th = 0;
15708         u8 crsminuG_th = 0x18;
15709         u8 crsminuG_th_rev5 = 0x18;
15710         u8 crsminuG_th_rev6 = 0x18;
15711         u8 crsminuA_th = 0x1e;
15712         u8 crsminuA_th_rev4 = 0x24;
15713         u8 crsminuA_th_rev5 = 0x24;
15714         u8 crsminuA_th_rev6 = 0x24;
15715         u8 crsminuA_th_rev6_224B0 = 0x2d;
15716         u8 crsminu_th;
15717         u16 nbclipG_th = 0x20d;
15718         u16 nbclipG_th_rev4 = 0x1a1;
15719         u16 nbclipG_th_rev5 = 0x1d0;
15720         u16 nbclipG_th_rev6 = 0x1d0;
15721         u16 nbclipA_th = 0x1a1;
15722         u16 nbclipA_th_rev4 = 0x107;
15723         u16 nbclipA_th_rev5 = 0x0a9;
15724         u16 nbclipA_th_rev6 = 0x0f0;
15725         u16 nbclip_th = 0;
15726         u8 w1clipG_th = 5;
15727         u8 w1clipG_th_rev5 = 9;
15728         u8 w1clipG_th_rev6 = 5;
15729         u8 w1clipA_th = 25, w1clip_th;
15730         u8 rssi_gain_default = 0x50;
15731         u8 rssiG_gain_rev6_224B0 = 0x50;
15732         u8 rssiA_gain_rev5 = 0x90;
15733         u8 rssiA_gain_rev6 = 0x90;
15734         u8 rssi_gain;
15735         u16 regval[21];
15736         u8 triso;
15737
15738         triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
15739                 pi->srom_fem2g.triso;
15740
15741         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15742                 if (pi->pubpi.radiorev == 5) {
15743                         wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
15744                 } else if (pi->pubpi.radiorev == 7) {
15745                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15746
15747                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
15748                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
15749
15750                 } else if ((pi->pubpi.radiorev == 3)
15751                            || (pi->pubpi.radiorev == 8)) {
15752                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15753
15754                         if (pi->pubpi.radiorev == 8) {
15755                                 mod_phy_reg(pi, 0x283,
15756                                             (0xff << 0), (0x44 << 0));
15757                                 mod_phy_reg(pi, 0x280,
15758                                             (0xff << 0), (0x44 << 0));
15759                         }
15760                 } else {
15761                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15762                 }
15763         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15764
15765                 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
15766
15767                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15768                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15769
15770                 currband =
15771                         read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15772                 if (currband == 0) {
15773                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15774                                 if (pi->pubpi.radiorev == 11) {
15775                                         lna1_gain_db = lna1G_gain_db_rev6_224B0;
15776                                         lna2_gain_db = lna2G_gain_db_rev6_224B0;
15777                                         rfseq_init_gain =
15778                                                 rfseqG_init_gain_rev6_224B0;
15779                                         init_gaincode =
15780                                                 initG_gaincode_rev6_224B0;
15781                                         clip1hi_gaincode =
15782                                                 clip1hiG_gaincode_rev6;
15783                                         clip1lo_gaincode =
15784                                                 clip1loG_gaincode_rev6_224B0;
15785                                         nbclip_th = nbclipG_th_rev6;
15786                                         w1clip_th = w1clipG_th_rev6;
15787                                         crsmin_th = crsminG_th_rev6;
15788                                         crsminl_th = crsminlG_th_rev6;
15789                                         crsminu_th = crsminuG_th_rev6;
15790                                         rssi_gain = rssiG_gain_rev6_224B0;
15791                                 } else {
15792                                         lna1_gain_db = lna1G_gain_db_rev6;
15793                                         lna2_gain_db = lna2G_gain_db_rev6;
15794                                         if (pi->sh->boardflags & BFL_EXTLNA) {
15795
15796                                                 rfseq_init_gain =
15797                                                      rfseqG_init_gain_rev6_elna;
15798                                                 init_gaincode =
15799                                                        initG_gaincode_rev6_elna;
15800                                         } else {
15801                                                 rfseq_init_gain =
15802                                                         rfseqG_init_gain_rev6;
15803                                                 init_gaincode =
15804                                                         initG_gaincode_rev6;
15805                                         }
15806                                         clip1hi_gaincode =
15807                                                 clip1hiG_gaincode_rev6;
15808                                         switch (triso) {
15809                                         case 0:
15810                                                 clip1lo_gaincode =
15811                                                         clip1loG_gaincode_rev6
15812                                                         [0];
15813                                                 break;
15814                                         case 1:
15815                                                 clip1lo_gaincode =
15816                                                         clip1loG_gaincode_rev6
15817                                                         [1];
15818                                                 break;
15819                                         case 2:
15820                                                 clip1lo_gaincode =
15821                                                         clip1loG_gaincode_rev6
15822                                                         [2];
15823                                                 break;
15824                                         case 3:
15825                                         default:
15826
15827                                                 clip1lo_gaincode =
15828                                                         clip1loG_gaincode_rev6
15829                                                         [3];
15830                                                 break;
15831                                         case 4:
15832                                                 clip1lo_gaincode =
15833                                                         clip1loG_gaincode_rev6
15834                                                         [4];
15835                                                 break;
15836                                         case 5:
15837                                                 clip1lo_gaincode =
15838                                                         clip1loG_gaincode_rev6
15839                                                         [5];
15840                                                 break;
15841                                         case 6:
15842                                                 clip1lo_gaincode =
15843                                                         clip1loG_gaincode_rev6
15844                                                         [6];
15845                                                 break;
15846                                         case 7:
15847                                                 clip1lo_gaincode =
15848                                                         clip1loG_gaincode_rev6
15849                                                         [7];
15850                                                 break;
15851                                         }
15852                                         nbclip_th = nbclipG_th_rev6;
15853                                         w1clip_th = w1clipG_th_rev6;
15854                                         crsmin_th = crsminG_th_rev6;
15855                                         crsminl_th = crsminlG_th_rev6;
15856                                         crsminu_th = crsminuG_th_rev6;
15857                                         rssi_gain = rssi_gain_default;
15858                                 }
15859                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15860                                 lna1_gain_db = lna1G_gain_db_rev5;
15861                                 lna2_gain_db = lna2G_gain_db_rev5;
15862                                 if (pi->sh->boardflags & BFL_EXTLNA) {
15863
15864                                         rfseq_init_gain =
15865                                                 rfseqG_init_gain_rev5_elna;
15866                                         init_gaincode =
15867                                                 initG_gaincode_rev5_elna;
15868                                 } else {
15869                                         rfseq_init_gain = rfseqG_init_gain_rev5;
15870                                         init_gaincode = initG_gaincode_rev5;
15871                                 }
15872                                 clip1hi_gaincode = clip1hiG_gaincode_rev5;
15873                                 switch (triso) {
15874                                 case 0:
15875                                         clip1lo_gaincode =
15876                                                 clip1loG_gaincode_rev5[0];
15877                                         break;
15878                                 case 1:
15879                                         clip1lo_gaincode =
15880                                                 clip1loG_gaincode_rev5[1];
15881                                         break;
15882                                 case 2:
15883                                         clip1lo_gaincode =
15884                                                 clip1loG_gaincode_rev5[2];
15885                                         break;
15886                                 case 3:
15887
15888                                         clip1lo_gaincode =
15889                                                 clip1loG_gaincode_rev5[3];
15890                                         break;
15891                                 case 4:
15892                                         clip1lo_gaincode =
15893                                                 clip1loG_gaincode_rev5[4];
15894                                         break;
15895                                 case 5:
15896                                         clip1lo_gaincode =
15897                                                 clip1loG_gaincode_rev5[5];
15898                                         break;
15899                                 case 6:
15900                                         clip1lo_gaincode =
15901                                                 clip1loG_gaincode_rev5[6];
15902                                         break;
15903                                 case 7:
15904                                         clip1lo_gaincode =
15905                                                 clip1loG_gaincode_rev5[7];
15906                                         break;
15907                                 default:
15908                                         clip1lo_gaincode =
15909                                                 clip1loG_gaincode_rev5[3];
15910                                         break;
15911                                 }
15912                                 nbclip_th = nbclipG_th_rev5;
15913                                 w1clip_th = w1clipG_th_rev5;
15914                                 crsmin_th = crsminG_th_rev5;
15915                                 crsminl_th = crsminlG_th_rev5;
15916                                 crsminu_th = crsminuG_th_rev5;
15917                                 rssi_gain = rssi_gain_default;
15918                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15919                                 lna1_gain_db = lna1G_gain_db_rev4;
15920                                 lna2_gain_db = lna2G_gain_db;
15921                                 rfseq_init_gain = rfseqG_init_gain_rev4;
15922                                 init_gaincode = initG_gaincode_rev4;
15923                                 clip1hi_gaincode = clip1hiG_gaincode_rev4;
15924                                 clip1lo_gaincode = clip1loG_gaincode;
15925                                 nbclip_th = nbclipG_th_rev4;
15926                                 w1clip_th = w1clipG_th;
15927                                 crsmin_th = crsminG_th;
15928                                 crsminl_th = crsminlG_th;
15929                                 crsminu_th = crsminuG_th;
15930                                 rssi_gain = rssi_gain_default;
15931                         } else {
15932                                 lna1_gain_db = lna1G_gain_db;
15933                                 lna2_gain_db = lna2G_gain_db;
15934                                 rfseq_init_gain = rfseqG_init_gain;
15935                                 init_gaincode = initG_gaincode;
15936                                 clip1hi_gaincode = clip1hiG_gaincode;
15937                                 clip1lo_gaincode = clip1loG_gaincode;
15938                                 nbclip_th = nbclipG_th;
15939                                 w1clip_th = w1clipG_th;
15940                                 crsmin_th = crsminG_th;
15941                                 crsminl_th = crsminlG_th;
15942                                 crsminu_th = crsminuG_th;
15943                                 rssi_gain = rssi_gain_default;
15944                         }
15945                         tia_gain_db = tiaG_gain_db;
15946                         tia_gainbits = tiaG_gainbits;
15947                         clip1md_gaincode = clip1mdG_gaincode;
15948                 } else {
15949                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15950                                 lna1_gain_db = lna1A_gain_db_rev6;
15951                                 lna2_gain_db = lna2A_gain_db_rev6;
15952                                 tia_gain_db = tiaA_gain_db_rev6;
15953                                 tia_gainbits = tiaA_gainbits_rev6;
15954                                 rfseq_init_gain = rfseqA_init_gain_rev6;
15955                                 init_gaincode = initA_gaincode_rev6;
15956                                 clip1hi_gaincode = clip1hiA_gaincode_rev6;
15957                                 clip1md_gaincode = clip1mdA_gaincode_rev6;
15958                                 clip1lo_gaincode = clip1loA_gaincode_rev6;
15959                                 crsmin_th = crsminA_th_rev6;
15960                                 crsminl_th = crsminlA_th_rev6;
15961                                 if ((pi->pubpi.radiorev == 11) &&
15962                                     (CHSPEC_IS40(pi->radio_chanspec) == 0))
15963                                         crsminu_th = crsminuA_th_rev6_224B0;
15964                                 else
15965                                         crsminu_th = crsminuA_th_rev6;
15966
15967                                 nbclip_th = nbclipA_th_rev6;
15968                                 rssi_gain = rssiA_gain_rev6;
15969                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15970                                 lna1_gain_db = lna1A_gain_db_rev5;
15971                                 lna2_gain_db = lna2A_gain_db_rev5;
15972                                 tia_gain_db = tiaA_gain_db_rev5;
15973                                 tia_gainbits = tiaA_gainbits_rev5;
15974                                 rfseq_init_gain = rfseqA_init_gain_rev5;
15975                                 init_gaincode = initA_gaincode_rev5;
15976                                 clip1hi_gaincode = clip1hiA_gaincode_rev5;
15977                                 clip1md_gaincode = clip1mdA_gaincode_rev5;
15978                                 clip1lo_gaincode = clip1loA_gaincode_rev5;
15979                                 crsmin_th = crsminA_th_rev5;
15980                                 crsminl_th = crsminlA_th_rev5;
15981                                 crsminu_th = crsminuA_th_rev5;
15982                                 nbclip_th = nbclipA_th_rev5;
15983                                 rssi_gain = rssiA_gain_rev5;
15984                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15985                                 lna1_gain_db = lna1A_gain_db_rev4;
15986                                 lna2_gain_db = lna2A_gain_db_rev4;
15987                                 tia_gain_db = tiaA_gain_db_rev4;
15988                                 tia_gainbits = tiaA_gainbits_rev4;
15989                                 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
15990
15991                                         rfseq_init_gain =
15992                                                 rfseqA_init_gain_rev4_elna;
15993                                         init_gaincode =
15994                                                 initA_gaincode_rev4_elna;
15995                                 } else {
15996                                         rfseq_init_gain = rfseqA_init_gain_rev4;
15997                                         init_gaincode = initA_gaincode_rev4;
15998                                 }
15999                                 clip1hi_gaincode = clip1hiA_gaincode_rev4;
16000                                 clip1md_gaincode = clip1mdA_gaincode_rev4;
16001                                 clip1lo_gaincode = clip1loA_gaincode_rev4;
16002                                 crsmin_th = crsminA_th_rev4;
16003                                 crsminl_th = crsminlA_th_rev4;
16004                                 crsminu_th = crsminuA_th_rev4;
16005                                 nbclip_th = nbclipA_th_rev4;
16006                                 rssi_gain = rssi_gain_default;
16007                         } else {
16008                                 lna1_gain_db = lna1A_gain_db;
16009                                 lna2_gain_db = lna2A_gain_db;
16010                                 tia_gain_db = tiaA_gain_db;
16011                                 tia_gainbits = tiaA_gainbits;
16012                                 rfseq_init_gain = rfseqA_init_gain;
16013                                 init_gaincode = initA_gaincode;
16014                                 clip1hi_gaincode = clip1hiA_gaincode;
16015                                 clip1md_gaincode = clip1mdA_gaincode;
16016                                 clip1lo_gaincode = clip1loA_gaincode;
16017                                 crsmin_th = crsminA_th;
16018                                 crsminl_th = crsminlA_th;
16019                                 crsminu_th = crsminuA_th;
16020                                 nbclip_th = nbclipA_th;
16021                                 rssi_gain = rssi_gain_default;
16022                         }
16023                         w1clip_th = w1clipA_th;
16024                 }
16025
16026                 write_radio_reg(pi,
16027                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16028                                  RADIO_2056_RX0), 0x17);
16029                 write_radio_reg(pi,
16030                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16031                                  RADIO_2056_RX1), 0x17);
16032
16033                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
16034                                 0xf0);
16035                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
16036                                 0xf0);
16037
16038                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
16039                                 0x0);
16040                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
16041                                 0x0);
16042
16043                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
16044                                 rssi_gain);
16045                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
16046                                 rssi_gain);
16047
16048                 write_radio_reg(pi,
16049                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16050                                  RADIO_2056_RX0), 0x17);
16051                 write_radio_reg(pi,
16052                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16053                                  RADIO_2056_RX1), 0x17);
16054
16055                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
16056                                 0xFF);
16057                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
16058                                 0xFF);
16059
16060                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
16061                                          8, lna1_gain_db);
16062                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
16063                                          8, lna1_gain_db);
16064
16065                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
16066                                          8, lna2_gain_db);
16067                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
16068                                          8, lna2_gain_db);
16069
16070                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
16071                                          8, tia_gain_db);
16072                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
16073                                          8, tia_gain_db);
16074
16075                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
16076                                          8, tia_gainbits);
16077                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
16078                                          8, tia_gainbits);
16079
16080                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
16081                                          8, &lpf_gain_db);
16082                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
16083                                          8, &lpf_gain_db);
16084                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
16085                                          8, &lpf_gainbits);
16086                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
16087                                          8, &lpf_gainbits);
16088
16089                 write_phy_reg(pi, 0x20, init_gaincode);
16090                 write_phy_reg(pi, 0x2a7, init_gaincode);
16091
16092                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16093                                          pi->pubpi.phy_corenum, 0x106, 16,
16094                                          rfseq_init_gain);
16095
16096                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
16097                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
16098
16099                 write_phy_reg(pi, 0x24, clip1md_gaincode);
16100                 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
16101
16102                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
16103                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
16104
16105                 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
16106                 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
16107                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
16108
16109                 write_phy_reg(pi, 0x2b, nbclip_th);
16110                 write_phy_reg(pi, 0x41, nbclip_th);
16111
16112                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
16113                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
16114
16115                 write_phy_reg(pi, 0x150, 0x809c);
16116
16117         } else {
16118
16119                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16120                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16121
16122                 write_phy_reg(pi, 0x2b, 0x84);
16123                 write_phy_reg(pi, 0x41, 0x84);
16124
16125                 if (CHSPEC_IS20(pi->radio_chanspec)) {
16126                         write_phy_reg(pi, 0x6b, 0x2b);
16127                         write_phy_reg(pi, 0x6c, 0x2b);
16128                         write_phy_reg(pi, 0x6d, 0x9);
16129                         write_phy_reg(pi, 0x6e, 0x9);
16130                 }
16131
16132                 w1th = NPHY_RSSICAL_W1_TARGET - 4;
16133                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
16134                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
16135
16136                 if (CHSPEC_IS20(pi->radio_chanspec)) {
16137                         mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
16138                         mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
16139
16140                         mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
16141                         mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16142                 }
16143
16144                 write_phy_reg(pi, 0x150, 0x809c);
16145
16146                 if (pi->nphy_gain_boost)
16147                         if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16148                             (CHSPEC_IS40(pi->radio_chanspec)))
16149                                 hpf_code = 4;
16150                         else
16151                                 hpf_code = 5;
16152                 else if (CHSPEC_IS40(pi->radio_chanspec))
16153                         hpf_code = 6;
16154                 else
16155                         hpf_code = 7;
16156
16157                 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16158                 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16159
16160                 for (ctr = 0; ctr < 4; ctr++)
16161                         regval[ctr] = (hpf_code << 8) | 0x7c;
16162                 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16163
16164                 wlc_phy_adjust_lnagaintbl_nphy(pi);
16165
16166                 if (pi->nphy_elna_gain_config) {
16167                         regval[0] = 0;
16168                         regval[1] = 1;
16169                         regval[2] = 1;
16170                         regval[3] = 1;
16171                         wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16172                         wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16173
16174                         for (ctr = 0; ctr < 4; ctr++)
16175                                 regval[ctr] = (hpf_code << 8) | 0x74;
16176                         wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16177                 }
16178
16179                 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16180                         for (ctr = 0; ctr < 21; ctr++)
16181                                 regval[ctr] = 3 * ctr;
16182                         wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16183                         wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16184
16185                         for (ctr = 0; ctr < 21; ctr++)
16186                                 regval[ctr] = (u16) ctr;
16187                         wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16188                         wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16189                 }
16190
16191                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16192                                        rfseq_updategainu_events,
16193                                        rfseq_updategainu_dlys,
16194                                        sizeof(rfseq_updategainu_events) /
16195                                        sizeof(rfseq_updategainu_events[0]));
16196
16197                 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16198
16199                 if (CHSPEC_IS2G(pi->radio_chanspec))
16200                         mod_phy_reg(pi,
16201                                     (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16202                                     0x7f, 0x4);
16203         }
16204 }
16205
16206 static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
16207 {
16208         u8 rfseq_rx2tx_events[] = {
16209                 NPHY_RFSEQ_CMD_NOP,
16210                 NPHY_RFSEQ_CMD_RXG_FBW,
16211                 NPHY_RFSEQ_CMD_TR_SWITCH,
16212                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16213                 NPHY_RFSEQ_CMD_RXPD_TXPD,
16214                 NPHY_RFSEQ_CMD_TX_GAIN,
16215                 NPHY_RFSEQ_CMD_EXT_PA
16216         };
16217         u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
16218         u8 rfseq_tx2rx_events[] = {
16219                 NPHY_RFSEQ_CMD_NOP,
16220                 NPHY_RFSEQ_CMD_EXT_PA,
16221                 NPHY_RFSEQ_CMD_TX_GAIN,
16222                 NPHY_RFSEQ_CMD_RXPD_TXPD,
16223                 NPHY_RFSEQ_CMD_TR_SWITCH,
16224                 NPHY_RFSEQ_CMD_RXG_FBW,
16225                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
16226         };
16227         u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
16228         u8 rfseq_tx2rx_events_rev3[] = {
16229                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16230                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16231                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16232                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16233                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16234                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16235                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16236                 NPHY_REV3_RFSEQ_CMD_END
16237         };
16238         u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
16239         u8 rfseq_rx2tx_events_rev3[] = {
16240                 NPHY_REV3_RFSEQ_CMD_NOP,
16241                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16242                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16243                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16244                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16245                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16246                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16247                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16248                 NPHY_REV3_RFSEQ_CMD_END
16249         };
16250         u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
16251
16252         u8 rfseq_rx2tx_events_rev3_ipa[] = {
16253                 NPHY_REV3_RFSEQ_CMD_NOP,
16254                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16255                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16256                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16257                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16258                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16259                 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16260                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16261                 NPHY_REV3_RFSEQ_CMD_END
16262         };
16263         u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16264         u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
16265
16266         s16 alpha0, alpha1, alpha2;
16267         s16 beta0, beta1, beta2;
16268         u32 leg_data_weights, ht_data_weights, nss1_data_weights,
16269             stbc_data_weights;
16270         u8 chan_freq_range = 0;
16271         u16 dac_control = 0x0002;
16272         u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
16273         u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
16274         u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16275         u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16276         u16 *aux_adc_vmid;
16277         u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
16278         u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
16279         u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
16280         u16 *aux_adc_gain;
16281         u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
16282         u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
16283         s32 min_nvar_val = 0x18d;
16284         s32 min_nvar_offset_6mbps = 20;
16285         u8 pdetrange;
16286         u8 triso;
16287         u16 regval;
16288         u16 afectrl_adc_ctrl1_rev7 = 0x20;
16289         u16 afectrl_adc_ctrl2_rev7 = 0x0;
16290         u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
16291         u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
16292         u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
16293         u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
16294         u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16295         u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16296         u16 ipalvlshift_3p3_war_en = 0;
16297         u16 rccal_bcap_val, rccal_scap_val;
16298         u16 rccal_tx20_11b_bcap = 0;
16299         u16 rccal_tx20_11b_scap = 0;
16300         u16 rccal_tx20_11n_bcap = 0;
16301         u16 rccal_tx20_11n_scap = 0;
16302         u16 rccal_tx40_11n_bcap = 0;
16303         u16 rccal_tx40_11n_scap = 0;
16304         u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
16305         u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
16306         u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
16307         u16 tx_lpf_bw_ofdm_20mhz = 0;
16308         u16 tx_lpf_bw_ofdm_40mhz = 0;
16309         u16 tx_lpf_bw_11b = 0;
16310         u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
16311         u16 txgm_idac_bleed = 0;
16312         bool rccal_ovrd = false;
16313         u16 freq;
16314         int coreNum;
16315
16316         if (CHSPEC_IS5G(pi->radio_chanspec))
16317                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
16318         else
16319                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
16320
16321         if (pi->phyhang_avoid)
16322                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
16323
16324         or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
16325
16326         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
16327
16328                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
16329                         mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
16330
16331                         mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
16332                         mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
16333                         mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
16334                         mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
16335                         mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
16336                         mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
16337                         mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
16338                         mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
16339                         mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
16340                         mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
16341                         mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
16342                         mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
16343                         mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
16344                         mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
16345                         mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
16346                         mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
16347                 }
16348
16349                 if (NREV_LE(pi->pubpi.phy_rev, 8)) {
16350                         write_phy_reg(pi, 0x23f, 0x1b0);
16351                         write_phy_reg(pi, 0x240, 0x1b0);
16352                 }
16353
16354                 if (NREV_GE(pi->pubpi.phy_rev, 8))
16355                         mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
16356
16357                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16358                                          &dac_control);
16359                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16360                                          &dac_control);
16361
16362                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16363                                         1, 0, 32, &leg_data_weights);
16364                 leg_data_weights = leg_data_weights & 0xffffff;
16365                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16366                                          1, 0, 32, &leg_data_weights);
16367
16368                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16369                                          2, 0x15e, 16,
16370                                          rfseq_rx2tx_dacbufpu_rev7);
16371                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
16372                                          rfseq_rx2tx_dacbufpu_rev7);
16373
16374                 if (PHY_IPA(pi))
16375                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16376                                                rfseq_rx2tx_events_rev3_ipa,
16377                                                rfseq_rx2tx_dlys_rev3_ipa,
16378                                                sizeof
16379                                                (rfseq_rx2tx_events_rev3_ipa) /
16380                                                sizeof
16381                                                (rfseq_rx2tx_events_rev3_ipa
16382                                                 [0]));
16383
16384                 mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
16385                 mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
16386
16387                 tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
16388                 tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
16389                 tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
16390
16391                 if (PHY_IPA(pi)) {
16392
16393                         if (((pi->pubpi.radiorev == 5)
16394                              && (CHSPEC_IS40(pi->radio_chanspec) == 1))
16395                             || (pi->pubpi.radiorev == 7)
16396                             || (pi->pubpi.radiorev == 8)) {
16397
16398                                 rccal_bcap_val =
16399                                         read_radio_reg(
16400                                                 pi,
16401                                                 RADIO_2057_RCCAL_BCAP_VAL);
16402                                 rccal_scap_val =
16403                                         read_radio_reg(
16404                                                 pi,
16405                                                 RADIO_2057_RCCAL_SCAP_VAL);
16406
16407                                 rccal_tx20_11b_bcap = rccal_bcap_val;
16408                                 rccal_tx20_11b_scap = rccal_scap_val;
16409
16410                                 if ((pi->pubpi.radiorev == 5) &&
16411                                     (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
16412
16413                                         rccal_tx20_11n_bcap = rccal_bcap_val;
16414                                         rccal_tx20_11n_scap = rccal_scap_val;
16415                                         rccal_tx40_11n_bcap = 0xc;
16416                                         rccal_tx40_11n_scap = 0xc;
16417
16418                                         rccal_ovrd = true;
16419
16420                                 } else if ((pi->pubpi.radiorev == 7)
16421                                            || (pi->pubpi.radiorev == 8)) {
16422
16423                                         tx_lpf_bw_ofdm_20mhz = 4;
16424                                         tx_lpf_bw_11b = 1;
16425
16426                                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
16427                                                 rccal_tx20_11n_bcap = 0xc;
16428                                                 rccal_tx20_11n_scap = 0xc;
16429                                                 rccal_tx40_11n_bcap = 0xa;
16430                                                 rccal_tx40_11n_scap = 0xa;
16431                                         } else {
16432                                                 rccal_tx20_11n_bcap = 0x14;
16433                                                 rccal_tx20_11n_scap = 0x14;
16434                                                 rccal_tx40_11n_bcap = 0xf;
16435                                                 rccal_tx40_11n_scap = 0xf;
16436                                         }
16437
16438                                         rccal_ovrd = true;
16439                                 }
16440                         }
16441
16442                 } else {
16443
16444                         if (pi->pubpi.radiorev == 5) {
16445
16446                                 tx_lpf_bw_ofdm_20mhz = 1;
16447                                 tx_lpf_bw_ofdm_40mhz = 3;
16448
16449                                 rccal_bcap_val =
16450                                         read_radio_reg(
16451                                                 pi,
16452                                                 RADIO_2057_RCCAL_BCAP_VAL);
16453                                 rccal_scap_val =
16454                                         read_radio_reg(
16455                                                 pi,
16456                                                 RADIO_2057_RCCAL_SCAP_VAL);
16457
16458                                 rccal_tx20_11b_bcap = rccal_bcap_val;
16459                                 rccal_tx20_11b_scap = rccal_scap_val;
16460
16461                                 rccal_tx20_11n_bcap = 0x13;
16462                                 rccal_tx20_11n_scap = 0x11;
16463                                 rccal_tx40_11n_bcap = 0x13;
16464                                 rccal_tx40_11n_scap = 0x11;
16465
16466                                 rccal_ovrd = true;
16467                         }
16468                 }
16469
16470                 if (rccal_ovrd) {
16471
16472                         rx2tx_lpf_rc_lut_tx20_11b =
16473                                 (rccal_tx20_11b_bcap << 8) |
16474                                 (rccal_tx20_11b_scap << 3) |
16475                                 tx_lpf_bw_11b;
16476                         rx2tx_lpf_rc_lut_tx20_11n =
16477                                 (rccal_tx20_11n_bcap << 8) |
16478                                 (rccal_tx20_11n_scap << 3) |
16479                                 tx_lpf_bw_ofdm_20mhz;
16480                         rx2tx_lpf_rc_lut_tx40_11n =
16481                                 (rccal_tx40_11n_bcap << 8) |
16482                                 (rccal_tx40_11n_scap << 3) |
16483                                 tx_lpf_bw_ofdm_40mhz;
16484
16485                         for (coreNum = 0; coreNum <= 1; coreNum++) {
16486                                 wlc_phy_table_write_nphy(
16487                                         pi, NPHY_TBL_ID_RFSEQ,
16488                                         1,
16489                                         0x152 + coreNum * 0x10,
16490                                         16,
16491                                         &rx2tx_lpf_rc_lut_tx20_11b);
16492                                 wlc_phy_table_write_nphy(
16493                                         pi, NPHY_TBL_ID_RFSEQ,
16494                                         1,
16495                                         0x153 + coreNum * 0x10,
16496                                         16,
16497                                         &rx2tx_lpf_rc_lut_tx20_11n);
16498                                 wlc_phy_table_write_nphy(
16499                                         pi, NPHY_TBL_ID_RFSEQ,
16500                                         1,
16501                                         0x154 + coreNum * 0x10,
16502                                         16,
16503                                         &rx2tx_lpf_rc_lut_tx20_11n);
16504                                 wlc_phy_table_write_nphy(
16505                                         pi, NPHY_TBL_ID_RFSEQ,
16506                                         1,
16507                                         0x155 + coreNum * 0x10,
16508                                         16,
16509                                         &rx2tx_lpf_rc_lut_tx40_11n);
16510                                 wlc_phy_table_write_nphy(
16511                                         pi, NPHY_TBL_ID_RFSEQ,
16512                                         1,
16513                                         0x156 + coreNum * 0x10,
16514                                         16,
16515                                         &rx2tx_lpf_rc_lut_tx40_11n);
16516                                 wlc_phy_table_write_nphy(
16517                                         pi, NPHY_TBL_ID_RFSEQ,
16518                                         1,
16519                                         0x157 + coreNum * 0x10,
16520                                         16,
16521                                         &rx2tx_lpf_rc_lut_tx40_11n);
16522                                 wlc_phy_table_write_nphy(
16523                                         pi, NPHY_TBL_ID_RFSEQ,
16524                                         1,
16525                                         0x158 + coreNum * 0x10,
16526                                         16,
16527                                         &rx2tx_lpf_rc_lut_tx40_11n);
16528                                 wlc_phy_table_write_nphy(
16529                                         pi, NPHY_TBL_ID_RFSEQ,
16530                                         1,
16531                                         0x159 + coreNum * 0x10,
16532                                         16,
16533                                         &rx2tx_lpf_rc_lut_tx40_11n);
16534                         }
16535
16536                         wlc_phy_rfctrl_override_nphy_rev7(
16537                                 pi, (0x1 << 4),
16538                                 1, 0x3, 0,
16539                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
16540                 }
16541
16542                 write_phy_reg(pi, 0x32f, 0x3);
16543
16544                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
16545                         wlc_phy_rfctrl_override_nphy_rev7(
16546                                 pi, (0x1 << 2),
16547                                 1, 0x3, 0,
16548                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
16549
16550                 if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
16551                     (pi->pubpi.radiorev == 6)) {
16552                         if ((pi->sh->sromrev >= 8)
16553                             && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
16554                                 ipalvlshift_3p3_war_en = 1;
16555
16556                         if (ipalvlshift_3p3_war_en) {
16557                                 write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG,
16558                                                 0x5);
16559                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL1,
16560                                                 0x30);
16561                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
16562                                 or_radio_reg(pi,
16563                                              RADIO_2057_RXTXBIAS_CONFIG_CORE0,
16564                                              0x1);
16565                                 or_radio_reg(pi,
16566                                              RADIO_2057_RXTXBIAS_CONFIG_CORE1,
16567                                              0x1);
16568
16569                                 ipa2g_mainbias = 0x1f;
16570
16571                                 ipa2g_casconv = 0x6f;
16572
16573                                 ipa2g_biasfilt = 0xaa;
16574                         } else {
16575
16576                                 ipa2g_mainbias = 0x2b;
16577
16578                                 ipa2g_casconv = 0x7f;
16579
16580                                 ipa2g_biasfilt = 0xee;
16581                         }
16582
16583                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
16584                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16585                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16586                                                          coreNum, IPA2G_IMAIN,
16587                                                          ipa2g_mainbias);
16588                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16589                                                          coreNum, IPA2G_CASCONV,
16590                                                          ipa2g_casconv);
16591                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16592                                                          coreNum,
16593                                                          IPA2G_BIAS_FILTER,
16594                                                          ipa2g_biasfilt);
16595                                 }
16596                         }
16597                 }
16598
16599                 if (PHY_IPA(pi)) {
16600                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
16601                                 if ((pi->pubpi.radiorev == 3)
16602                                     || (pi->pubpi.radiorev == 4)
16603                                     || (pi->pubpi.radiorev == 6))
16604                                         txgm_idac_bleed = 0x7f;
16605
16606                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16607                                         if (txgm_idac_bleed != 0)
16608                                                 WRITE_RADIO_REG4(
16609                                                         pi, RADIO_2057,
16610                                                         CORE, coreNum,
16611                                                         TXGM_IDAC_BLEED,
16612                                                         txgm_idac_bleed);
16613                                 }
16614
16615                                 if (pi->pubpi.radiorev == 5) {
16616
16617                                         for (coreNum = 0; coreNum <= 1;
16618                                              coreNum++) {
16619                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16620                                                                  CORE, coreNum,
16621                                                                  IPA2G_CASCONV,
16622                                                                  0x13);
16623                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16624                                                                  CORE, coreNum,
16625                                                                  IPA2G_IMAIN,
16626                                                                  0x1f);
16627                                                 WRITE_RADIO_REG4(
16628                                                         pi, RADIO_2057,
16629                                                         CORE, coreNum,
16630                                                         IPA2G_BIAS_FILTER,
16631                                                         0xee);
16632                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16633                                                                  CORE, coreNum,
16634                                                                  PAD2G_IDACS,
16635                                                                  0x8a);
16636                                                 WRITE_RADIO_REG4(
16637                                                         pi, RADIO_2057,
16638                                                         CORE, coreNum,
16639                                                         PAD_BIAS_FILTER_BWS,
16640                                                         0x3e);
16641                                         }
16642
16643                                 } else if ((pi->pubpi.radiorev == 7)
16644                                            || (pi->pubpi.radiorev == 8)) {
16645
16646                                         if (CHSPEC_IS40(pi->radio_chanspec) ==
16647                                             0) {
16648                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16649                                                                  CORE, 0,
16650                                                                  IPA2G_IMAIN,
16651                                                                  0x14);
16652                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16653                                                                  CORE, 1,
16654                                                                  IPA2G_IMAIN,
16655                                                                  0x12);
16656                                         } else {
16657                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16658                                                                  CORE, 0,
16659                                                                  IPA2G_IMAIN,
16660                                                                  0x16);
16661                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16662                                                                  CORE, 1,
16663                                                                  IPA2G_IMAIN,
16664                                                                  0x16);
16665                                         }
16666                                 }
16667
16668                         } else {
16669                                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(
16670                                                         pi->radio_chanspec));
16671                                 if (((freq >= 5180) && (freq <= 5230))
16672                                     || ((freq >= 5745) && (freq <= 5805))) {
16673                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16674                                                          0, IPA5G_BIAS_FILTER,
16675                                                          0xff);
16676                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16677                                                          1, IPA5G_BIAS_FILTER,
16678                                                          0xff);
16679                                 }
16680                         }
16681                 } else {
16682
16683                         if (pi->pubpi.radiorev != 5) {
16684                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16685                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16686                                                          coreNum,
16687                                                          TXMIX2G_TUNE_BOOST_PU,
16688                                                          0x61);
16689                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16690                                                          coreNum,
16691                                                          TXGM_IDAC_BLEED, 0x70);
16692                                 }
16693                         }
16694                 }
16695
16696                 if (pi->pubpi.radiorev == 4) {
16697                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16698                                                  0x05, 16,
16699                                                  &afectrl_adc_ctrl1_rev7);
16700                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16701                                                  0x15, 16,
16702                                                  &afectrl_adc_ctrl1_rev7);
16703
16704                         for (coreNum = 0; coreNum <= 1; coreNum++) {
16705                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16706                                                  AFE_VCM_CAL_MASTER, 0x0);
16707                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16708                                                  AFE_SET_VCM_I, 0x3f);
16709                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16710                                                  AFE_SET_VCM_Q, 0x3f);
16711                         }
16712                 } else {
16713                         mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
16714                         mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
16715                         mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
16716                         mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
16717
16718                         mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
16719                         mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
16720                         mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
16721                         mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
16722
16723                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16724                                                  0x05, 16,
16725                                                  &afectrl_adc_ctrl2_rev7);
16726                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16727                                                  0x15, 16,
16728                                                  &afectrl_adc_ctrl2_rev7);
16729
16730                         mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
16731                         mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
16732                         mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
16733                         mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
16734                 }
16735
16736                 write_phy_reg(pi, 0x6a, 0x2);
16737
16738                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
16739                                          &min_nvar_offset_6mbps);
16740
16741                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
16742                                          &rfseq_pktgn_lpf_hpc_rev7);
16743
16744                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
16745                                          &rfseq_pktgn_lpf_h_hpc_rev7);
16746
16747                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
16748                                          &rfseq_htpktgn_lpf_hpc_rev7);
16749
16750                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
16751                                          &rfseq_cckpktgn_lpf_hpc_rev7);
16752
16753                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
16754                                          &rfseq_tx2rx_lpf_h_hpc_rev7);
16755
16756                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
16757                                          &rfseq_rx2tx_lpf_h_hpc_rev7);
16758
16759                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16760                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16761                                                  32, &min_nvar_val);
16762                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16763                                                  127, 32, &min_nvar_val);
16764                 } else {
16765                         min_nvar_val = noise_var_tbl_rev7[3];
16766                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16767                                                  32, &min_nvar_val);
16768
16769                         min_nvar_val = noise_var_tbl_rev7[127];
16770                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16771                                                  127, 32, &min_nvar_val);
16772                 }
16773
16774                 wlc_phy_workarounds_nphy_gainctrl(pi);
16775
16776                 pdetrange =
16777                         (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16778                         pdetrange : pi->srom_fem2g.pdetrange;
16779
16780                 if (pdetrange == 0) {
16781                         chan_freq_range =
16782                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16783                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16784                                 aux_adc_vmid_rev7_core0[3] = 0x70;
16785                                 aux_adc_vmid_rev7_core1[3] = 0x70;
16786                                 aux_adc_gain_rev7[3] = 2;
16787                         } else {
16788                                 aux_adc_vmid_rev7_core0[3] = 0x80;
16789                                 aux_adc_vmid_rev7_core1[3] = 0x80;
16790                                 aux_adc_gain_rev7[3] = 3;
16791                         }
16792                 } else if (pdetrange == 1) {
16793                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16794                                 aux_adc_vmid_rev7_core0[3] = 0x7c;
16795                                 aux_adc_vmid_rev7_core1[3] = 0x7c;
16796                                 aux_adc_gain_rev7[3] = 2;
16797                         } else {
16798                                 aux_adc_vmid_rev7_core0[3] = 0x8c;
16799                                 aux_adc_vmid_rev7_core1[3] = 0x8c;
16800                                 aux_adc_gain_rev7[3] = 1;
16801                         }
16802                 } else if (pdetrange == 2) {
16803                         if (pi->pubpi.radioid == BCM2057_ID) {
16804                                 if ((pi->pubpi.radiorev == 5)
16805                                     || (pi->pubpi.radiorev == 7)
16806                                     || (pi->pubpi.radiorev == 8)) {
16807                                         if (chan_freq_range ==
16808                                             WL_CHAN_FREQ_RANGE_2G) {
16809                                                 aux_adc_vmid_rev7_core0[3] =
16810                                                         0x8c;
16811                                                 aux_adc_vmid_rev7_core1[3] =
16812                                                         0x8c;
16813                                                 aux_adc_gain_rev7[3] = 0;
16814                                         } else {
16815                                                 aux_adc_vmid_rev7_core0[3] =
16816                                                         0x96;
16817                                                 aux_adc_vmid_rev7_core1[3] =
16818                                                         0x96;
16819                                                 aux_adc_gain_rev7[3] = 0;
16820                                         }
16821                                 }
16822                         }
16823
16824                 } else if (pdetrange == 3) {
16825                         if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
16826                                 aux_adc_vmid_rev7_core0[3] = 0x89;
16827                                 aux_adc_vmid_rev7_core1[3] = 0x89;
16828                                 aux_adc_gain_rev7[3] = 0;
16829                         }
16830
16831                 } else if (pdetrange == 5) {
16832
16833                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16834                                 aux_adc_vmid_rev7_core0[3] = 0x80;
16835                                 aux_adc_vmid_rev7_core1[3] = 0x80;
16836                                 aux_adc_gain_rev7[3] = 3;
16837                         } else {
16838                                 aux_adc_vmid_rev7_core0[3] = 0x70;
16839                                 aux_adc_vmid_rev7_core1[3] = 0x70;
16840                                 aux_adc_gain_rev7[3] = 2;
16841                         }
16842                 }
16843
16844                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
16845                                          &aux_adc_vmid_rev7_core0);
16846                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
16847                                          &aux_adc_vmid_rev7_core1);
16848                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
16849                                          &aux_adc_gain_rev7);
16850                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
16851                                          &aux_adc_gain_rev7);
16852
16853         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
16854
16855                 write_phy_reg(pi, 0x23f, 0x1f8);
16856                 write_phy_reg(pi, 0x240, 0x1f8);
16857
16858                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16859                                         1, 0, 32, &leg_data_weights);
16860                 leg_data_weights = leg_data_weights & 0xffffff;
16861                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16862                                          1, 0, 32, &leg_data_weights);
16863
16864                 alpha0 = 293;
16865                 alpha1 = 435;
16866                 alpha2 = 261;
16867                 beta0 = 366;
16868                 beta1 = 205;
16869                 beta2 = 32;
16870                 write_phy_reg(pi, 0x145, alpha0);
16871                 write_phy_reg(pi, 0x146, alpha1);
16872                 write_phy_reg(pi, 0x147, alpha2);
16873                 write_phy_reg(pi, 0x148, beta0);
16874                 write_phy_reg(pi, 0x149, beta1);
16875                 write_phy_reg(pi, 0x14a, beta2);
16876
16877                 write_phy_reg(pi, 0x38, 0xC);
16878                 write_phy_reg(pi, 0x2ae, 0xC);
16879
16880                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
16881                                        rfseq_tx2rx_events_rev3,
16882                                        rfseq_tx2rx_dlys_rev3,
16883                                        sizeof(rfseq_tx2rx_events_rev3) /
16884                                        sizeof(rfseq_tx2rx_events_rev3[0]));
16885
16886                 if (PHY_IPA(pi))
16887                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16888                                                rfseq_rx2tx_events_rev3_ipa,
16889                                                rfseq_rx2tx_dlys_rev3_ipa,
16890                                                sizeof
16891                                                (rfseq_rx2tx_events_rev3_ipa) /
16892                                                sizeof
16893                                                (rfseq_rx2tx_events_rev3_ipa
16894                                                 [0]));
16895
16896                 if ((pi->sh->hw_phyrxchain != 0x3) &&
16897                     (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
16898
16899                         if (PHY_IPA(pi)) {
16900                                 rfseq_rx2tx_dlys_rev3[5] = 59;
16901                                 rfseq_rx2tx_dlys_rev3[6] = 1;
16902                                 rfseq_rx2tx_events_rev3[7] =
16903                                         NPHY_REV3_RFSEQ_CMD_END;
16904                         }
16905
16906                         wlc_phy_set_rfseq_nphy(
16907                                 pi, NPHY_RFSEQ_RX2TX,
16908                                 rfseq_rx2tx_events_rev3,
16909                                 rfseq_rx2tx_dlys_rev3,
16910                                 sizeof(rfseq_rx2tx_events_rev3) /
16911                                 sizeof(rfseq_rx2tx_events_rev3[0]));
16912                 }
16913
16914                 if (CHSPEC_IS2G(pi->radio_chanspec))
16915                         write_phy_reg(pi, 0x6a, 0x2);
16916                 else
16917                         write_phy_reg(pi, 0x6a, 0x9c40);
16918
16919                 mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
16920
16921                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16922                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16923                                                  32, &min_nvar_val);
16924                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16925                                                  127, 32, &min_nvar_val);
16926                 } else {
16927                         min_nvar_val = noise_var_tbl_rev3[3];
16928                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16929                                                  32, &min_nvar_val);
16930
16931                         min_nvar_val = noise_var_tbl_rev3[127];
16932                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16933                                                  127, 32, &min_nvar_val);
16934                 }
16935
16936                 wlc_phy_workarounds_nphy_gainctrl(pi);
16937
16938                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16939                                          &dac_control);
16940                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16941                                          &dac_control);
16942
16943                 pdetrange =
16944                         (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16945                         pdetrange : pi->srom_fem2g.pdetrange;
16946
16947                 if (pdetrange == 0) {
16948                         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16949                                 aux_adc_vmid = aux_adc_vmid_rev4;
16950                                 aux_adc_gain = aux_adc_gain_rev4;
16951                         } else {
16952                                 aux_adc_vmid = aux_adc_vmid_rev3;
16953                                 aux_adc_gain = aux_adc_gain_rev3;
16954                         }
16955                         chan_freq_range =
16956                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16957                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16958                                 switch (chan_freq_range) {
16959                                 case WL_CHAN_FREQ_RANGE_5GL:
16960                                         aux_adc_vmid[3] = 0x89;
16961                                         aux_adc_gain[3] = 0;
16962                                         break;
16963                                 case WL_CHAN_FREQ_RANGE_5GM:
16964                                         aux_adc_vmid[3] = 0x89;
16965                                         aux_adc_gain[3] = 0;
16966                                         break;
16967                                 case WL_CHAN_FREQ_RANGE_5GH:
16968                                         aux_adc_vmid[3] = 0x89;
16969                                         aux_adc_gain[3] = 0;
16970                                         break;
16971                                 default:
16972                                         break;
16973                                 }
16974                         }
16975                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16976                                                  0x08, 16, aux_adc_vmid);
16977                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16978                                                  0x18, 16, aux_adc_vmid);
16979                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16980                                                  0x0c, 16, aux_adc_gain);
16981                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16982                                                  0x1c, 16, aux_adc_gain);
16983                 } else if (pdetrange == 1) {
16984                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16985                                                  0x08, 16, sk_adc_vmid);
16986                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16987                                                  0x18, 16, sk_adc_vmid);
16988                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16989                                                  0x0c, 16, sk_adc_gain);
16990                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16991                                                  0x1c, 16, sk_adc_gain);
16992                 } else if (pdetrange == 2) {
16993
16994                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16995                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16996
16997                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16998                                 chan_freq_range =
16999                                         wlc_phy_get_chan_freq_range_nphy(pi, 0);
17000                                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
17001                                         bcm_adc_vmid[3] = 0x8e;
17002                                         bcm_adc_gain[3] = 0x03;
17003                                 } else {
17004                                         bcm_adc_vmid[3] = 0x94;
17005                                         bcm_adc_gain[3] = 0x03;
17006                                 }
17007                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
17008                                 bcm_adc_vmid[3] = 0x84;
17009                                 bcm_adc_gain[3] = 0x02;
17010                         }
17011
17012                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17013                                                  0x08, 16, bcm_adc_vmid);
17014                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17015                                                  0x18, 16, bcm_adc_vmid);
17016                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17017                                                  0x0c, 16, bcm_adc_gain);
17018                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17019                                                  0x1c, 16, bcm_adc_gain);
17020                 } else if (pdetrange == 3) {
17021                         chan_freq_range =
17022                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
17023                         if ((NREV_GE(pi->pubpi.phy_rev, 4))
17024                             && (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
17025
17026                                 u16 auxadc_vmid[] = {
17027                                         0xa2, 0xb4, 0xb4, 0x270
17028                                 };
17029                                 u16 auxadc_gain[] = {
17030                                         0x02, 0x02, 0x02, 0x00
17031                                 };
17032
17033                                 wlc_phy_table_write_nphy(pi,
17034                                                          NPHY_TBL_ID_AFECTRL, 4,
17035                                                          0x08, 16, auxadc_vmid);
17036                                 wlc_phy_table_write_nphy(pi,
17037                                                          NPHY_TBL_ID_AFECTRL, 4,
17038                                                          0x18, 16, auxadc_vmid);
17039                                 wlc_phy_table_write_nphy(pi,
17040                                                          NPHY_TBL_ID_AFECTRL, 4,
17041                                                          0x0c, 16, auxadc_gain);
17042                                 wlc_phy_table_write_nphy(pi,
17043                                                          NPHY_TBL_ID_AFECTRL, 4,
17044                                                          0x1c, 16, auxadc_gain);
17045                         }
17046                 } else if ((pdetrange == 4) || (pdetrange == 5)) {
17047                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
17048                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
17049                         u16 Vmid[2], Av[2];
17050
17051                         chan_freq_range =
17052                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
17053                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
17054                                 Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
17055                                 Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
17056                                 Av[0] = (pdetrange == 4) ? 2 : 0;
17057                                 Av[1] = (pdetrange == 4) ? 2 : 0;
17058                         } else {
17059                                 Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
17060                                 Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
17061                                 Av[0] = (pdetrange == 4) ? 2 : 0;
17062                                 Av[1] = (pdetrange == 4) ? 2 : 0;
17063                         }
17064
17065                         bcm_adc_vmid[3] = Vmid[0];
17066                         bcm_adc_gain[3] = Av[0];
17067                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17068                                                  0x08, 16, bcm_adc_vmid);
17069                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17070                                                  0x0c, 16, bcm_adc_gain);
17071
17072                         bcm_adc_vmid[3] = Vmid[1];
17073                         bcm_adc_gain[3] = Av[1];
17074                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17075                                                  0x18, 16, bcm_adc_vmid);
17076                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17077                                                  0x1c, 16, bcm_adc_gain);
17078                 }
17079
17080                 write_radio_reg(pi,
17081                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0),
17082                                 0x0);
17083                 write_radio_reg(pi,
17084                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1),
17085                                 0x0);
17086
17087                 write_radio_reg(pi,
17088                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0),
17089                                 0x6);
17090                 write_radio_reg(pi,
17091                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1),
17092                                 0x6);
17093
17094                 write_radio_reg(pi,
17095                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0),
17096                                 0x7);
17097                 write_radio_reg(pi,
17098                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1),
17099                                 0x7);
17100
17101                 write_radio_reg(pi,
17102                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0),
17103                                 0x88);
17104                 write_radio_reg(pi,
17105                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1),
17106                                 0x88);
17107
17108                 write_radio_reg(pi,
17109                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0),
17110                                 0x0);
17111                 write_radio_reg(pi,
17112                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1),
17113                                 0x0);
17114
17115                 write_radio_reg(pi,
17116                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0),
17117                                 0x0);
17118                 write_radio_reg(pi,
17119                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1),
17120                                 0x0);
17121
17122                 triso =
17123                         (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
17124                         triso : pi->srom_fem2g.triso;
17125                 if (triso == 7) {
17126                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
17127                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
17128                 }
17129
17130                 wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
17131
17132                 if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
17133                      (CHSPEC_IS5G(pi->radio_chanspec))) ||
17134                     (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
17135                       (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
17136                      (CHSPEC_IS2G(pi->radio_chanspec)))) {
17137                         nss1_data_weights = 0x00088888;
17138                         ht_data_weights = 0x00088888;
17139                         stbc_data_weights = 0x00088888;
17140                 } else {
17141                         nss1_data_weights = 0x88888888;
17142                         ht_data_weights = 0x88888888;
17143                         stbc_data_weights = 0x88888888;
17144                 }
17145                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17146                                          1, 1, 32, &nss1_data_weights);
17147                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17148                                          1, 2, 32, &ht_data_weights);
17149                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17150                                          1, 3, 32, &stbc_data_weights);
17151
17152                 if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17153                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
17154                                 write_radio_reg(pi,
17155                                                 RADIO_2056_TX_GMBB_IDAC |
17156                                                 RADIO_2056_TX0, 0x70);
17157                                 write_radio_reg(pi,
17158                                                 RADIO_2056_TX_GMBB_IDAC |
17159                                                 RADIO_2056_TX1, 0x70);
17160                         }
17161                 }
17162
17163                 if (!pi->edcrs_threshold_lock) {
17164                         write_phy_reg(pi, 0x224, 0x3eb);
17165                         write_phy_reg(pi, 0x225, 0x3eb);
17166                         write_phy_reg(pi, 0x226, 0x341);
17167                         write_phy_reg(pi, 0x227, 0x341);
17168                         write_phy_reg(pi, 0x228, 0x42b);
17169                         write_phy_reg(pi, 0x229, 0x42b);
17170                         write_phy_reg(pi, 0x22a, 0x381);
17171                         write_phy_reg(pi, 0x22b, 0x381);
17172                         write_phy_reg(pi, 0x22c, 0x42b);
17173                         write_phy_reg(pi, 0x22d, 0x42b);
17174                         write_phy_reg(pi, 0x22e, 0x381);
17175                         write_phy_reg(pi, 0x22f, 0x381);
17176                 }
17177
17178                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
17179
17180                         if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)
17181                                 wlapi_bmac_mhf(pi->sh->physhim, MHF4,
17182                                               MHF4_BPHY_TXCORE0,
17183                                               MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);
17184                 }
17185         } else {
17186
17187                 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
17188                     (pi->sh->boardtype == 0x8b)) {
17189                         uint i;
17190                         u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
17191                         for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
17192                                 rfseq_rx2tx_dlys[i] = war_dlys[i];
17193                 }
17194
17195                 if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
17196                         and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
17197                         and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
17198                 } else {
17199                         or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
17200                         or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
17201                 }
17202
17203                 regval = 0x000a;
17204                 wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
17205                 wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
17206
17207                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17208                         regval = 0xcdaa;
17209                         wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
17210                         wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
17211                 }
17212
17213                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17214                         regval = 0x0000;
17215                         wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
17216                         wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
17217
17218                         regval = 0x7aab;
17219                         wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
17220                         wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
17221
17222                         regval = 0x0800;
17223                         wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
17224                         wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
17225                 }
17226
17227                 write_phy_reg(pi, 0xf8, 0x02d8);
17228                 write_phy_reg(pi, 0xf9, 0x0301);
17229                 write_phy_reg(pi, 0xfa, 0x02d8);
17230                 write_phy_reg(pi, 0xfb, 0x0301);
17231
17232                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
17233                                        rfseq_rx2tx_dlys,
17234                                        sizeof(rfseq_rx2tx_events) /
17235                                        sizeof(rfseq_rx2tx_events[0]));
17236
17237                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
17238                                        rfseq_tx2rx_dlys,
17239                                        sizeof(rfseq_tx2rx_events) /
17240                                        sizeof(rfseq_tx2rx_events[0]));
17241
17242                 wlc_phy_workarounds_nphy_gainctrl(pi);
17243
17244                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17245
17246                         if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
17247                                 wlapi_bmac_mhf(pi->sh->physhim, MHF3,
17248                                                MHF3_NPHY_MLADV_WAR,
17249                                                MHF3_NPHY_MLADV_WAR,
17250                                                BRCM_BAND_ALL);
17251
17252                 } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
17253                         write_phy_reg(pi, 0x1e3, 0x0);
17254                         write_phy_reg(pi, 0x1e4, 0x0);
17255                 }
17256
17257                 if (NREV_LT(pi->pubpi.phy_rev, 2))
17258                         mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
17259
17260                 alpha0 = 293;
17261                 alpha1 = 435;
17262                 alpha2 = 261;
17263                 beta0 = 366;
17264                 beta1 = 205;
17265                 beta2 = 32;
17266                 write_phy_reg(pi, 0x145, alpha0);
17267                 write_phy_reg(pi, 0x146, alpha1);
17268                 write_phy_reg(pi, 0x147, alpha2);
17269                 write_phy_reg(pi, 0x148, beta0);
17270                 write_phy_reg(pi, 0x149, beta1);
17271                 write_phy_reg(pi, 0x14a, beta2);
17272
17273                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17274                         mod_phy_reg(pi, 0x142, (0xf << 12), 0);
17275
17276                         write_phy_reg(pi, 0x192, 0xb5);
17277                         write_phy_reg(pi, 0x193, 0xa4);
17278                         write_phy_reg(pi, 0x194, 0x0);
17279                 }
17280
17281                 if (NREV_IS(pi->pubpi.phy_rev, 2))
17282                         mod_phy_reg(pi, 0x221,
17283                                     NPHY_FORCESIG_DECODEGATEDCLKS,
17284                                     NPHY_FORCESIG_DECODEGATEDCLKS);
17285         }
17286
17287         if (pi->phyhang_avoid)
17288                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17289 }
17290
17291 static void wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
17292 {
17293         int j, type = 2;
17294         u16 addr_offset = 0x2c5;
17295
17296         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
17297                 write_phy_reg(pi, addr_offset + j,
17298                               NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
17299 }
17300
17301 static void wlc_phy_clip_det_nphy(struct brcms_phy *pi, u8 write, u16 *vals)
17302 {
17303
17304         if (write == 0) {
17305                 vals[0] = read_phy_reg(pi, 0x2c);
17306                 vals[1] = read_phy_reg(pi, 0x42);
17307         } else {
17308                 write_phy_reg(pi, 0x2c, vals[0]);
17309                 write_phy_reg(pi, 0x42, vals[1]);
17310         }
17311 }
17312
17313 static void wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy *pi)
17314 {
17315         u8 core;
17316
17317         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17318                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17319                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17320                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17321                                                  TX_SSI_MASTER, 0x5);
17322                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17323                                                  TX_SSI_MUX, 0xe);
17324
17325                                 if (pi->pubpi.radiorev != 5)
17326                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17327                                                          core, TSSIA, 0);
17328
17329                                 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17330                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17331                                                          core, TSSIG, 0x1);
17332                                 else
17333                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17334                                                          core, TSSIG, 0x31);
17335                         } else {
17336                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17337                                                  TX_SSI_MASTER, 0x9);
17338                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17339                                                  TX_SSI_MUX, 0xc);
17340                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17341                                                  TSSIG, 0);
17342
17343                                 if (pi->pubpi.radiorev != 5) {
17344                                         if (!NREV_IS(pi->pubpi.phy_rev, 7))
17345                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17346                                                                  TX, core,
17347                                                                  TSSIA, 0x1);
17348                                         else
17349                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17350                                                                  TX, core,
17351                                                                  TSSIA, 0x31);
17352                                 }
17353                         }
17354                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
17355                                          0);
17356                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
17357                                          0);
17358                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
17359                                          0x3);
17360                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
17361                                          0x0);
17362                 }
17363         } else {
17364                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
17365                                 (CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
17366                                 0x80);
17367                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
17368                 WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
17369
17370                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17371                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
17372                                          0x0);
17373                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
17374                                          0x0);
17375                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
17376                                          0x3);
17377                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
17378                                          0x0);
17379                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
17380                                          0x8);
17381                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
17382                                          0x0);
17383                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
17384                                          0x0);
17385
17386                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17387                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17388                                                  TX_SSI_MASTER, 0x5);
17389
17390                                 if (pi->pubpi.radiorev != 5)
17391                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17392                                                          core, TSSIA, 0x0);
17393                                 if (NREV_GE(pi->pubpi.phy_rev, 5))
17394                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17395                                                          core, TSSIG, 0x31);
17396                                 else
17397                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17398                                                          core, TSSIG, 0x11);
17399                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17400                                                  TX_SSI_MUX, 0xe);
17401                         } else {
17402                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17403                                                  TX_SSI_MASTER, 0x9);
17404                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17405                                                  TSSIA, 0x31);
17406                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17407                                                  TSSIG, 0x0);
17408                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17409                                                  TX_SSI_MUX, 0xc);
17410                         }
17411                 }
17412         }
17413 }
17414
17415 static void
17416 wlc_phy_rfctrl_override_nphy(struct brcms_phy *pi, u16 field, u16 value,
17417                              u8 core_mask, u8 off)
17418 {
17419         u8 core_num;
17420         u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
17421                 0, val_mask = 0;
17422         u8 shift = 0, val_shift = 0;
17423
17424         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
17425
17426                 en_mask = field;
17427                 for (core_num = 0; core_num < 2; core_num++) {
17428
17429                         switch (field) {
17430                         case (0x1 << 1):
17431                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17432                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17433                                 val_mask = (0x1 << 0);
17434                                 val_shift = 0;
17435                                 break;
17436                         case (0x1 << 2):
17437                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17438                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17439                                 val_mask = (0x1 << 1);
17440                                 val_shift = 1;
17441                                 break;
17442                         case (0x1 << 3):
17443                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17444                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17445                                 val_mask = (0x1 << 2);
17446                                 val_shift = 2;
17447                                 break;
17448                         case (0x1 << 4):
17449                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17450                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17451                                 val_mask = (0x1 << 4);
17452                                 val_shift = 4;
17453                                 break;
17454                         case (0x1 << 5):
17455                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17456                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17457                                 val_mask = (0x1 << 5);
17458                                 val_shift = 5;
17459                                 break;
17460                         case (0x1 << 6):
17461                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17462                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17463                                 val_mask = (0x1 << 6);
17464                                 val_shift = 6;
17465                                 break;
17466                         case (0x1 << 7):
17467                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17468                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17469                                 val_mask = (0x1 << 7);
17470                                 val_shift = 7;
17471                                 break;
17472                         case (0x1 << 8):
17473                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17474                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17475                                 val_mask = (0x7 << 8);
17476                                 val_shift = 8;
17477                                 break;
17478                         case (0x1 << 11):
17479                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17480                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17481                                 val_mask = (0x7 << 13);
17482                                 val_shift = 13;
17483                                 break;
17484
17485                         case (0x1 << 9):
17486                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17487                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17488                                 val_mask = (0x7 << 0);
17489                                 val_shift = 0;
17490                                 break;
17491
17492                         case (0x1 << 10):
17493                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17494                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17495                                 val_mask = (0x7 << 4);
17496                                 val_shift = 4;
17497                                 break;
17498
17499                         case (0x1 << 12):
17500                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17501                                 val_addr = (core_num == 0) ? 0x7b : 0x7e;
17502                                 val_mask = (0xffff << 0);
17503                                 val_shift = 0;
17504                                 break;
17505                         case (0x1 << 13):
17506                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17507                                 val_addr = (core_num == 0) ? 0x7c : 0x7f;
17508                                 val_mask = (0xffff << 0);
17509                                 val_shift = 0;
17510                                 break;
17511                         case (0x1 << 14):
17512                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17513                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17514                                 val_mask = (0x3 << 6);
17515                                 val_shift = 6;
17516                                 break;
17517                         case (0x1 << 0):
17518                                 en_addr = (core_num == 0) ? 0xe5 : 0xe6;
17519                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17520                                 val_mask = (0x1 << 15);
17521                                 val_shift = 15;
17522                                 break;
17523                         default:
17524                                 addr = 0xffff;
17525                                 break;
17526                         }
17527
17528                         if (off) {
17529                                 and_phy_reg(pi, en_addr, ~en_mask);
17530                                 and_phy_reg(pi, val_addr, ~val_mask);
17531                         } else {
17532
17533                                 if ((core_mask == 0)
17534                                     || (core_mask & (1 << core_num))) {
17535                                         or_phy_reg(pi, en_addr, en_mask);
17536
17537                                         if (addr != 0xffff)
17538                                                 mod_phy_reg(pi, val_addr,
17539                                                             val_mask,
17540                                                             (value <<
17541                                                              val_shift));
17542                                 }
17543                         }
17544                 }
17545         } else {
17546
17547                 if (off) {
17548                         and_phy_reg(pi, 0xec, ~field);
17549                         value = 0x0;
17550                 } else {
17551                         or_phy_reg(pi, 0xec, field);
17552                 }
17553
17554                 for (core_num = 0; core_num < 2; core_num++) {
17555
17556                         switch (field) {
17557                         case (0x1 << 1):
17558                         case (0x1 << 9):
17559                         case (0x1 << 12):
17560                         case (0x1 << 13):
17561                         case (0x1 << 14):
17562                                 addr = 0x78;
17563
17564                                 core_mask = 0x1;
17565                                 break;
17566                         case (0x1 << 2):
17567                         case (0x1 << 3):
17568                         case (0x1 << 4):
17569                         case (0x1 << 5):
17570                         case (0x1 << 6):
17571                         case (0x1 << 7):
17572                         case (0x1 << 8):
17573                                 addr = (core_num == 0) ? 0x7a : 0x7d;
17574                                 break;
17575                         case (0x1 << 10):
17576                                 addr = (core_num == 0) ? 0x7b : 0x7e;
17577                                 break;
17578                         case (0x1 << 11):
17579                                 addr = (core_num == 0) ? 0x7c : 0x7f;
17580                                 break;
17581                         default:
17582                                 addr = 0xffff;
17583                         }
17584
17585                         switch (field) {
17586                         case (0x1 << 1):
17587                                 mask = (0x7 << 3);
17588                                 shift = 3;
17589                                 break;
17590                         case (0x1 << 9):
17591                                 mask = (0x1 << 2);
17592                                 shift = 2;
17593                                 break;
17594                         case (0x1 << 12):
17595                                 mask = (0x1 << 8);
17596                                 shift = 8;
17597                                 break;
17598                         case (0x1 << 13):
17599                                 mask = (0x1 << 9);
17600                                 shift = 9;
17601                                 break;
17602                         case (0x1 << 14):
17603                                 mask = (0xf << 12);
17604                                 shift = 12;
17605                                 break;
17606                         case (0x1 << 2):
17607                                 mask = (0x1 << 0);
17608                                 shift = 0;
17609                                 break;
17610                         case (0x1 << 3):
17611                                 mask = (0x1 << 1);
17612                                 shift = 1;
17613                                 break;
17614                         case (0x1 << 4):
17615                                 mask = (0x1 << 2);
17616                                 shift = 2;
17617                                 break;
17618                         case (0x1 << 5):
17619                                 mask = (0x3 << 4);
17620                                 shift = 4;
17621                                 break;
17622                         case (0x1 << 6):
17623                                 mask = (0x3 << 6);
17624                                 shift = 6;
17625                                 break;
17626                         case (0x1 << 7):
17627                                 mask = (0x1 << 8);
17628                                 shift = 8;
17629                                 break;
17630                         case (0x1 << 8):
17631                                 mask = (0x1 << 9);
17632                                 shift = 9;
17633                                 break;
17634                         case (0x1 << 10):
17635                                 mask = 0x1fff;
17636                                 shift = 0x0;
17637                                 break;
17638                         case (0x1 << 11):
17639                                 mask = 0x1fff;
17640                                 shift = 0x0;
17641                                 break;
17642                         default:
17643                                 mask = 0x0;
17644                                 shift = 0x0;
17645                                 break;
17646                         }
17647
17648                         if ((addr != 0xffff) && (core_mask & (1 << core_num)))
17649                                 mod_phy_reg(pi, addr, mask, (value << shift));
17650                 }
17651
17652                 or_phy_reg(pi, 0xec, (0x1 << 0));
17653                 or_phy_reg(pi, 0x78, (0x1 << 0));
17654                 udelay(1);
17655                 and_phy_reg(pi, 0xec, ~(0x1 << 0));
17656         }
17657 }
17658
17659 static void wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy *pi)
17660 {
17661         s32 rssi_buf[4];
17662         s32 int_val;
17663
17664         if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
17665
17666                 return;
17667
17668         if (PHY_IPA(pi))
17669                 wlc_phy_ipa_internal_tssi_setup_nphy(pi);
17670
17671         if (NREV_GE(pi->pubpi.phy_rev, 7))
17672                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17673                                                   0, 0x3, 0,
17674                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
17675         else if (NREV_GE(pi->pubpi.phy_rev, 3))
17676                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
17677
17678         wlc_phy_stopplayback_nphy(pi);
17679
17680         wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
17681
17682         udelay(20);
17683         int_val =
17684                 wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
17685                                        1);
17686         wlc_phy_stopplayback_nphy(pi);
17687         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
17688
17689         if (NREV_GE(pi->pubpi.phy_rev, 7))
17690                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17691                                                   0, 0x3, 1,
17692                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
17693         else if (NREV_GE(pi->pubpi.phy_rev, 3))
17694                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
17695
17696         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17697
17698                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17699                         (u8) ((int_val >> 24) & 0xff);
17700                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17701                         (u8) ((int_val >> 24) & 0xff);
17702
17703                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17704                         (u8) ((int_val >> 8) & 0xff);
17705                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17706                         (u8) ((int_val >> 8) & 0xff);
17707         } else {
17708                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17709                         (u8) ((int_val >> 24) & 0xff);
17710
17711                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17712                         (u8) ((int_val >> 8) & 0xff);
17713
17714                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17715                         (u8) ((int_val >> 16) & 0xff);
17716                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17717                         (u8) ((int_val) & 0xff);
17718         }
17719
17720 }
17721
17722 static void wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy *pi)
17723 {
17724         u8 idx, idx2, i, delta_ind;
17725
17726         for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++)
17727                 pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
17728
17729         for (i = 0; i < 4; i++) {
17730                 idx2 = 0;
17731
17732                 delta_ind = 0;
17733
17734                 switch (i) {
17735                 case 0:
17736
17737                         if (CHSPEC_IS40(pi->radio_chanspec)
17738                             && NPHY_IS_SROM_REINTERPRET) {
17739                                 idx = TXP_FIRST_MCS_40_SISO;
17740                         } else {
17741                                 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17742                                       TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
17743                                 delta_ind = 1;
17744                         }
17745                         break;
17746
17747                 case 1:
17748
17749                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17750                               TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
17751                         break;
17752
17753                 case 2:
17754
17755                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17756                               TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
17757                         break;
17758
17759                 case 3:
17760
17761                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17762                               TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
17763                         break;
17764                 }
17765
17766                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17767                         pi->tx_power_offset[idx];
17768                 idx = idx + delta_ind;
17769                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17770                         pi->tx_power_offset[idx];
17771                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17772                         pi->tx_power_offset[idx];
17773                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17774                         pi->tx_power_offset[idx++];
17775
17776                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17777                         pi->tx_power_offset[idx++];
17778                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17779                         pi->tx_power_offset[idx];
17780                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17781                         pi->tx_power_offset[idx];
17782                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17783                         pi->tx_power_offset[idx++];
17784
17785                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17786                         pi->tx_power_offset[idx++];
17787                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17788                         pi->tx_power_offset[idx];
17789                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17790                         pi->tx_power_offset[idx];
17791                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17792                         pi->tx_power_offset[idx++];
17793
17794                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17795                         pi->tx_power_offset[idx];
17796                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17797                         pi->tx_power_offset[idx++];
17798                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17799                         pi->tx_power_offset[idx];
17800                 idx = idx + 1 - delta_ind;
17801                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17802                         pi->tx_power_offset[idx];
17803
17804                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17805                         pi->tx_power_offset[idx];
17806                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17807                         pi->tx_power_offset[idx];
17808                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17809                         pi->tx_power_offset[idx];
17810                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17811                         pi->tx_power_offset[idx];
17812         }
17813 }
17814
17815 static void wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy *pi)
17816 {
17817         u32 idx;
17818         s16 a1[2], b0[2], b1[2];
17819         s8 target_pwr_qtrdbm[2];
17820         s32 num, den, pwr_est;
17821         u8 chan_freq_range;
17822         u8 idle_tssi[2];
17823         u32 tbl_id, tbl_len, tbl_offset;
17824         u32 regval[64];
17825         u8 core;
17826
17827         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17828                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17829                 (void)R_REG(&pi->regs->maccontrol);
17830                 udelay(1);
17831         }
17832
17833         if (pi->phyhang_avoid)
17834                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17835
17836         or_phy_reg(pi, 0x122, (0x1 << 0));
17837
17838         if (NREV_GE(pi->pubpi.phy_rev, 3))
17839                 and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
17840         else
17841                 or_phy_reg(pi, 0x1e7, (0x1 << 15));
17842
17843         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17844                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17845
17846         if (pi->sh->sromrev < 4) {
17847                 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17848                 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17849                 target_pwr_qtrdbm[0] = 13 * 4;
17850                 target_pwr_qtrdbm[1] = 13 * 4;
17851                 a1[0] = -424;
17852                 a1[1] = -424;
17853                 b0[0] = 5612;
17854                 b0[1] = 5612;
17855                 b1[1] = -1393;
17856                 b1[0] = -1393;
17857         } else {
17858
17859                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
17860                 switch (chan_freq_range) {
17861                 case WL_CHAN_FREQ_RANGE_2G:
17862                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17863                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17864                         target_pwr_qtrdbm[0] =
17865                                 pi->nphy_pwrctrl_info[0].max_pwr_2g;
17866                         target_pwr_qtrdbm[1] =
17867                                 pi->nphy_pwrctrl_info[1].max_pwr_2g;
17868                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
17869                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
17870                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
17871                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
17872                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
17873                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
17874                         break;
17875                 case WL_CHAN_FREQ_RANGE_5GL:
17876                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17877                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17878                         target_pwr_qtrdbm[0] =
17879                                 pi->nphy_pwrctrl_info[0].max_pwr_5gl;
17880                         target_pwr_qtrdbm[1] =
17881                                 pi->nphy_pwrctrl_info[1].max_pwr_5gl;
17882                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
17883                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
17884                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
17885                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
17886                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
17887                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
17888                         break;
17889                 case WL_CHAN_FREQ_RANGE_5GM:
17890                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17891                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17892                         target_pwr_qtrdbm[0] =
17893                                 pi->nphy_pwrctrl_info[0].max_pwr_5gm;
17894                         target_pwr_qtrdbm[1] =
17895                                 pi->nphy_pwrctrl_info[1].max_pwr_5gm;
17896                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
17897                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
17898                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
17899                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
17900                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
17901                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
17902                         break;
17903                 case WL_CHAN_FREQ_RANGE_5GH:
17904                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17905                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17906                         target_pwr_qtrdbm[0] =
17907                                 pi->nphy_pwrctrl_info[0].max_pwr_5gh;
17908                         target_pwr_qtrdbm[1] =
17909                                 pi->nphy_pwrctrl_info[1].max_pwr_5gh;
17910                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
17911                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
17912                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
17913                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
17914                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
17915                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
17916                         break;
17917                 default:
17918                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17919                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17920                         target_pwr_qtrdbm[0] = 13 * 4;
17921                         target_pwr_qtrdbm[1] = 13 * 4;
17922                         a1[0] = -424;
17923                         a1[1] = -424;
17924                         b0[0] = 5612;
17925                         b0[1] = 5612;
17926                         b1[1] = -1393;
17927                         b1[0] = -1393;
17928                         break;
17929                 }
17930         }
17931
17932         target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
17933         target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
17934
17935         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17936                 if (pi->srom_fem2g.tssipos)
17937                         or_phy_reg(pi, 0x1e9, (0x1 << 14));
17938
17939                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17940                         for (core = 0; core <= 1; core++) {
17941                                 if (PHY_IPA(pi)) {
17942                                         if (CHSPEC_IS2G(pi->radio_chanspec))
17943                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17944                                                                  TX, core,
17945                                                                  TX_SSI_MUX,
17946                                                                  0xe);
17947                                         else
17948                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17949                                                                  TX, core,
17950                                                                  TX_SSI_MUX,
17951                                                                  0xc);
17952                                 }
17953                         }
17954                 } else {
17955                         if (PHY_IPA(pi)) {
17956
17957                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17958                                                 RADIO_2056_TX0,
17959                                                 (CHSPEC_IS5G
17960                                                  (pi->radio_chanspec)) ?
17961                                                  0xc : 0xe);
17962                                 write_radio_reg(pi,
17963                                                 RADIO_2056_TX_TX_SSI_MUX |
17964                                                 RADIO_2056_TX1,
17965                                                 (CHSPEC_IS5G
17966                                                  (pi->radio_chanspec)) ?
17967                                                  0xc : 0xe);
17968                         } else {
17969
17970                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17971                                                 RADIO_2056_TX0, 0x11);
17972                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17973                                                 RADIO_2056_TX1, 0x11);
17974                         }
17975                 }
17976         }
17977
17978         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17979                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17980                 (void)R_REG(&pi->regs->maccontrol);
17981                 udelay(1);
17982         }
17983
17984         if (NREV_GE(pi->pubpi.phy_rev, 7))
17985                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17986                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17987         else
17988                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17989                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17990
17991         if (NREV_GE(pi->pubpi.phy_rev, 7))
17992                 mod_phy_reg(pi, 0x222, (0xff << 0),
17993                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17994         else if (NREV_GT(pi->pubpi.phy_rev, 1))
17995                 mod_phy_reg(pi, 0x222, (0xff << 0),
17996                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17997
17998         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17999                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
18000
18001         write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
18002
18003         write_phy_reg(pi, 0x1e9,
18004                       (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
18005
18006         write_phy_reg(pi, 0x1ea,
18007                       (target_pwr_qtrdbm[0] << 0) |
18008                       (target_pwr_qtrdbm[1] << 8));
18009
18010         tbl_len = 64;
18011         tbl_offset = 0;
18012         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18013              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18014
18015                 for (idx = 0; idx < tbl_len; idx++) {
18016                         num = 8 *
18017                               (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
18018                         den = 32768 + a1[tbl_id - 26] * idx;
18019                         pwr_est = max(((4 * num + den / 2) / den), -8);
18020                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
18021                                 if (idx <=
18022                                     (uint) (31 - idle_tssi[tbl_id - 26] + 1))
18023                                         pwr_est =
18024                                                 max(pwr_est,
18025                                                     target_pwr_qtrdbm
18026                                                     [tbl_id - 26] + 1);
18027                         }
18028                         regval[idx] = (u32) pwr_est;
18029                 }
18030                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18031                                          regval);
18032         }
18033
18034         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
18035         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
18036                                  pi->adj_pwr_tbl_nphy);
18037         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
18038                                  pi->adj_pwr_tbl_nphy);
18039
18040         if (pi->phyhang_avoid)
18041                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18042 }
18043
18044 static u32 *wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy *pi)
18045 {
18046         u32 *tx_pwrctrl_tbl = NULL;
18047
18048         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18049                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18050                         if ((pi->pubpi.radiorev == 4)
18051                             || (pi->pubpi.radiorev == 6))
18052                                 tx_pwrctrl_tbl =
18053                                         nphy_tpc_txgain_ipa_2g_2057rev4n6;
18054                         else if (pi->pubpi.radiorev == 3)
18055                                 tx_pwrctrl_tbl =
18056                                         nphy_tpc_txgain_ipa_2g_2057rev3;
18057                         else if (pi->pubpi.radiorev == 5)
18058                                 tx_pwrctrl_tbl =
18059                                         nphy_tpc_txgain_ipa_2g_2057rev5;
18060                         else if ((pi->pubpi.radiorev == 7)
18061                                  || (pi->pubpi.radiorev == 8))
18062                                 tx_pwrctrl_tbl =
18063                                         nphy_tpc_txgain_ipa_2g_2057rev7;
18064                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18065                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
18066                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18067                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
18068                 } else {
18069                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
18070                 }
18071         } else {
18072
18073                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18074                         if ((pi->pubpi.radiorev == 3) ||
18075                             (pi->pubpi.radiorev == 4) ||
18076                             (pi->pubpi.radiorev == 6))
18077                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
18078                         else if ((pi->pubpi.radiorev == 7)
18079                                  || (pi->pubpi.radiorev == 8))
18080                                 tx_pwrctrl_tbl =
18081                                         nphy_tpc_txgain_ipa_5g_2057rev7;
18082                 } else {
18083                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
18084                 }
18085         }
18086
18087         return tx_pwrctrl_tbl;
18088 }
18089
18090 static void wlc_phy_restore_rssical_nphy(struct brcms_phy *pi)
18091 {
18092         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18093                 if (pi->nphy_rssical_chanspec_2G == 0)
18094                         return;
18095
18096                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18097                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
18098                                       RADIO_2057_VCM_MASK,
18099                                       pi->rssical_cache.
18100                                       rssical_radio_regs_2G[0]);
18101                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
18102                                       RADIO_2057_VCM_MASK,
18103                                       pi->rssical_cache.
18104                                       rssical_radio_regs_2G[1]);
18105                 } else {
18106                         mod_radio_reg(pi,
18107                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
18108                                       RADIO_2056_VCM_MASK,
18109                                       pi->rssical_cache.
18110                                       rssical_radio_regs_2G[0]);
18111                         mod_radio_reg(pi,
18112                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
18113                                       RADIO_2056_VCM_MASK,
18114                                       pi->rssical_cache.
18115                                       rssical_radio_regs_2G[1]);
18116                 }
18117
18118                 write_phy_reg(pi, 0x1a6,
18119                               pi->rssical_cache.rssical_phyregs_2G[0]);
18120                 write_phy_reg(pi, 0x1ac,
18121                               pi->rssical_cache.rssical_phyregs_2G[1]);
18122                 write_phy_reg(pi, 0x1b2,
18123                               pi->rssical_cache.rssical_phyregs_2G[2]);
18124                 write_phy_reg(pi, 0x1b8,
18125                               pi->rssical_cache.rssical_phyregs_2G[3]);
18126                 write_phy_reg(pi, 0x1a4,
18127                               pi->rssical_cache.rssical_phyregs_2G[4]);
18128                 write_phy_reg(pi, 0x1aa,
18129                               pi->rssical_cache.rssical_phyregs_2G[5]);
18130                 write_phy_reg(pi, 0x1b0,
18131                               pi->rssical_cache.rssical_phyregs_2G[6]);
18132                 write_phy_reg(pi, 0x1b6,
18133                               pi->rssical_cache.rssical_phyregs_2G[7]);
18134                 write_phy_reg(pi, 0x1a5,
18135                               pi->rssical_cache.rssical_phyregs_2G[8]);
18136                 write_phy_reg(pi, 0x1ab,
18137                               pi->rssical_cache.rssical_phyregs_2G[9]);
18138                 write_phy_reg(pi, 0x1b1,
18139                               pi->rssical_cache.rssical_phyregs_2G[10]);
18140                 write_phy_reg(pi, 0x1b7,
18141                               pi->rssical_cache.rssical_phyregs_2G[11]);
18142
18143         } else {
18144                 if (pi->nphy_rssical_chanspec_5G == 0)
18145                         return;
18146
18147                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18148                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
18149                                       RADIO_2057_VCM_MASK,
18150                                       pi->rssical_cache.
18151                                       rssical_radio_regs_5G[0]);
18152                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
18153                                       RADIO_2057_VCM_MASK,
18154                                       pi->rssical_cache.
18155                                       rssical_radio_regs_5G[1]);
18156                 } else {
18157                         mod_radio_reg(pi,
18158                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
18159                                       RADIO_2056_VCM_MASK,
18160                                       pi->rssical_cache.
18161                                       rssical_radio_regs_5G[0]);
18162                         mod_radio_reg(pi,
18163                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
18164                                       RADIO_2056_VCM_MASK,
18165                                       pi->rssical_cache.
18166                                       rssical_radio_regs_5G[1]);
18167                 }
18168
18169                 write_phy_reg(pi, 0x1a6,
18170                               pi->rssical_cache.rssical_phyregs_5G[0]);
18171                 write_phy_reg(pi, 0x1ac,
18172                               pi->rssical_cache.rssical_phyregs_5G[1]);
18173                 write_phy_reg(pi, 0x1b2,
18174                               pi->rssical_cache.rssical_phyregs_5G[2]);
18175                 write_phy_reg(pi, 0x1b8,
18176                               pi->rssical_cache.rssical_phyregs_5G[3]);
18177                 write_phy_reg(pi, 0x1a4,
18178                               pi->rssical_cache.rssical_phyregs_5G[4]);
18179                 write_phy_reg(pi, 0x1aa,
18180                               pi->rssical_cache.rssical_phyregs_5G[5]);
18181                 write_phy_reg(pi, 0x1b0,
18182                               pi->rssical_cache.rssical_phyregs_5G[6]);
18183                 write_phy_reg(pi, 0x1b6,
18184                               pi->rssical_cache.rssical_phyregs_5G[7]);
18185                 write_phy_reg(pi, 0x1a5,
18186                               pi->rssical_cache.rssical_phyregs_5G[8]);
18187                 write_phy_reg(pi, 0x1ab,
18188                               pi->rssical_cache.rssical_phyregs_5G[9]);
18189                 write_phy_reg(pi, 0x1b1,
18190                               pi->rssical_cache.rssical_phyregs_5G[10]);
18191                 write_phy_reg(pi, 0x1b7,
18192                               pi->rssical_cache.rssical_phyregs_5G[11]);
18193         }
18194 }
18195
18196 static void wlc_phy_internal_cal_txgain_nphy(struct brcms_phy *pi)
18197 {
18198         u16 txcal_gain[2];
18199
18200         pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
18201         pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
18202         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18203         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18204
18205         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18206                                 txcal_gain);
18207
18208         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18209                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
18210                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
18211         } else {
18212                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
18213                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
18214         }
18215
18216         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18217                                  txcal_gain);
18218 }
18219
18220 static void wlc_phy_precal_txgain_nphy(struct brcms_phy *pi)
18221 {
18222         bool save_bbmult = false;
18223         u8 txcal_index_2057_rev5n7 = 0;
18224         u8 txcal_index_2057_rev3n4n6 = 10;
18225
18226         if (pi->use_int_tx_iqlo_cal_nphy) {
18227                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18228                         if ((pi->pubpi.radiorev == 3) ||
18229                             (pi->pubpi.radiorev == 4) ||
18230                             (pi->pubpi.radiorev == 6)) {
18231
18232                                 pi->nphy_txcal_pwr_idx[0] =
18233                                         txcal_index_2057_rev3n4n6;
18234                                 pi->nphy_txcal_pwr_idx[1] =
18235                                         txcal_index_2057_rev3n4n6;
18236                                 wlc_phy_txpwr_index_nphy(
18237                                         pi, 3,
18238                                         txcal_index_2057_rev3n4n6,
18239                                         false);
18240                         } else {
18241
18242                                 pi->nphy_txcal_pwr_idx[0] =
18243                                         txcal_index_2057_rev5n7;
18244                                 pi->nphy_txcal_pwr_idx[1] =
18245                                         txcal_index_2057_rev5n7;
18246                                 wlc_phy_txpwr_index_nphy(
18247                                         pi, 3,
18248                                         txcal_index_2057_rev5n7,
18249                                         false);
18250                         }
18251                         save_bbmult = true;
18252
18253                 } else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
18254                         wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
18255                         if (pi->sh->hw_phytxchain != 3) {
18256                                 pi->nphy_txcal_pwr_idx[1] =
18257                                         pi->nphy_txcal_pwr_idx[0];
18258                                 wlc_phy_txpwr_index_nphy(pi, 3,
18259                                                          pi->
18260                                                          nphy_txcal_pwr_idx[0],
18261                                                          true);
18262                                 save_bbmult = true;
18263                         }
18264
18265                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18266                         if (PHY_IPA(pi)) {
18267                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18268                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
18269                                                                     false);
18270                                 } else {
18271                                         pi->nphy_txcal_pwr_idx[0] = 80;
18272                                         pi->nphy_txcal_pwr_idx[1] = 80;
18273                                         wlc_phy_txpwr_index_nphy(pi, 3, 80,
18274                                                                  false);
18275                                         save_bbmult = true;
18276                                 }
18277                         } else {
18278                                 wlc_phy_internal_cal_txgain_nphy(pi);
18279                                 save_bbmult = true;
18280                         }
18281
18282                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18283                         if (PHY_IPA(pi)) {
18284                                 if (CHSPEC_IS2G(pi->radio_chanspec))
18285                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
18286                                                                     false);
18287                                 else
18288                                         wlc_phy_cal_txgainctrl_nphy(pi, 14,
18289                                                                     false);
18290                         } else {
18291                                 wlc_phy_internal_cal_txgain_nphy(pi);
18292                                 save_bbmult = true;
18293                         }
18294                 }
18295
18296         } else {
18297                 wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
18298         }
18299
18300         if (save_bbmult)
18301                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
18302                                         &pi->nphy_txcal_bbmult);
18303 }
18304
18305 static void
18306 wlc_phy_rfctrlintc_override_nphy(struct brcms_phy *pi, u8 field, u16 value,
18307                                  u8 core_code)
18308 {
18309         u16 mask;
18310         u16 val;
18311         u8 core;
18312
18313         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18314                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18315                         if (core_code == RADIO_MIMO_CORESEL_CORE1
18316                             && core == PHY_CORE_1)
18317                                 continue;
18318                         else if (core_code == RADIO_MIMO_CORESEL_CORE2
18319                                  && core == PHY_CORE_0)
18320                                 continue;
18321
18322                         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
18323
18324                                 mask = (0x1 << 10);
18325                                 val = 1 << 10;
18326                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18327                                             0x92, mask, val);
18328                         }
18329
18330                         if (field == NPHY_RfctrlIntc_override_OFF) {
18331
18332                                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18333                                               0x92, 0);
18334
18335                                 wlc_phy_force_rfseq_nphy(pi,
18336                                                          NPHY_RFSEQ_RESET2RX);
18337                         } else if (field == NPHY_RfctrlIntc_override_TRSW) {
18338
18339                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18340
18341                                         mask = (0x1 << 6) | (0x1 << 7);
18342
18343                                         val = value << 6;
18344                                         mod_phy_reg(pi,
18345                                                     (core ==
18346                                                      PHY_CORE_0) ? 0x91 : 0x92,
18347                                                     mask, val);
18348
18349                                         or_phy_reg(pi,
18350                                                    (core ==
18351                                                     PHY_CORE_0) ? 0x91 : 0x92,
18352                                                    (0x1 << 10));
18353
18354                                         and_phy_reg(pi, 0x2ff, (u16)
18355                                                     ~(0x3 << 14));
18356                                         or_phy_reg(pi, 0x2ff, (0x1 << 13));
18357                                         or_phy_reg(pi, 0x2ff, (0x1 << 0));
18358                                 } else {
18359
18360                                         mask = (0x1 << 6) |
18361                                                (0x1 << 7) |
18362                                                (0x1 << 8) | (0x1 << 9);
18363                                         val = value << 6;
18364                                         mod_phy_reg(pi,
18365                                                     (core ==
18366                                                      PHY_CORE_0) ? 0x91 : 0x92,
18367                                                     mask, val);
18368
18369                                         mask = (0x1 << 0);
18370                                         val = 1 << 0;
18371                                         mod_phy_reg(pi,
18372                                                     (core ==
18373                                                      PHY_CORE_0) ? 0xe7 : 0xec,
18374                                                     mask, val);
18375
18376                                         mask = (core == PHY_CORE_0) ?
18377                                                (0x1 << 0) : (0x1 << 1);
18378                                         val = 1 << ((core == PHY_CORE_0) ?
18379                                                     0 : 1);
18380                                         mod_phy_reg(pi, 0x78, mask, val);
18381
18382                                         SPINWAIT(((read_phy_reg(pi, 0x78) & val)
18383                                                   != 0), 10000);
18384                                         if (WARN(read_phy_reg(pi, 0x78) & val,
18385                                                  "HW error: override failed"))
18386                                                 return;
18387
18388                                         mask = (0x1 << 0);
18389                                         val = 0 << 0;
18390                                         mod_phy_reg(pi,
18391                                                     (core ==
18392                                                      PHY_CORE_0) ? 0xe7 : 0xec,
18393                                                     mask, val);
18394                                 }
18395                         } else if (field == NPHY_RfctrlIntc_override_PA) {
18396                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18397
18398                                         mask = (0x1 << 4) | (0x1 << 5);
18399
18400                                         if (CHSPEC_IS5G(pi->radio_chanspec))
18401                                                 val = value << 5;
18402                                         else
18403                                                 val = value << 4;
18404
18405                                         mod_phy_reg(pi,
18406                                                     (core ==
18407                                                      PHY_CORE_0) ? 0x91 : 0x92,
18408                                                     mask, val);
18409
18410                                         or_phy_reg(pi,
18411                                                    (core ==
18412                                                     PHY_CORE_0) ? 0x91 : 0x92,
18413                                                    (0x1 << 12));
18414                                 } else {
18415
18416                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18417                                                 mask = (0x1 << 5);
18418                                                 val = value << 5;
18419                                         } else {
18420                                                 mask = (0x1 << 4);
18421                                                 val = value << 4;
18422                                         }
18423                                         mod_phy_reg(pi,
18424                                                     (core ==
18425                                                      PHY_CORE_0) ? 0x91 : 0x92,
18426                                                     mask, val);
18427                                 }
18428                         } else if (field ==
18429                                    NPHY_RfctrlIntc_override_EXT_LNA_PU) {
18430                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18431                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18432
18433                                                 mask = (0x1 << 0);
18434                                                 val = value << 0;
18435                                                 mod_phy_reg(pi,
18436                                                             (core ==
18437                                                              PHY_CORE_0) ? 0x91
18438                                                             : 0x92, mask, val);
18439
18440                                                 mask = (0x1 << 2);
18441                                                 mod_phy_reg(pi,
18442                                                             (core ==
18443                                                              PHY_CORE_0) ? 0x91
18444                                                             : 0x92, mask, 0);
18445                                         } else {
18446
18447                                                 mask = (0x1 << 2);
18448                                                 val = value << 2;
18449                                                 mod_phy_reg(pi,
18450                                                             (core ==
18451                                                              PHY_CORE_0) ? 0x91
18452                                                             : 0x92, mask, val);
18453
18454                                                 mask = (0x1 << 0);
18455                                                 mod_phy_reg(pi,
18456                                                             (core ==
18457                                                              PHY_CORE_0) ? 0x91
18458                                                             : 0x92, mask, 0);
18459                                         }
18460
18461                                         mask = (0x1 << 11);
18462                                         val = 1 << 11;
18463                                         mod_phy_reg(pi,
18464                                                     (core ==
18465                                                      PHY_CORE_0) ? 0x91 : 0x92,
18466                                                     mask, val);
18467                                 } else {
18468
18469                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18470                                                 mask = (0x1 << 0);
18471                                                 val = value << 0;
18472                                         } else {
18473                                                 mask = (0x1 << 2);
18474                                                 val = value << 2;
18475                                         }
18476                                         mod_phy_reg(pi,
18477                                                     (core ==
18478                                                      PHY_CORE_0) ? 0x91 : 0x92,
18479                                                     mask, val);
18480                                 }
18481                         } else if (field ==
18482                                    NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
18483                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18484                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18485
18486                                                 mask = (0x1 << 1);
18487                                                 val = value << 1;
18488                                                 mod_phy_reg(pi,
18489                                                             (core ==
18490                                                              PHY_CORE_0) ? 0x91
18491                                                             : 0x92, mask, val);
18492
18493                                                 mask = (0x1 << 3);
18494                                                 mod_phy_reg(pi,
18495                                                             (core ==
18496                                                              PHY_CORE_0) ? 0x91
18497                                                             : 0x92, mask, 0);
18498                                         } else {
18499
18500                                                 mask = (0x1 << 3);
18501                                                 val = value << 3;
18502                                                 mod_phy_reg(pi,
18503                                                             (core ==
18504                                                              PHY_CORE_0) ? 0x91
18505                                                             : 0x92, mask, val);
18506
18507                                                 mask = (0x1 << 1);
18508                                                 mod_phy_reg(pi,
18509                                                             (core ==
18510                                                              PHY_CORE_0) ? 0x91
18511                                                             : 0x92, mask, 0);
18512                                         }
18513
18514                                         mask = (0x1 << 11);
18515                                         val = 1 << 11;
18516                                         mod_phy_reg(pi,
18517                                                     (core ==
18518                                                      PHY_CORE_0) ? 0x91 : 0x92,
18519                                                     mask, val);
18520                                 } else {
18521
18522                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18523                                                 mask = (0x1 << 1);
18524                                                 val = value << 1;
18525                                         } else {
18526                                                 mask = (0x1 << 3);
18527                                                 val = value << 3;
18528                                         }
18529                                         mod_phy_reg(pi,
18530                                                     (core ==
18531                                                      PHY_CORE_0) ? 0x91 : 0x92,
18532                                                     mask, val);
18533                                 }
18534                         }
18535                 }
18536         }
18537 }
18538
18539 void
18540 wlc_phy_cal_txgainctrl_nphy(struct brcms_phy *pi, s32 dBm_targetpower,
18541                             bool debug)
18542 {
18543         int gainctrl_loopidx;
18544         uint core;
18545         u16 m0m1, curr_m0m1;
18546         s32 delta_power;
18547         s32 txpwrindex;
18548         s32 qdBm_power[2];
18549         u16 orig_BBConfig;
18550         u16 phy_saveregs[4];
18551         u32 freq_test;
18552         u16 ampl_test = 250;
18553         uint stepsize;
18554         bool phyhang_avoid_state = false;
18555
18556         if (NREV_GE(pi->pubpi.phy_rev, 7))
18557                 stepsize = 2;
18558         else
18559                 stepsize = 1;
18560
18561         if (CHSPEC_IS40(pi->radio_chanspec))
18562                 freq_test = 5000;
18563         else
18564                 freq_test = 2500;
18565
18566         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18567         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18568
18569         if (pi->phyhang_avoid)
18570                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18571
18572         phyhang_avoid_state = pi->phyhang_avoid;
18573         pi->phyhang_avoid = false;
18574
18575         phy_saveregs[0] = read_phy_reg(pi, 0x91);
18576         phy_saveregs[1] = read_phy_reg(pi, 0x92);
18577         phy_saveregs[2] = read_phy_reg(pi, 0xe7);
18578         phy_saveregs[3] = read_phy_reg(pi, 0xec);
18579         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
18580                                          RADIO_MIMO_CORESEL_CORE1 |
18581                                          RADIO_MIMO_CORESEL_CORE2);
18582
18583         if (!debug) {
18584                 wlc_phy_rfctrlintc_override_nphy(pi,
18585                                                  NPHY_RfctrlIntc_override_TRSW,
18586                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
18587                 wlc_phy_rfctrlintc_override_nphy(pi,
18588                                                  NPHY_RfctrlIntc_override_TRSW,
18589                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
18590         } else {
18591                 wlc_phy_rfctrlintc_override_nphy(pi,
18592                                                  NPHY_RfctrlIntc_override_TRSW,
18593                                                  0x1, RADIO_MIMO_CORESEL_CORE1);
18594                 wlc_phy_rfctrlintc_override_nphy(pi,
18595                                                  NPHY_RfctrlIntc_override_TRSW,
18596                                                  0x7, RADIO_MIMO_CORESEL_CORE2);
18597         }
18598
18599         orig_BBConfig = read_phy_reg(pi, 0x01);
18600         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
18601
18602         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
18603
18604         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18605                 txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
18606
18607                 for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
18608                      gainctrl_loopidx++) {
18609                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18610                                              false);
18611
18612                         if (core == PHY_CORE_0)
18613                                 curr_m0m1 = m0m1 & 0xff00;
18614                         else
18615                                 curr_m0m1 = m0m1 & 0x00ff;
18616
18617                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
18618                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
18619
18620                         udelay(50);
18621
18622                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18623                                                  NPHY_CAL_TSSISAMPS);
18624
18625                         pi->nphy_bb_mult_save = 0;
18626                         wlc_phy_stopplayback_nphy(pi);
18627
18628                         delta_power = (dBm_targetpower * 4) - qdBm_power[core];
18629
18630                         txpwrindex -= stepsize * delta_power;
18631                         if (txpwrindex < 0)
18632                                 txpwrindex = 0;
18633                         else if (txpwrindex > 127)
18634                                 txpwrindex = 127;
18635
18636                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18637                                 if (NREV_IS(pi->pubpi.phy_rev, 4) &&
18638                                     (pi->srom_fem5g.extpagain == 3)) {
18639                                         if (txpwrindex < 30)
18640                                                 txpwrindex = 30;
18641                                 }
18642                         } else {
18643                                 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
18644                                     (pi->srom_fem2g.extpagain == 3)) {
18645                                         if (txpwrindex < 50)
18646                                                 txpwrindex = 50;
18647                                 }
18648                         }
18649
18650                         wlc_phy_txpwr_index_nphy(pi, (1 << core),
18651                                                  (u8) txpwrindex, true);
18652                 }
18653
18654                 pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
18655
18656                 if (debug) {
18657                         u16 radio_gain;
18658                         u16 dbg_m0m1;
18659
18660                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18661
18662                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18663                                              false);
18664
18665                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18666                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
18667
18668                         udelay(100);
18669
18670                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18671                                                  NPHY_CAL_TSSISAMPS);
18672
18673                         wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
18674                                                 &radio_gain);
18675
18676                         mdelay(4000);
18677                         pi->nphy_bb_mult_save = 0;
18678                         wlc_phy_stopplayback_nphy(pi);
18679                 }
18680         }
18681
18682         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
18683         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
18684
18685         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
18686
18687         write_phy_reg(pi, 0x01, orig_BBConfig);
18688
18689         write_phy_reg(pi, 0x91, phy_saveregs[0]);
18690         write_phy_reg(pi, 0x92, phy_saveregs[1]);
18691         write_phy_reg(pi, 0xe7, phy_saveregs[2]);
18692         write_phy_reg(pi, 0xec, phy_saveregs[3]);
18693
18694         pi->phyhang_avoid = phyhang_avoid_state;
18695
18696         if (pi->phyhang_avoid)
18697                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18698 }
18699
18700 static void wlc_phy_savecal_nphy(struct brcms_phy *pi)
18701 {
18702         void *tbl_ptr;
18703         int coreNum;
18704         u16 *txcal_radio_regs = NULL;
18705
18706         if (pi->phyhang_avoid)
18707                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18708
18709         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18710
18711                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18712                                           &pi->calibration_cache.
18713                                           rxcal_coeffs_2G);
18714
18715                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18716                         txcal_radio_regs =
18717                                 pi->calibration_cache.txcal_radio_regs_2G;
18718                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18719
18720                         pi->calibration_cache.txcal_radio_regs_2G[0] =
18721                                 read_radio_reg(pi,
18722                                                RADIO_2056_TX_LOFT_FINE_I |
18723                                                RADIO_2056_TX0);
18724                         pi->calibration_cache.txcal_radio_regs_2G[1] =
18725                                 read_radio_reg(pi,
18726                                                RADIO_2056_TX_LOFT_FINE_Q |
18727                                                RADIO_2056_TX0);
18728                         pi->calibration_cache.txcal_radio_regs_2G[2] =
18729                                 read_radio_reg(pi,
18730                                                RADIO_2056_TX_LOFT_FINE_I |
18731                                                RADIO_2056_TX1);
18732                         pi->calibration_cache.txcal_radio_regs_2G[3] =
18733                                 read_radio_reg(pi,
18734                                                RADIO_2056_TX_LOFT_FINE_Q |
18735                                                RADIO_2056_TX1);
18736
18737                         pi->calibration_cache.txcal_radio_regs_2G[4] =
18738                                 read_radio_reg(pi,
18739                                                RADIO_2056_TX_LOFT_COARSE_I |
18740                                                RADIO_2056_TX0);
18741                         pi->calibration_cache.txcal_radio_regs_2G[5] =
18742                                 read_radio_reg(pi,
18743                                                RADIO_2056_TX_LOFT_COARSE_Q |
18744                                                RADIO_2056_TX0);
18745                         pi->calibration_cache.txcal_radio_regs_2G[6] =
18746                                 read_radio_reg(pi,
18747                                                RADIO_2056_TX_LOFT_COARSE_I |
18748                                                RADIO_2056_TX1);
18749                         pi->calibration_cache.txcal_radio_regs_2G[7] =
18750                                 read_radio_reg(pi,
18751                                                RADIO_2056_TX_LOFT_COARSE_Q |
18752                                                RADIO_2056_TX1);
18753                 } else {
18754                         pi->calibration_cache.txcal_radio_regs_2G[0] =
18755                                read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18756                         pi->calibration_cache.txcal_radio_regs_2G[1] =
18757                                read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18758                         pi->calibration_cache.txcal_radio_regs_2G[2] =
18759                                read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18760                         pi->calibration_cache.txcal_radio_regs_2G[3] =
18761                                read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18762                 }
18763
18764                 pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
18765                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18766         } else {
18767
18768                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18769                                           &pi->calibration_cache.
18770                                           rxcal_coeffs_5G);
18771
18772                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18773                         txcal_radio_regs =
18774                                 pi->calibration_cache.txcal_radio_regs_5G;
18775                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18776
18777                         pi->calibration_cache.txcal_radio_regs_5G[0] =
18778                                 read_radio_reg(pi,
18779                                                RADIO_2056_TX_LOFT_FINE_I |
18780                                                RADIO_2056_TX0);
18781                         pi->calibration_cache.txcal_radio_regs_5G[1] =
18782                                 read_radio_reg(pi,
18783                                                RADIO_2056_TX_LOFT_FINE_Q |
18784                                                RADIO_2056_TX0);
18785                         pi->calibration_cache.txcal_radio_regs_5G[2] =
18786                                 read_radio_reg(pi,
18787                                                RADIO_2056_TX_LOFT_FINE_I |
18788                                                RADIO_2056_TX1);
18789                         pi->calibration_cache.txcal_radio_regs_5G[3] =
18790                                 read_radio_reg(pi,
18791                                                RADIO_2056_TX_LOFT_FINE_Q |
18792                                                RADIO_2056_TX1);
18793
18794                         pi->calibration_cache.txcal_radio_regs_5G[4] =
18795                                 read_radio_reg(pi,
18796                                                RADIO_2056_TX_LOFT_COARSE_I |
18797                                                RADIO_2056_TX0);
18798                         pi->calibration_cache.txcal_radio_regs_5G[5] =
18799                                 read_radio_reg(pi,
18800                                                RADIO_2056_TX_LOFT_COARSE_Q |
18801                                                RADIO_2056_TX0);
18802                         pi->calibration_cache.txcal_radio_regs_5G[6] =
18803                                 read_radio_reg(pi,
18804                                                RADIO_2056_TX_LOFT_COARSE_I |
18805                                                RADIO_2056_TX1);
18806                         pi->calibration_cache.txcal_radio_regs_5G[7] =
18807                                 read_radio_reg(pi,
18808                                                RADIO_2056_TX_LOFT_COARSE_Q |
18809                                                RADIO_2056_TX1);
18810                 } else {
18811                         pi->calibration_cache.txcal_radio_regs_5G[0] =
18812                                read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18813                         pi->calibration_cache.txcal_radio_regs_5G[1] =
18814                                read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18815                         pi->calibration_cache.txcal_radio_regs_5G[2] =
18816                                read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18817                         pi->calibration_cache.txcal_radio_regs_5G[3] =
18818                                read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18819                 }
18820
18821                 pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
18822                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18823         }
18824         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18825                 for (coreNum = 0; coreNum <= 1; coreNum++) {
18826
18827                         txcal_radio_regs[2 * coreNum] =
18828                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18829                                                 LOFT_FINE_I);
18830                         txcal_radio_regs[2 * coreNum + 1] =
18831                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18832                                                 LOFT_FINE_Q);
18833
18834                         txcal_radio_regs[2 * coreNum + 4] =
18835                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18836                                                 LOFT_COARSE_I);
18837                         txcal_radio_regs[2 * coreNum + 5] =
18838                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18839                                                 LOFT_COARSE_Q);
18840                 }
18841         }
18842
18843         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
18844
18845         if (pi->phyhang_avoid)
18846                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18847 }
18848
18849 static void wlc_phy_tx_iq_war_nphy(struct brcms_phy *pi)
18850 {
18851         struct nphy_iq_comp tx_comp;
18852
18853         wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, &tx_comp);
18854
18855         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
18856         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
18857         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
18858         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
18859 }
18860
18861 static void wlc_phy_restorecal_nphy(struct brcms_phy *pi)
18862 {
18863         u16 *loft_comp;
18864         u16 txcal_coeffs_bphy[4];
18865         u16 *tbl_ptr;
18866         int coreNum;
18867         u16 *txcal_radio_regs = NULL;
18868
18869         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18870                 if (pi->nphy_iqcal_chanspec_2G == 0)
18871                         return;
18872
18873                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18874                 loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
18875         } else {
18876                 if (pi->nphy_iqcal_chanspec_5G == 0)
18877                         return;
18878
18879                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18880                 loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
18881         }
18882
18883         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16, tbl_ptr);
18884
18885         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18886                 txcal_coeffs_bphy[0] = tbl_ptr[0];
18887                 txcal_coeffs_bphy[1] = tbl_ptr[1];
18888                 txcal_coeffs_bphy[2] = tbl_ptr[2];
18889                 txcal_coeffs_bphy[3] = tbl_ptr[3];
18890         } else {
18891                 txcal_coeffs_bphy[0] = 0;
18892                 txcal_coeffs_bphy[1] = 0;
18893                 txcal_coeffs_bphy[2] = 0;
18894                 txcal_coeffs_bphy[3] = 0;
18895         }
18896
18897         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
18898                                  txcal_coeffs_bphy);
18899
18900         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
18901
18902         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
18903
18904         if (NREV_LT(pi->pubpi.phy_rev, 2))
18905                 wlc_phy_tx_iq_war_nphy(pi);
18906
18907         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18908                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18909                         txcal_radio_regs =
18910                                 pi->calibration_cache.txcal_radio_regs_2G;
18911                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18912
18913                         write_radio_reg(pi,
18914                                         RADIO_2056_TX_LOFT_FINE_I |
18915                                         RADIO_2056_TX0,
18916                                         pi->calibration_cache.
18917                                         txcal_radio_regs_2G[0]);
18918                         write_radio_reg(pi,
18919                                         RADIO_2056_TX_LOFT_FINE_Q |
18920                                         RADIO_2056_TX0,
18921                                         pi->calibration_cache.
18922                                         txcal_radio_regs_2G[1]);
18923                         write_radio_reg(pi,
18924                                         RADIO_2056_TX_LOFT_FINE_I |
18925                                         RADIO_2056_TX1,
18926                                         pi->calibration_cache.
18927                                         txcal_radio_regs_2G[2]);
18928                         write_radio_reg(pi,
18929                                         RADIO_2056_TX_LOFT_FINE_Q |
18930                                         RADIO_2056_TX1,
18931                                         pi->calibration_cache.
18932                                         txcal_radio_regs_2G[3]);
18933
18934                         write_radio_reg(pi,
18935                                         RADIO_2056_TX_LOFT_COARSE_I |
18936                                         RADIO_2056_TX0,
18937                                         pi->calibration_cache.
18938                                         txcal_radio_regs_2G[4]);
18939                         write_radio_reg(pi,
18940                                         RADIO_2056_TX_LOFT_COARSE_Q |
18941                                         RADIO_2056_TX0,
18942                                         pi->calibration_cache.
18943                                         txcal_radio_regs_2G[5]);
18944                         write_radio_reg(pi,
18945                                         RADIO_2056_TX_LOFT_COARSE_I |
18946                                         RADIO_2056_TX1,
18947                                         pi->calibration_cache.
18948                                         txcal_radio_regs_2G[6]);
18949                         write_radio_reg(pi,
18950                                         RADIO_2056_TX_LOFT_COARSE_Q |
18951                                         RADIO_2056_TX1,
18952                                         pi->calibration_cache.
18953                                         txcal_radio_regs_2G[7]);
18954                 } else {
18955                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18956                                         pi->calibration_cache.
18957                                         txcal_radio_regs_2G[0]);
18958                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18959                                         pi->calibration_cache.
18960                                         txcal_radio_regs_2G[1]);
18961                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18962                                         pi->calibration_cache.
18963                                         txcal_radio_regs_2G[2]);
18964                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18965                                         pi->calibration_cache.
18966                                         txcal_radio_regs_2G[3]);
18967                 }
18968
18969                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18970                                           &pi->calibration_cache.
18971                                           rxcal_coeffs_2G);
18972         } else {
18973                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18974                         txcal_radio_regs =
18975                                 pi->calibration_cache.txcal_radio_regs_5G;
18976                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18977
18978                         write_radio_reg(pi,
18979                                         RADIO_2056_TX_LOFT_FINE_I |
18980                                         RADIO_2056_TX0,
18981                                         pi->calibration_cache.
18982                                         txcal_radio_regs_5G[0]);
18983                         write_radio_reg(pi,
18984                                         RADIO_2056_TX_LOFT_FINE_Q |
18985                                         RADIO_2056_TX0,
18986                                         pi->calibration_cache.
18987                                         txcal_radio_regs_5G[1]);
18988                         write_radio_reg(pi,
18989                                         RADIO_2056_TX_LOFT_FINE_I |
18990                                         RADIO_2056_TX1,
18991                                         pi->calibration_cache.
18992                                         txcal_radio_regs_5G[2]);
18993                         write_radio_reg(pi,
18994                                         RADIO_2056_TX_LOFT_FINE_Q |
18995                                         RADIO_2056_TX1,
18996                                         pi->calibration_cache.
18997                                         txcal_radio_regs_5G[3]);
18998
18999                         write_radio_reg(pi,
19000                                         RADIO_2056_TX_LOFT_COARSE_I |
19001                                         RADIO_2056_TX0,
19002                                         pi->calibration_cache.
19003                                         txcal_radio_regs_5G[4]);
19004                         write_radio_reg(pi,
19005                                         RADIO_2056_TX_LOFT_COARSE_Q |
19006                                         RADIO_2056_TX0,
19007                                         pi->calibration_cache.
19008                                         txcal_radio_regs_5G[5]);
19009                         write_radio_reg(pi,
19010                                         RADIO_2056_TX_LOFT_COARSE_I |
19011                                         RADIO_2056_TX1,
19012                                         pi->calibration_cache.
19013                                         txcal_radio_regs_5G[6]);
19014                         write_radio_reg(pi,
19015                                         RADIO_2056_TX_LOFT_COARSE_Q |
19016                                         RADIO_2056_TX1,
19017                                         pi->calibration_cache.
19018                                         txcal_radio_regs_5G[7]);
19019                 } else {
19020                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
19021                                         pi->calibration_cache.
19022                                         txcal_radio_regs_5G[0]);
19023                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
19024                                         pi->calibration_cache.
19025                                         txcal_radio_regs_5G[1]);
19026                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
19027                                         pi->calibration_cache.
19028                                         txcal_radio_regs_5G[2]);
19029                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
19030                                         pi->calibration_cache.
19031                                         txcal_radio_regs_5G[3]);
19032                 }
19033
19034                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
19035                                           &pi->calibration_cache.
19036                                           rxcal_coeffs_5G);
19037         }
19038
19039         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19040                 for (coreNum = 0; coreNum <= 1; coreNum++) {
19041
19042                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19043                                          LOFT_FINE_I,
19044                                          txcal_radio_regs[2 * coreNum]);
19045                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19046                                          LOFT_FINE_Q,
19047                                          txcal_radio_regs[2 * coreNum + 1]);
19048
19049                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19050                                          LOFT_COARSE_I,
19051                                          txcal_radio_regs[2 * coreNum + 4]);
19052                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19053                                          LOFT_COARSE_Q,
19054                                          txcal_radio_regs[2 * coreNum + 5]);
19055                 }
19056         }
19057 }
19058
19059 static void wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy *pi)
19060 {
19061         u32 idx;
19062         u16 iqloCalbuf[7];
19063         u32 iqcomp, locomp, curr_locomp;
19064         s8 locomp_i, locomp_q;
19065         s8 curr_locomp_i, curr_locomp_q;
19066         u32 tbl_id, tbl_len, tbl_offset;
19067         u32 regval[128];
19068
19069         if (pi->phyhang_avoid)
19070                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19071
19072         wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
19073
19074         tbl_len = 128;
19075         tbl_offset = 320;
19076         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
19077              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
19078                 iqcomp =
19079                         (tbl_id ==
19080                          26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
19081                         (iqloCalbuf[1] & 0x3ff)
19082                         : (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
19083                         (iqloCalbuf[3] & 0x3ff);
19084
19085                 for (idx = 0; idx < tbl_len; idx++)
19086                         regval[idx] = iqcomp;
19087                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
19088                                          regval);
19089         }
19090
19091         tbl_offset = 448;
19092         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
19093              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
19094
19095                 locomp =
19096                         (u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
19097                 locomp_i = (s8) ((locomp >> 8) & 0xff);
19098                 locomp_q = (s8) ((locomp) & 0xff);
19099                 for (idx = 0; idx < tbl_len; idx++) {
19100                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19101                                 curr_locomp_i = locomp_i;
19102                                 curr_locomp_q = locomp_q;
19103                         } else {
19104                                 curr_locomp_i = (s8) ((locomp_i *
19105                                                        nphy_tpc_loscale[idx] +
19106                                                        128) >> 8);
19107                                 curr_locomp_q =
19108                                         (s8) ((locomp_q *
19109                                                nphy_tpc_loscale[idx] +
19110                                                128) >> 8);
19111                         }
19112                         curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
19113                         curr_locomp |= (u32) (curr_locomp_q & 0xff);
19114                         regval[idx] = curr_locomp;
19115                 }
19116                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
19117                                          regval);
19118         }
19119
19120         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19121
19122                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
19123                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
19124         }
19125
19126         if (pi->phyhang_avoid)
19127                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19128 }
19129
19130 static void wlc_phy_txlpfbw_nphy(struct brcms_phy *pi)
19131 {
19132         u8 tx_lpf_bw = 0;
19133
19134         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
19135                 if (CHSPEC_IS40(pi->radio_chanspec))
19136                         tx_lpf_bw = 3;
19137                 else
19138                         tx_lpf_bw = 1;
19139
19140                 if (PHY_IPA(pi)) {
19141                         if (CHSPEC_IS40(pi->radio_chanspec))
19142                                 tx_lpf_bw = 5;
19143                         else
19144                                 tx_lpf_bw = 4;
19145                 }
19146
19147                 write_phy_reg(pi, 0xe8,
19148                               (tx_lpf_bw << 0) |
19149                               (tx_lpf_bw << 3) |
19150                               (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
19151
19152                 if (PHY_IPA(pi)) {
19153
19154                         if (CHSPEC_IS40(pi->radio_chanspec))
19155                                 tx_lpf_bw = 4;
19156                         else
19157                                 tx_lpf_bw = 1;
19158
19159                         write_phy_reg(pi, 0xe9,
19160                                       (tx_lpf_bw << 0) |
19161                                       (tx_lpf_bw << 3) |
19162                                       (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
19163                 }
19164         }
19165 }
19166
19167 static void
19168 wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy *pi, u16 reduction_factr)
19169 {
19170         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
19171                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19172                     CHSPEC_IS40(pi->radio_chanspec)) {
19173                         if (!pi->nphy_anarxlpf_adjusted) {
19174                                 write_radio_reg(pi,
19175                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
19176                                                  RADIO_2056_RX0),
19177                                                 ((pi->nphy_rccal_value +
19178                                                   reduction_factr) | 0x80));
19179
19180                                 pi->nphy_anarxlpf_adjusted = true;
19181                         }
19182                 } else {
19183                         if (pi->nphy_anarxlpf_adjusted) {
19184                                 write_radio_reg(pi,
19185                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
19186                                                  RADIO_2056_RX0),
19187                                                 (pi->nphy_rccal_value | 0x80));
19188
19189                                 pi->nphy_anarxlpf_adjusted = false;
19190                         }
19191                 }
19192         }
19193 }
19194
19195 static void
19196 wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy *pi, int ntones,
19197                                  int *tone_id_buf, u32 *noise_var_buf)
19198 {
19199         int i;
19200         u32 offset;
19201         int tone_id;
19202         int tbllen =
19203                 CHSPEC_IS40(pi->radio_chanspec) ?
19204                 NPHY_NOISEVAR_TBLLEN40 : NPHY_NOISEVAR_TBLLEN20;
19205
19206         if (pi->nphy_noisevars_adjusted) {
19207                 for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
19208                         tone_id = pi->nphy_saved_noisevars.tone_id[i];
19209                         offset = (tone_id >= 0) ?
19210                                  ((tone_id *
19211                                    2) + 1) : (tbllen + (tone_id * 2) + 1);
19212                         wlc_phy_table_write_nphy(
19213                                 pi, NPHY_TBL_ID_NOISEVAR, 1,
19214                                 offset, 32,
19215                                 &pi->nphy_saved_noisevars.min_noise_vars[i]);
19216                 }
19217
19218                 pi->nphy_saved_noisevars.bufcount = 0;
19219                 pi->nphy_noisevars_adjusted = false;
19220         }
19221
19222         if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
19223                 pi->nphy_saved_noisevars.bufcount = 0;
19224
19225                 for (i = 0; i < ntones; i++) {
19226                         tone_id = tone_id_buf[i];
19227                         offset = (tone_id >= 0) ?
19228                                  ((tone_id * 2) + 1) :
19229                                  (tbllen + (tone_id * 2) + 1);
19230                         pi->nphy_saved_noisevars.tone_id[i] = tone_id;
19231                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19232                                                 offset, 32,
19233                                                 &pi->nphy_saved_noisevars.
19234                                                 min_noise_vars[i]);
19235                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19236                                                  offset, 32, &noise_var_buf[i]);
19237                         pi->nphy_saved_noisevars.bufcount++;
19238                 }
19239
19240                 pi->nphy_noisevars_adjusted = true;
19241         }
19242 }
19243
19244 static void wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy *pi, u8 minpwr)
19245 {
19246         u16 regval;
19247
19248         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19249                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19250                     CHSPEC_IS40(pi->radio_chanspec)) {
19251                         if (!pi->nphy_crsminpwr_adjusted) {
19252                                 regval = read_phy_reg(pi, 0x27d);
19253                                 pi->nphy_crsminpwr[0] = regval & 0xff;
19254                                 regval &= 0xff00;
19255                                 regval |= (u16) minpwr;
19256                                 write_phy_reg(pi, 0x27d, regval);
19257
19258                                 regval = read_phy_reg(pi, 0x280);
19259                                 pi->nphy_crsminpwr[1] = regval & 0xff;
19260                                 regval &= 0xff00;
19261                                 regval |= (u16) minpwr;
19262                                 write_phy_reg(pi, 0x280, regval);
19263
19264                                 regval = read_phy_reg(pi, 0x283);
19265                                 pi->nphy_crsminpwr[2] = regval & 0xff;
19266                                 regval &= 0xff00;
19267                                 regval |= (u16) minpwr;
19268                                 write_phy_reg(pi, 0x283, regval);
19269
19270                                 pi->nphy_crsminpwr_adjusted = true;
19271                         }
19272                 } else {
19273                         if (pi->nphy_crsminpwr_adjusted) {
19274                                 regval = read_phy_reg(pi, 0x27d);
19275                                 regval &= 0xff00;
19276                                 regval |= pi->nphy_crsminpwr[0];
19277                                 write_phy_reg(pi, 0x27d, regval);
19278
19279                                 regval = read_phy_reg(pi, 0x280);
19280                                 regval &= 0xff00;
19281                                 regval |= pi->nphy_crsminpwr[1];
19282                                 write_phy_reg(pi, 0x280, regval);
19283
19284                                 regval = read_phy_reg(pi, 0x283);
19285                                 regval &= 0xff00;
19286                                 regval |= pi->nphy_crsminpwr[2];
19287                                 write_phy_reg(pi, 0x283, regval);
19288
19289                                 pi->nphy_crsminpwr_adjusted = false;
19290                         }
19291                 }
19292         }
19293 }
19294
19295 static void wlc_phy_spurwar_nphy(struct brcms_phy *pi)
19296 {
19297         u16 cur_channel = 0;
19298         int nphy_adj_tone_id_buf[] = { 57, 58 };
19299         u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
19300         bool isAdjustNoiseVar = false;
19301         uint numTonesAdjust = 0;
19302         u32 tempval = 0;
19303
19304         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19305                 if (pi->phyhang_avoid)
19306                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
19307
19308                 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19309
19310                 if (pi->nphy_gband_spurwar_en) {
19311
19312                         wlc_phy_adjust_rx_analpfbw_nphy(
19313                                 pi,
19314                                 NPHY_ANARXLPFBW_REDUCTIONFACT);
19315
19316                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19317                                 if ((cur_channel == 11)
19318                                     && CHSPEC_IS40(pi->radio_chanspec))
19319                                         wlc_phy_adjust_min_noisevar_nphy(
19320                                                 pi, 2,
19321                                                 nphy_adj_tone_id_buf,
19322                                                 nphy_adj_noise_var_buf);
19323                                 else
19324                                         wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19325                                                                          NULL,
19326                                                                          NULL);
19327                         }
19328
19329                         wlc_phy_adjust_crsminpwr_nphy(pi,
19330                                                      NPHY_ADJUSTED_MINCRSPOWER);
19331                 }
19332
19333                 if ((pi->nphy_gband_spurwar2_en)
19334                     && CHSPEC_IS2G(pi->radio_chanspec)) {
19335
19336                         if (CHSPEC_IS40(pi->radio_chanspec)) {
19337                                 switch (cur_channel) {
19338                                 case 3:
19339                                         nphy_adj_tone_id_buf[0] = 57;
19340                                         nphy_adj_tone_id_buf[1] = 58;
19341                                         nphy_adj_noise_var_buf[0] = 0x22f;
19342                                         nphy_adj_noise_var_buf[1] = 0x25f;
19343                                         isAdjustNoiseVar = true;
19344                                         break;
19345                                 case 4:
19346                                         nphy_adj_tone_id_buf[0] = 41;
19347                                         nphy_adj_tone_id_buf[1] = 42;
19348                                         nphy_adj_noise_var_buf[0] = 0x22f;
19349                                         nphy_adj_noise_var_buf[1] = 0x25f;
19350                                         isAdjustNoiseVar = true;
19351                                         break;
19352                                 case 5:
19353                                         nphy_adj_tone_id_buf[0] = 25;
19354                                         nphy_adj_tone_id_buf[1] = 26;
19355                                         nphy_adj_noise_var_buf[0] = 0x24f;
19356                                         nphy_adj_noise_var_buf[1] = 0x25f;
19357                                         isAdjustNoiseVar = true;
19358                                         break;
19359                                 case 6:
19360                                         nphy_adj_tone_id_buf[0] = 9;
19361                                         nphy_adj_tone_id_buf[1] = 10;
19362                                         nphy_adj_noise_var_buf[0] = 0x22f;
19363                                         nphy_adj_noise_var_buf[1] = 0x24f;
19364                                         isAdjustNoiseVar = true;
19365                                         break;
19366                                 case 7:
19367                                         nphy_adj_tone_id_buf[0] = 121;
19368                                         nphy_adj_tone_id_buf[1] = 122;
19369                                         nphy_adj_noise_var_buf[0] = 0x18f;
19370                                         nphy_adj_noise_var_buf[1] = 0x24f;
19371                                         isAdjustNoiseVar = true;
19372                                         break;
19373                                 case 8:
19374                                         nphy_adj_tone_id_buf[0] = 105;
19375                                         nphy_adj_tone_id_buf[1] = 106;
19376                                         nphy_adj_noise_var_buf[0] = 0x22f;
19377                                         nphy_adj_noise_var_buf[1] = 0x25f;
19378                                         isAdjustNoiseVar = true;
19379                                         break;
19380                                 case 9:
19381                                         nphy_adj_tone_id_buf[0] = 89;
19382                                         nphy_adj_tone_id_buf[1] = 90;
19383                                         nphy_adj_noise_var_buf[0] = 0x22f;
19384                                         nphy_adj_noise_var_buf[1] = 0x24f;
19385                                         isAdjustNoiseVar = true;
19386                                         break;
19387                                 case 10:
19388                                         nphy_adj_tone_id_buf[0] = 73;
19389                                         nphy_adj_tone_id_buf[1] = 74;
19390                                         nphy_adj_noise_var_buf[0] = 0x22f;
19391                                         nphy_adj_noise_var_buf[1] = 0x24f;
19392                                         isAdjustNoiseVar = true;
19393                                         break;
19394                                 default:
19395                                         isAdjustNoiseVar = false;
19396                                         break;
19397                                 }
19398                         }
19399
19400                         if (isAdjustNoiseVar) {
19401                                 numTonesAdjust = sizeof(nphy_adj_tone_id_buf) /
19402                                                 sizeof(nphy_adj_tone_id_buf[0]);
19403
19404                                 wlc_phy_adjust_min_noisevar_nphy(
19405                                         pi,
19406                                         numTonesAdjust,
19407                                         nphy_adj_tone_id_buf,
19408                                         nphy_adj_noise_var_buf);
19409
19410                                 tempval = 0;
19411
19412                         } else {
19413                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19414                                                                  NULL);
19415                         }
19416                 }
19417
19418                 if ((pi->nphy_aband_spurwar_en) &&
19419                     (CHSPEC_IS5G(pi->radio_chanspec))) {
19420                         switch (cur_channel) {
19421                         case 54:
19422                                 nphy_adj_tone_id_buf[0] = 32;
19423                                 nphy_adj_noise_var_buf[0] = 0x25f;
19424                                 break;
19425                         case 38:
19426                         case 102:
19427                         case 118:
19428                                 nphy_adj_tone_id_buf[0] = 0;
19429                                 nphy_adj_noise_var_buf[0] = 0x0;
19430                                 break;
19431                         case 134:
19432                                 nphy_adj_tone_id_buf[0] = 32;
19433                                 nphy_adj_noise_var_buf[0] = 0x21f;
19434                                 break;
19435                         case 151:
19436                                 nphy_adj_tone_id_buf[0] = 16;
19437                                 nphy_adj_noise_var_buf[0] = 0x23f;
19438                                 break;
19439                         case 153:
19440                         case 161:
19441                                 nphy_adj_tone_id_buf[0] = 48;
19442                                 nphy_adj_noise_var_buf[0] = 0x23f;
19443                                 break;
19444                         default:
19445                                 nphy_adj_tone_id_buf[0] = 0;
19446                                 nphy_adj_noise_var_buf[0] = 0x0;
19447                                 break;
19448                         }
19449
19450                         if (nphy_adj_tone_id_buf[0]
19451                             && nphy_adj_noise_var_buf[0])
19452                                 wlc_phy_adjust_min_noisevar_nphy(
19453                                         pi, 1,
19454                                         nphy_adj_tone_id_buf,
19455                                         nphy_adj_noise_var_buf);
19456                         else
19457                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19458                                                                  NULL);
19459                 }
19460
19461                 if (pi->phyhang_avoid)
19462                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
19463         }
19464 }
19465
19466 void wlc_phy_init_nphy(struct brcms_phy *pi)
19467 {
19468         u16 val;
19469         u16 clip1_ths[2];
19470         struct nphy_txgains target_gain;
19471         u8 tx_pwr_ctrl_state;
19472         bool do_nphy_cal = false;
19473         uint core;
19474         uint origidx, intr_val;
19475         struct d11regs __iomem *regs;
19476         u32 d11_clk_ctl_st;
19477         bool do_rssi_cal = false;
19478
19479         core = 0;
19480
19481         if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19482                 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19483
19484         if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
19485             ((pi->sh->chippkg == BCM4717_PKG_ID) ||
19486              (pi->sh->chippkg == BCM4718_PKG_ID))) {
19487                 if ((pi->sh->boardflags & BFL_EXTLNA) &&
19488                     (CHSPEC_IS2G(pi->radio_chanspec)))
19489                         ai_corereg(pi->sh->sih, SI_CC_IDX,
19490                                    offsetof(struct chipcregs, chipcontrol),
19491                                    0x40, 0x40);
19492         }
19493
19494         if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19495             CHSPEC_IS40(pi->radio_chanspec)) {
19496
19497                 regs = (struct d11regs __iomem *)
19498                                 ai_switch_core(pi->sh->sih,
19499                                                D11_CORE_ID, &origidx,
19500                                                &intr_val);
19501                 d11_clk_ctl_st = R_REG(&regs->clk_ctl_st);
19502                 AND_REG(&regs->clk_ctl_st,
19503                         ~(CCS_FORCEHT | CCS_HTAREQ));
19504
19505                 W_REG(&regs->clk_ctl_st, d11_clk_ctl_st);
19506
19507                 ai_restore_core(pi->sh->sih, origidx, intr_val);
19508         }
19509
19510         pi->use_int_tx_iqlo_cal_nphy =
19511                 (PHY_IPA(pi) ||
19512                  (NREV_GE(pi->pubpi.phy_rev, 7) ||
19513                   (NREV_GE(pi->pubpi.phy_rev, 5)
19514                    && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19515
19516         pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19517
19518         pi->nphy_deaf_count = 0;
19519
19520         wlc_phy_tbl_init_nphy(pi);
19521
19522         pi->nphy_crsminpwr_adjusted = false;
19523         pi->nphy_noisevars_adjusted = false;
19524
19525         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19526                 write_phy_reg(pi, 0xe7, 0);
19527                 write_phy_reg(pi, 0xec, 0);
19528                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19529                         write_phy_reg(pi, 0x342, 0);
19530                         write_phy_reg(pi, 0x343, 0);
19531                         write_phy_reg(pi, 0x346, 0);
19532                         write_phy_reg(pi, 0x347, 0);
19533                 }
19534                 write_phy_reg(pi, 0xe5, 0);
19535                 write_phy_reg(pi, 0xe6, 0);
19536         } else {
19537                 write_phy_reg(pi, 0xec, 0);
19538         }
19539
19540         write_phy_reg(pi, 0x91, 0);
19541         write_phy_reg(pi, 0x92, 0);
19542         if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19543                 write_phy_reg(pi, 0x93, 0);
19544                 write_phy_reg(pi, 0x94, 0);
19545         }
19546
19547         and_phy_reg(pi, 0xa1, ~3);
19548
19549         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19550                 write_phy_reg(pi, 0x8f, 0);
19551                 write_phy_reg(pi, 0xa5, 0);
19552         } else {
19553                 write_phy_reg(pi, 0xa5, 0);
19554         }
19555
19556         if (NREV_IS(pi->pubpi.phy_rev, 2))
19557                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19558         else if (NREV_LT(pi->pubpi.phy_rev, 2))
19559                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19560
19561         write_phy_reg(pi, 0x203, 32);
19562         write_phy_reg(pi, 0x201, 32);
19563
19564         if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19565                 write_phy_reg(pi, 0x20d, 160);
19566         else
19567                 write_phy_reg(pi, 0x20d, 184);
19568
19569         write_phy_reg(pi, 0x13a, 200);
19570
19571         write_phy_reg(pi, 0x70, 80);
19572
19573         write_phy_reg(pi, 0x1ff, 48);
19574
19575         if (NREV_LT(pi->pubpi.phy_rev, 8))
19576                 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19577
19578         wlc_phy_stf_chain_upd_nphy(pi);
19579
19580         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19581                 write_phy_reg(pi, 0x180, 0xaa8);
19582                 write_phy_reg(pi, 0x181, 0x9a4);
19583         }
19584
19585         if (PHY_IPA(pi)) {
19586                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19587
19588                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19589                                     0x29b, (0x1 << 0), (1) << 0);
19590
19591                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19592                                     0x29c, (0x1ff << 7),
19593                                     (pi->nphy_papd_epsilon_offset[core]) << 7);
19594
19595                 }
19596
19597                 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19598         } else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19599                 wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19600         }
19601
19602         wlc_phy_workarounds_nphy(pi);
19603
19604         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19605
19606         val = read_phy_reg(pi, 0x01);
19607         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19608         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19609         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19610
19611         wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19612
19613         wlc_phy_pa_override_nphy(pi, OFF);
19614         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19615         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19616         wlc_phy_pa_override_nphy(pi, ON);
19617
19618         wlc_phy_classifier_nphy(pi, 0, 0);
19619         wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19620
19621         if (CHSPEC_IS2G(pi->radio_chanspec))
19622                 wlc_phy_bphy_init_nphy(pi);
19623
19624         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19625         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19626
19627         wlc_phy_txpwr_fixpower_nphy(pi);
19628
19629         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19630
19631         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19632
19633         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19634                 u32 *tx_pwrctrl_tbl = NULL;
19635                 u16 idx;
19636                 s16 pga_gn = 0;
19637                 s16 pad_gn = 0;
19638                 s32 rfpwr_offset;
19639
19640                 if (PHY_IPA(pi)) {
19641                         tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19642                 } else {
19643                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
19644                                 if (NREV_IS(pi->pubpi.phy_rev, 3))
19645                                         tx_pwrctrl_tbl =
19646                                                 nphy_tpc_5GHz_txgain_rev3;
19647                                 else if (NREV_IS(pi->pubpi.phy_rev, 4))
19648                                         tx_pwrctrl_tbl =
19649                                                 (pi->srom_fem5g.extpagain ==
19650                                                  3) ?
19651                                                 nphy_tpc_5GHz_txgain_HiPwrEPA :
19652                                                 nphy_tpc_5GHz_txgain_rev4;
19653                                 else
19654                                         tx_pwrctrl_tbl =
19655                                                 nphy_tpc_5GHz_txgain_rev5;
19656                         } else {
19657                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19658                                         if (pi->pubpi.radiorev == 5)
19659                                                 tx_pwrctrl_tbl =
19660                                                    nphy_tpc_txgain_epa_2057rev5;
19661                                         else if (pi->pubpi.radiorev == 3)
19662                                                 tx_pwrctrl_tbl =
19663                                                    nphy_tpc_txgain_epa_2057rev3;
19664                                 } else {
19665                                         if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19666                                             (pi->srom_fem2g.extpagain == 3))
19667                                                 tx_pwrctrl_tbl =
19668                                                        nphy_tpc_txgain_HiPwrEPA;
19669                                         else
19670                                                 tx_pwrctrl_tbl =
19671                                                         nphy_tpc_txgain_rev3;
19672                                 }
19673                         }
19674                 }
19675
19676                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19677                                          192, 32, tx_pwrctrl_tbl);
19678                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19679                                          192, 32, tx_pwrctrl_tbl);
19680
19681                 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19682
19683                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19684
19685                         for (idx = 0; idx < 128; idx++) {
19686                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19687                                 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19688                                 rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19689                                                                  pad_gn);
19690                                 wlc_phy_table_write_nphy(
19691                                         pi,
19692                                         NPHY_TBL_ID_CORE1TXPWRCTL,
19693                                         1, 576 + idx, 32,
19694                                         &rfpwr_offset);
19695                                 wlc_phy_table_write_nphy(
19696                                         pi,
19697                                         NPHY_TBL_ID_CORE2TXPWRCTL,
19698                                         1, 576 + idx, 32,
19699                                         &rfpwr_offset);
19700                         }
19701                 } else {
19702
19703                         for (idx = 0; idx < 128; idx++) {
19704                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19705                                 if (CHSPEC_IS2G(pi->radio_chanspec))
19706                                         rfpwr_offset = (s16)
19707                                                  nphy_papd_pga_gain_delta_ipa_2g
19708                                                                        [pga_gn];
19709                                 else
19710                                         rfpwr_offset = (s16)
19711                                                  nphy_papd_pga_gain_delta_ipa_5g
19712                                                                        [pga_gn];
19713
19714                                 wlc_phy_table_write_nphy(
19715                                         pi,
19716                                         NPHY_TBL_ID_CORE1TXPWRCTL,
19717                                         1, 576 + idx, 32,
19718                                         &rfpwr_offset);
19719                                 wlc_phy_table_write_nphy(
19720                                         pi,
19721                                         NPHY_TBL_ID_CORE2TXPWRCTL,
19722                                         1, 576 + idx, 32,
19723                                         &rfpwr_offset);
19724                         }
19725
19726                 }
19727         } else {
19728
19729                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19730                                          192, 32, nphy_tpc_txgain);
19731                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19732                                          192, 32, nphy_tpc_txgain);
19733         }
19734
19735         if (pi->sh->phyrxchain != 0x3)
19736                 wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19737                                              pi->sh->phyrxchain);
19738
19739         if (PHY_PERICAL_MPHASE_PENDING(pi))
19740                 wlc_phy_cal_perical_mphase_restart(pi);
19741
19742         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19743                 do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19744                               (pi->nphy_rssical_chanspec_2G == 0) :
19745                               (pi->nphy_rssical_chanspec_5G == 0);
19746
19747                 if (do_rssi_cal)
19748                         wlc_phy_rssi_cal_nphy(pi);
19749                 else
19750                         wlc_phy_restore_rssical_nphy(pi);
19751         } else {
19752                 wlc_phy_rssi_cal_nphy(pi);
19753         }
19754
19755         if (!SCAN_RM_IN_PROGRESS(pi))
19756                 do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19757                               (pi->nphy_iqcal_chanspec_2G == 0) :
19758                               (pi->nphy_iqcal_chanspec_5G == 0);
19759
19760         if (!pi->do_initcal)
19761                 do_nphy_cal = false;
19762
19763         if (do_nphy_cal) {
19764
19765                 target_gain = wlc_phy_get_tx_gain_nphy(pi);
19766
19767                 if (pi->antsel_type == ANTSEL_2x3)
19768                         wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19769                                             true);
19770
19771                 if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19772                         wlc_phy_rssi_cal_nphy(pi);
19773
19774                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19775                                 pi->nphy_cal_orig_pwr_idx[0] =
19776                                         pi->nphy_txpwrindex[PHY_CORE_0]
19777                                         .
19778                                         index_internal;
19779                                 pi->nphy_cal_orig_pwr_idx[1] =
19780                                         pi->nphy_txpwrindex[PHY_CORE_1]
19781                                         .
19782                                         index_internal;
19783
19784                                 wlc_phy_precal_txgain_nphy(pi);
19785                                 target_gain =
19786                                         wlc_phy_get_tx_gain_nphy(pi);
19787                         }
19788
19789                         if (wlc_phy_cal_txiqlo_nphy
19790                                     (pi, target_gain, true,
19791                                     false) == 0) {
19792                                 if (wlc_phy_cal_rxiq_nphy
19793                                             (pi, target_gain, 2,
19794                                             false) == 0)
19795                                         wlc_phy_savecal_nphy(pi);
19796
19797                         }
19798                 } else if (pi->mphase_cal_phase_id ==
19799                            MPHASE_CAL_STATE_IDLE) {
19800                         wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19801                                             PHY_PERICAL_PHYINIT);
19802                 }
19803         } else {
19804                 wlc_phy_restorecal_nphy(pi);
19805         }
19806
19807         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19808
19809         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19810
19811         wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19812
19813         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19814
19815                 write_phy_reg(pi, 0x70, 50);
19816
19817         wlc_phy_txlpfbw_nphy(pi);
19818
19819         wlc_phy_spurwar_nphy(pi);
19820
19821 }
19822
19823 static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19824 {
19825         u16 val;
19826
19827         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19828
19829         val = read_phy_reg(pi, 0x01);
19830         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19831         udelay(1);
19832         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19833
19834         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19835
19836         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19837 }
19838
19839 void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19840 {
19841         u16 rfctrlintc_override_val;
19842
19843         if (!en) {
19844
19845                 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19846                 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19847
19848                 if (NREV_GE(pi->pubpi.phy_rev, 7))
19849                         rfctrlintc_override_val = 0x1480;
19850                 else if (NREV_GE(pi->pubpi.phy_rev, 3))
19851                         rfctrlintc_override_val =
19852                                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19853                 else
19854                         rfctrlintc_override_val =
19855                                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19856
19857                 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19858                 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19859         } else {
19860                 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19861                 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19862         }
19863
19864 }
19865
19866 void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19867 {
19868
19869         u16 txrx_chain =
19870                 (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19871         bool CoreActv_override = false;
19872
19873         if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19874                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19875                 CoreActv_override = true;
19876
19877                 if (NREV_LE(pi->pubpi.phy_rev, 2))
19878                         and_phy_reg(pi, 0xa0, ~0x20);
19879         } else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19880                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19881                 CoreActv_override = true;
19882
19883                 if (NREV_LE(pi->pubpi.phy_rev, 2))
19884                         or_phy_reg(pi, 0xa0, 0x20);
19885         }
19886
19887         mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19888
19889         if (CoreActv_override) {
19890                 pi->nphy_perical = PHY_PERICAL_DISABLE;
19891                 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19892         } else {
19893                 pi->nphy_perical = PHY_PERICAL_MPHASE;
19894                 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19895         }
19896 }
19897
19898 void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19899 {
19900         u16 regval;
19901         u16 tbl_buf[16];
19902         uint i;
19903         struct brcms_phy *pi = (struct brcms_phy *) pih;
19904         u16 tbl_opcode;
19905         bool suspend;
19906
19907         pi->sh->phyrxchain = rxcore_bitmask;
19908
19909         if (!pi->sh->clk)
19910                 return;
19911
19912         suspend = (0 == (R_REG(&pi->regs->maccontrol) & MCTL_EN_MAC));
19913         if (!suspend)
19914                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
19915
19916         if (pi->phyhang_avoid)
19917                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19918
19919         regval = read_phy_reg(pi, 0xa2);
19920         regval &= ~(0xf << 4);
19921         regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19922         write_phy_reg(pi, 0xa2, regval);
19923
19924         if ((rxcore_bitmask & 0x3) != 0x3) {
19925
19926                 write_phy_reg(pi, 0x20e, 1);
19927
19928                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19929                         if (pi->rx2tx_biasentry == -1) {
19930                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19931                                                         ARRAY_SIZE(tbl_buf), 80,
19932                                                         16, tbl_buf);
19933
19934                                 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19935                                         if (tbl_buf[i] ==
19936                                             NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19937                                                 pi->rx2tx_biasentry = (u8) i;
19938                                                 tbl_opcode =
19939                                                         NPHY_REV3_RFSEQ_CMD_NOP;
19940                                                 wlc_phy_table_write_nphy(
19941                                                         pi,
19942                                                         NPHY_TBL_ID_RFSEQ,
19943                                                         1, i,
19944                                                         16,
19945                                                         &tbl_opcode);
19946                                                 break;
19947                                         } else if (tbl_buf[i] ==
19948                                                    NPHY_REV3_RFSEQ_CMD_END)
19949                                                 break;
19950                                 }
19951                         }
19952                 }
19953         } else {
19954
19955                 write_phy_reg(pi, 0x20e, 30);
19956
19957                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19958                         if (pi->rx2tx_biasentry != -1) {
19959                                 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19960                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19961                                                          1, pi->rx2tx_biasentry,
19962                                                          16, &tbl_opcode);
19963                                 pi->rx2tx_biasentry = -1;
19964                         }
19965                 }
19966         }
19967
19968         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19969
19970         if (pi->phyhang_avoid)
19971                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19972
19973         if (!suspend)
19974                 wlapi_enable_mac(pi->sh->physhim);
19975 }
19976
19977 u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19978 {
19979         u16 regval, rxen_bits;
19980         struct brcms_phy *pi = (struct brcms_phy *) pih;
19981
19982         regval = read_phy_reg(pi, 0xa2);
19983         rxen_bits = (regval >> 4) & 0xf;
19984
19985         return (u8) rxen_bits;
19986 }
19987
19988 bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19989 {
19990         return PHY_IPA(pi);
19991 }
19992
19993 void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19994 {
19995 }
19996
19997 static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19998 {
19999
20000         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20001         and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
20002
20003         or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
20004         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
20005
20006 }
20007
20008 static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
20009 {
20010         struct radio_20xx_regs *regs_2057_ptr = NULL;
20011
20012         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20013                 regs_2057_ptr = regs_2057_rev4;
20014         } else if (NREV_IS(pi->pubpi.phy_rev, 8)
20015                    || NREV_IS(pi->pubpi.phy_rev, 9)) {
20016                 switch (pi->pubpi.radiorev) {
20017                 case 5:
20018
20019                         if (pi->pubpi.radiover == 0x0)
20020                                 regs_2057_ptr = regs_2057_rev5;
20021                         else if (pi->pubpi.radiover == 0x1)
20022                                 regs_2057_ptr = regs_2057_rev5v1;
20023                         else
20024                                 break;
20025
20026                 case 7:
20027
20028                         regs_2057_ptr = regs_2057_rev7;
20029                         break;
20030
20031                 case 8:
20032
20033                         regs_2057_ptr = regs_2057_rev8;
20034                         break;
20035
20036                 default:
20037                         break;
20038                 }
20039         }
20040
20041         wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
20042 }
20043
20044 static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
20045 {
20046         u16 rcal_reg = 0;
20047         int i;
20048
20049         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20050
20051                 if (pi->pubpi.radiorev == 5) {
20052
20053                         and_phy_reg(pi, 0x342, ~(0x1 << 1));
20054
20055                         udelay(10);
20056
20057                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
20058                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
20059                                       0x1);
20060                 }
20061                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
20062
20063                 udelay(10);
20064
20065                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
20066
20067                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20068                         rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
20069                         if (rcal_reg & 0x1)
20070                                 break;
20071
20072                         udelay(100);
20073                 }
20074
20075                 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
20076                          "HW error: radio calib2"))
20077                         return 0;
20078
20079                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
20080
20081                 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
20082
20083                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
20084                 if (pi->pubpi.radiorev == 5) {
20085
20086                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
20087                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
20088                                       0x0);
20089                 }
20090
20091                 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
20092
20093                         mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
20094                                       rcal_reg);
20095                         mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
20096                                       rcal_reg << 2);
20097                 }
20098
20099         } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20100                 u16 savereg;
20101
20102                 savereg =
20103                         read_radio_reg(
20104                                 pi,
20105                                 RADIO_2056_SYN_PLL_MAST2 |
20106                                 RADIO_2056_SYN);
20107                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
20108                                 savereg | 0x7);
20109                 udelay(10);
20110
20111                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20112                                 0x1);
20113                 udelay(10);
20114
20115                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20116                                 0x9);
20117
20118                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20119                         rcal_reg = read_radio_reg(
20120                                 pi,
20121                                 RADIO_2056_SYN_RCAL_CODE_OUT |
20122                                 RADIO_2056_SYN);
20123                         if (rcal_reg & 0x80)
20124                                 break;
20125
20126                         udelay(100);
20127                 }
20128
20129                 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
20130                          "HW error: radio calib3"))
20131                         return 0;
20132
20133                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20134                                 0x1);
20135
20136                 rcal_reg =
20137                         read_radio_reg(pi,
20138                                        RADIO_2056_SYN_RCAL_CODE_OUT |
20139                                        RADIO_2056_SYN);
20140
20141                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20142                                 0x0);
20143
20144                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
20145                                 savereg);
20146
20147                 return rcal_reg & 0x1f;
20148         }
20149         return rcal_reg & 0x3e;
20150 }
20151
20152 static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
20153 {
20154         u16 rccal_valid;
20155         int i;
20156         bool chip43226_6362A0;
20157
20158         chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
20159                             || (pi->pubpi.radiorev == 4)
20160                             || (pi->pubpi.radiorev == 6));
20161
20162         rccal_valid = 0;
20163         if (chip43226_6362A0) {
20164                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
20165                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
20166         } else {
20167                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
20168
20169                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
20170         }
20171         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20172         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20173
20174         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20175                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20176                 if (rccal_valid & 0x2)
20177                         break;
20178
20179                 udelay(500);
20180         }
20181
20182         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20183
20184         rccal_valid = 0;
20185         if (chip43226_6362A0) {
20186                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
20187                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20188         } else {
20189                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
20190
20191                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
20192         }
20193         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20194         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20195
20196         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20197                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20198                 if (rccal_valid & 0x2)
20199                         break;
20200
20201                 udelay(500);
20202         }
20203
20204         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20205
20206         rccal_valid = 0;
20207         if (chip43226_6362A0) {
20208                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
20209
20210                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
20211                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20212         } else {
20213                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
20214                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20215                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
20216         }
20217         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20218
20219         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20220                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20221                 if (rccal_valid & 0x2)
20222                         break;
20223
20224                 udelay(500);
20225         }
20226
20227         if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
20228                 return 0;
20229
20230         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20231
20232         return rccal_valid;
20233 }
20234
20235 static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
20236 {
20237
20238         mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
20239
20240         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
20241         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
20242         mdelay(2);
20243         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
20244         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
20245
20246         if (pi->phy_init_por) {
20247                 wlc_phy_radio205x_rcal(pi);
20248                 wlc_phy_radio2057_rccal(pi);
20249         }
20250
20251         mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
20252 }
20253
20254 static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
20255 {
20256         const struct radio_regs *regs_SYN_2056_ptr = NULL;
20257         const struct radio_regs *regs_TX_2056_ptr = NULL;
20258         const struct radio_regs *regs_RX_2056_ptr = NULL;
20259
20260         if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20261                 regs_SYN_2056_ptr = regs_SYN_2056;
20262                 regs_TX_2056_ptr = regs_TX_2056;
20263                 regs_RX_2056_ptr = regs_RX_2056;
20264         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20265                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20266                 regs_TX_2056_ptr = regs_TX_2056_A1;
20267                 regs_RX_2056_ptr = regs_RX_2056_A1;
20268         } else {
20269                 switch (pi->pubpi.radiorev) {
20270                 case 5:
20271                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20272                         regs_TX_2056_ptr = regs_TX_2056_rev5;
20273                         regs_RX_2056_ptr = regs_RX_2056_rev5;
20274                         break;
20275
20276                 case 6:
20277                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20278                         regs_TX_2056_ptr = regs_TX_2056_rev6;
20279                         regs_RX_2056_ptr = regs_RX_2056_rev6;
20280                         break;
20281
20282                 case 7:
20283                 case 9:
20284                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20285                         regs_TX_2056_ptr = regs_TX_2056_rev7;
20286                         regs_RX_2056_ptr = regs_RX_2056_rev7;
20287                         break;
20288
20289                 case 8:
20290                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20291                         regs_TX_2056_ptr = regs_TX_2056_rev8;
20292                         regs_RX_2056_ptr = regs_RX_2056_rev8;
20293                         break;
20294
20295                 case 11:
20296                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20297                         regs_TX_2056_ptr = regs_TX_2056_rev11;
20298                         regs_RX_2056_ptr = regs_RX_2056_rev11;
20299                         break;
20300
20301                 default:
20302                         break;
20303                 }
20304         }
20305
20306         wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20307
20308         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20309
20310         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20311
20312         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20313
20314         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20315 }
20316
20317 static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20318 {
20319         mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20320
20321         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20322         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20323         udelay(1000);
20324         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20325
20326         if ((pi->sh->boardflags2 & BFL2_LEGACY)
20327             || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20328                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20329         else
20330                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20331
20332         mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20333
20334         if (pi->phy_init_por)
20335                 wlc_phy_radio205x_rcal(pi);
20336 }
20337
20338 static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20339 {
20340
20341         and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20342         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20343
20344         or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20345 }
20346
20347 static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20348 {
20349         wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20350 }
20351
20352 static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20353 {
20354
20355         and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20356                       ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20357
20358         if (((pi->sh->sromrev >= 4)
20359              && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20360             || ((pi->sh->sromrev < 4))) {
20361                 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20362                 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20363         }
20364
20365         mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20366         write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20367
20368         and_radio_reg(pi, RADIO_2055_CAL_MISC,
20369                       ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20370
20371         or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20372
20373         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20374
20375         udelay(1000);
20376
20377         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20378
20379         SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20380                    RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20381
20382         if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20383                   RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20384                  "HW error: radio calibration1\n"))
20385                 return;
20386
20387         and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20388                       ~(RADIO_2055_CAL_LPO_ENABLE));
20389
20390         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20391
20392         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20393         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20394
20395         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20396         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20397
20398         mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20399                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20400         mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20401                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20402         if (pi->nphy_gain_boost) {
20403                 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20404                               ~(RADIO_2055_GAINBST_DISABLE));
20405                 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20406                               ~(RADIO_2055_GAINBST_DISABLE));
20407         } else {
20408                 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20409                              RADIO_2055_GAINBST_DISABLE);
20410                 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20411                              RADIO_2055_GAINBST_DISABLE);
20412         }
20413
20414         udelay(2);
20415 }
20416
20417 void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20418 {
20419         if (on) {
20420                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20421                         if (!pi->radio_is_on) {
20422                                 wlc_phy_radio_preinit_205x(pi);
20423                                 wlc_phy_radio_init_2057(pi);
20424                                 wlc_phy_radio_postinit_2057(pi);
20425                         }
20426
20427                         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20428                                              pi->radio_chanspec);
20429                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20430                         wlc_phy_radio_preinit_205x(pi);
20431                         wlc_phy_radio_init_2056(pi);
20432                         wlc_phy_radio_postinit_2056(pi);
20433
20434                         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20435                                              pi->radio_chanspec);
20436                 } else {
20437                         wlc_phy_radio_preinit_2055(pi);
20438                         wlc_phy_radio_init_2055(pi);
20439                         wlc_phy_radio_postinit_2055(pi);
20440                 }
20441
20442                 pi->radio_is_on = true;
20443
20444         } else {
20445
20446                 if (NREV_GE(pi->pubpi.phy_rev, 3)
20447                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
20448                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20449                         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20450
20451                         write_radio_reg(pi,
20452                                         RADIO_2056_TX_PADA_BOOST_TUNE |
20453                                         RADIO_2056_TX0, 0);
20454                         write_radio_reg(pi,
20455                                         RADIO_2056_TX_PADG_BOOST_TUNE |
20456                                         RADIO_2056_TX0, 0);
20457                         write_radio_reg(pi,
20458                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
20459                                         RADIO_2056_TX0, 0);
20460                         write_radio_reg(pi,
20461                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
20462                                         RADIO_2056_TX0, 0);
20463                         mod_radio_reg(pi,
20464                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
20465                                       RADIO_2056_TX0, 0xf0, 0);
20466                         write_radio_reg(pi,
20467                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
20468                                         RADIO_2056_TX0, 0);
20469
20470                         write_radio_reg(pi,
20471                                         RADIO_2056_TX_PADA_BOOST_TUNE |
20472                                         RADIO_2056_TX1, 0);
20473                         write_radio_reg(pi,
20474                                         RADIO_2056_TX_PADG_BOOST_TUNE |
20475                                         RADIO_2056_TX1, 0);
20476                         write_radio_reg(pi,
20477                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
20478                                         RADIO_2056_TX1, 0);
20479                         write_radio_reg(pi,
20480                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
20481                                         RADIO_2056_TX1, 0);
20482                         mod_radio_reg(pi,
20483                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
20484                                       RADIO_2056_TX1, 0xf0, 0);
20485                         write_radio_reg(pi,
20486                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
20487                                         RADIO_2056_TX1, 0);
20488
20489                         pi->radio_is_on = false;
20490                 }
20491
20492                 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20493                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20494                         pi->radio_is_on = false;
20495                 }
20496
20497         }
20498 }
20499
20500 static bool
20501 wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20502                        const struct chan_info_nphy_radio2057 **t0,
20503                        const struct chan_info_nphy_radio205x **t1,
20504                        const struct chan_info_nphy_radio2057_rev5 **t2,
20505                        const struct chan_info_nphy_2055 **t3)
20506 {
20507         uint i;
20508         const struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20509         const struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20510         const struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20511         u32 tbl_len = 0;
20512
20513         int freq = 0;
20514
20515         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20516
20517                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20518
20519                         chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20520                         tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20521
20522                 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
20523                            || NREV_IS(pi->pubpi.phy_rev, 9)) {
20524                         switch (pi->pubpi.radiorev) {
20525
20526                         case 5:
20527
20528                                 if (pi->pubpi.radiover == 0x0) {
20529
20530                                         chan_info_tbl_p_2 =
20531                                                 chan_info_nphyrev8_2057_rev5;
20532                                         tbl_len = ARRAY_SIZE(
20533                                                   chan_info_nphyrev8_2057_rev5);
20534
20535                                 } else if (pi->pubpi.radiover == 0x1) {
20536
20537                                         chan_info_tbl_p_2 =
20538                                                 chan_info_nphyrev9_2057_rev5v1;
20539                                         tbl_len = ARRAY_SIZE(
20540                                                 chan_info_nphyrev9_2057_rev5v1);
20541
20542                                 }
20543                                 break;
20544
20545                         case 7:
20546                                 chan_info_tbl_p_0 =
20547                                         chan_info_nphyrev8_2057_rev7;
20548                                 tbl_len = ARRAY_SIZE(
20549                                                   chan_info_nphyrev8_2057_rev7);
20550                                 break;
20551
20552                         case 8:
20553                                 chan_info_tbl_p_0 =
20554                                         chan_info_nphyrev8_2057_rev8;
20555                                 tbl_len = ARRAY_SIZE(
20556                                                   chan_info_nphyrev8_2057_rev8);
20557                                 break;
20558
20559                         default:
20560                                 break;
20561                         }
20562                 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20563
20564                         chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20565                         tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20566                 } else {
20567                         goto fail;
20568                 }
20569
20570                 for (i = 0; i < tbl_len; i++) {
20571                         if (pi->pubpi.radiorev == 5) {
20572
20573                                 if (chan_info_tbl_p_2[i].chan == channel)
20574                                         break;
20575                         } else {
20576
20577                                 if (chan_info_tbl_p_0[i].chan == channel)
20578                                         break;
20579                         }
20580                 }
20581
20582                 if (i >= tbl_len)
20583                         goto fail;
20584
20585                 if (pi->pubpi.radiorev == 5) {
20586                         *t2 = &chan_info_tbl_p_2[i];
20587                         freq = chan_info_tbl_p_2[i].freq;
20588                 } else {
20589                         *t0 = &chan_info_tbl_p_0[i];
20590                         freq = chan_info_tbl_p_0[i].freq;
20591                 }
20592
20593         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20594                 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20595                         chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20596                         tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20597                 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20598                         chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20599                         tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20600                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
20601                            || NREV_IS(pi->pubpi.phy_rev, 6)) {
20602                         switch (pi->pubpi.radiorev) {
20603                         case 5:
20604                                 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20605                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20606                                 break;
20607                         case 6:
20608                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20609                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20610                                 break;
20611                         case 7:
20612                         case 9:
20613                                 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20614                                 tbl_len =
20615                                         ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20616                                 break;
20617                         case 8:
20618                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20619                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20620                                 break;
20621                         case 11:
20622                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20623                                 tbl_len = ARRAY_SIZE(
20624                                                     chan_info_nphyrev6_2056v11);
20625                                 break;
20626                         default:
20627                                 break;
20628                         }
20629                 }
20630
20631                 for (i = 0; i < tbl_len; i++) {
20632                         if (chan_info_tbl_p_1[i].chan == channel)
20633                                 break;
20634                 }
20635
20636                 if (i >= tbl_len)
20637                         goto fail;
20638
20639                 *t1 = &chan_info_tbl_p_1[i];
20640                 freq = chan_info_tbl_p_1[i].freq;
20641
20642         } else {
20643                 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20644                         if (chan_info_nphy_2055[i].chan == channel)
20645                                 break;
20646
20647                 if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20648                         goto fail;
20649
20650                 *t3 = &chan_info_nphy_2055[i];
20651                 freq = chan_info_nphy_2055[i].freq;
20652         }
20653
20654         *f = freq;
20655         return true;
20656
20657 fail:
20658         *f = WL_CHAN_FREQ_RANGE_2G;
20659         return false;
20660 }
20661
20662 u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20663 {
20664         int freq;
20665         const struct chan_info_nphy_radio2057 *t0 = NULL;
20666         const struct chan_info_nphy_radio205x *t1 = NULL;
20667         const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20668         const struct chan_info_nphy_2055 *t3 = NULL;
20669
20670         if (channel == 0)
20671                 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20672
20673         wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20674
20675         if (CHSPEC_IS2G(pi->radio_chanspec))
20676                 return WL_CHAN_FREQ_RANGE_2G;
20677
20678         if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20679                 return WL_CHAN_FREQ_RANGE_5GL;
20680         else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20681                 return WL_CHAN_FREQ_RANGE_5GM;
20682         else
20683                 return WL_CHAN_FREQ_RANGE_5GH;
20684 }
20685
20686 static void
20687 wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20688                                  const struct chan_info_nphy_2055 *ci)
20689 {
20690
20691         write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20692         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20693         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20694         write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20695
20696         BRCMS_PHY_WAR_PR51571(pi);
20697
20698         write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20699         write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20700         write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20701         write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20702
20703         BRCMS_PHY_WAR_PR51571(pi);
20704
20705         write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20706         write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20707         write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20708         write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20709
20710         BRCMS_PHY_WAR_PR51571(pi);
20711
20712         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20713                         ci->RF_core1_lgbuf_a_tune);
20714         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20715                         ci->RF_core1_lgbuf_g_tune);
20716         write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20717         write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20718                         ci->RF_core1_tx_pga_pad_tn);
20719
20720         BRCMS_PHY_WAR_PR51571(pi);
20721
20722         write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20723                         ci->RF_core1_tx_mx_bgtrim);
20724         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20725                         ci->RF_core2_lgbuf_a_tune);
20726         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20727                         ci->RF_core2_lgbuf_g_tune);
20728         write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20729
20730         BRCMS_PHY_WAR_PR51571(pi);
20731
20732         write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20733                         ci->RF_core2_tx_pga_pad_tn);
20734         write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20735                         ci->RF_core2_tx_mx_bgtrim);
20736
20737         udelay(50);
20738
20739         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20740         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20741
20742         BRCMS_PHY_WAR_PR51571(pi);
20743
20744         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20745
20746         udelay(300);
20747 }
20748
20749 static void
20750 wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20751                                  const struct chan_info_nphy_radio205x *ci)
20752 {
20753         const struct radio_regs *regs_SYN_2056_ptr = NULL;
20754
20755         write_radio_reg(pi,
20756                         RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20757                         ci->RF_SYN_pll_vcocal1);
20758         write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20759                         ci->RF_SYN_pll_vcocal2);
20760         write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20761                         ci->RF_SYN_pll_refdiv);
20762         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20763                         ci->RF_SYN_pll_mmd2);
20764         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20765                         ci->RF_SYN_pll_mmd1);
20766         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20767                         ci->RF_SYN_pll_loopfilter1);
20768         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20769                         ci->RF_SYN_pll_loopfilter2);
20770         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20771                         ci->RF_SYN_pll_loopfilter3);
20772         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20773                         ci->RF_SYN_pll_loopfilter4);
20774         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20775                         ci->RF_SYN_pll_loopfilter5);
20776         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20777                         ci->RF_SYN_reserved_addr27);
20778         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20779                         ci->RF_SYN_reserved_addr28);
20780         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20781                         ci->RF_SYN_reserved_addr29);
20782         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20783                         ci->RF_SYN_logen_VCOBUF1);
20784         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20785                         ci->RF_SYN_logen_MIXER2);
20786         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20787                         ci->RF_SYN_logen_BUF3);
20788         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20789                         ci->RF_SYN_logen_BUF4);
20790
20791         write_radio_reg(pi,
20792                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20793                         ci->RF_RX0_lnaa_tune);
20794         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20795                         ci->RF_RX0_lnag_tune);
20796         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20797                         ci->RF_TX0_intpaa_boost_tune);
20798         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20799                         ci->RF_TX0_intpag_boost_tune);
20800         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20801                         ci->RF_TX0_pada_boost_tune);
20802         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20803                         ci->RF_TX0_padg_boost_tune);
20804         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20805                         ci->RF_TX0_pgaa_boost_tune);
20806         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20807                         ci->RF_TX0_pgag_boost_tune);
20808         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20809                         ci->RF_TX0_mixa_boost_tune);
20810         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20811                         ci->RF_TX0_mixg_boost_tune);
20812
20813         write_radio_reg(pi,
20814                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20815                         ci->RF_RX1_lnaa_tune);
20816         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20817                         ci->RF_RX1_lnag_tune);
20818         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20819                         ci->RF_TX1_intpaa_boost_tune);
20820         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20821                         ci->RF_TX1_intpag_boost_tune);
20822         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20823                         ci->RF_TX1_pada_boost_tune);
20824         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20825                         ci->RF_TX1_padg_boost_tune);
20826         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20827                         ci->RF_TX1_pgaa_boost_tune);
20828         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20829                         ci->RF_TX1_pgag_boost_tune);
20830         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20831                         ci->RF_TX1_mixa_boost_tune);
20832         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20833                         ci->RF_TX1_mixg_boost_tune);
20834
20835         if (NREV_IS(pi->pubpi.phy_rev, 3))
20836                 regs_SYN_2056_ptr = regs_SYN_2056;
20837         else if (NREV_IS(pi->pubpi.phy_rev, 4))
20838                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20839         else {
20840                 switch (pi->pubpi.radiorev) {
20841                 case 5:
20842                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20843                         break;
20844                 case 6:
20845                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20846                         break;
20847                 case 7:
20848                 case 9:
20849                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20850                         break;
20851                 case 8:
20852                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20853                         break;
20854                 case 11:
20855                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20856                         break;
20857                 }
20858         }
20859         if (CHSPEC_IS2G(pi->radio_chanspec))
20860                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20861                                 RADIO_2056_SYN,
20862                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20863         else
20864                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20865                                 RADIO_2056_SYN,
20866                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20867
20868         if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20869                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20870                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20871                                         RADIO_2056_SYN, 0x1f);
20872                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20873                                         RADIO_2056_SYN, 0x1f);
20874
20875                         write_radio_reg(pi,
20876                                         RADIO_2056_SYN_PLL_LOOPFILTER4 |
20877                                         RADIO_2056_SYN, 0xb);
20878                         write_radio_reg(pi,
20879                                         RADIO_2056_SYN_PLL_CP2 |
20880                                         RADIO_2056_SYN, 0x14);
20881                 }
20882         }
20883
20884         if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20885             (CHSPEC_IS2G(pi->radio_chanspec))) {
20886                 write_radio_reg(pi,
20887                                 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20888                                 0x1f);
20889                 write_radio_reg(pi,
20890                                 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20891                                 0x1f);
20892                 write_radio_reg(pi,
20893                                 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20894                                 0xb);
20895                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20896                                 0x20);
20897         }
20898
20899         if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20900                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
20901                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20902                                         RADIO_2056_SYN, 0x1f);
20903                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20904                                         RADIO_2056_SYN, 0x1f);
20905                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20906                                         RADIO_2056_SYN, 0x5);
20907                         write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20908                                         RADIO_2056_SYN, 0xc);
20909                 }
20910         }
20911
20912         if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20913                 u16 pag_boost_tune;
20914                 u16 padg_boost_tune;
20915                 u16 pgag_boost_tune;
20916                 u16 mixg_boost_tune;
20917                 u16 bias, cascbias;
20918                 uint core;
20919
20920                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20921
20922                         if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20923
20924                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20925                                                  PADG_IDAC, 0xcc);
20926
20927                                 bias = 0x25;
20928                                 cascbias = 0x20;
20929
20930                                 if ((pi->sh->chip ==
20931                                      BCM43224_CHIP_ID)
20932                                     || (pi->sh->chip ==
20933                                         BCM43225_CHIP_ID)) {
20934                                         if (pi->sh->chippkg ==
20935                                             BCM43224_FAB_SMIC) {
20936                                                 bias = 0x2a;
20937                                                 cascbias = 0x38;
20938                                         }
20939                                 }
20940
20941                                 pag_boost_tune = 0x4;
20942                                 pgag_boost_tune = 0x03;
20943                                 padg_boost_tune = 0x77;
20944                                 mixg_boost_tune = 0x65;
20945
20946                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20947                                                  INTPAG_IMAIN_STAT, bias);
20948                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20949                                                  INTPAG_IAUX_STAT, bias);
20950                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20951                                                  INTPAG_CASCBIAS, cascbias);
20952
20953                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20954                                                  INTPAG_BOOST_TUNE,
20955                                                  pag_boost_tune);
20956                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20957                                                  PGAG_BOOST_TUNE,
20958                                                  pgag_boost_tune);
20959                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20960                                                  PADG_BOOST_TUNE,
20961                                                  padg_boost_tune);
20962                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20963                                                  MIXG_BOOST_TUNE,
20964                                                  mixg_boost_tune);
20965                         } else {
20966
20967                                 bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20968                                        0x40 : 0x20;
20969
20970                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20971                                                  INTPAG_IMAIN_STAT, bias);
20972                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20973                                                  INTPAG_IAUX_STAT, bias);
20974                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20975                                                  INTPAG_CASCBIAS, 0x30);
20976                         }
20977                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20978                                          0xee);
20979                 }
20980         }
20981
20982         if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20983             && CHSPEC_IS5G(pi->radio_chanspec)) {
20984                 u16 paa_boost_tune;
20985                 u16 pada_boost_tune;
20986                 u16 pgaa_boost_tune;
20987                 u16 mixa_boost_tune;
20988                 u16 freq, pabias, cascbias;
20989                 uint core;
20990
20991                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20992
20993                 if (freq < 5150) {
20994
20995                         paa_boost_tune = 0xa;
20996                         pada_boost_tune = 0x77;
20997                         pgaa_boost_tune = 0xf;
20998                         mixa_boost_tune = 0xf;
20999                 } else if (freq < 5340) {
21000
21001                         paa_boost_tune = 0x8;
21002                         pada_boost_tune = 0x77;
21003                         pgaa_boost_tune = 0xfb;
21004                         mixa_boost_tune = 0xf;
21005                 } else if (freq < 5650) {
21006
21007                         paa_boost_tune = 0x0;
21008                         pada_boost_tune = 0x77;
21009                         pgaa_boost_tune = 0xb;
21010                         mixa_boost_tune = 0xf;
21011                 } else {
21012
21013                         paa_boost_tune = 0x0;
21014                         pada_boost_tune = 0x77;
21015                         if (freq != 5825)
21016                                 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
21017                         else
21018                                 pgaa_boost_tune = 6;
21019
21020                         mixa_boost_tune = 0xf;
21021                 }
21022
21023                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21024                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21025                                          INTPAA_BOOST_TUNE, paa_boost_tune);
21026                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21027                                          PADA_BOOST_TUNE, pada_boost_tune);
21028                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21029                                          PGAA_BOOST_TUNE, pgaa_boost_tune);
21030                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21031                                          MIXA_BOOST_TUNE, mixa_boost_tune);
21032
21033                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21034                                          TXSPARE1, 0x30);
21035                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21036                                          PA_SPARE2, 0xee);
21037
21038                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21039                                          PADA_CASCBIAS, 0x3);
21040
21041                         cascbias = 0x30;
21042
21043                         if ((pi->sh->chip == BCM43224_CHIP_ID) ||
21044                             (pi->sh->chip == BCM43225_CHIP_ID)) {
21045                                 if (pi->sh->chippkg == BCM43224_FAB_SMIC)
21046                                         cascbias = 0x35;
21047                         }
21048
21049                         pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
21050
21051                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21052                                          INTPAA_IAUX_STAT, pabias);
21053                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21054                                          INTPAA_IMAIN_STAT, pabias);
21055                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21056                                          INTPAA_CASCBIAS, cascbias);
21057                 }
21058         }
21059
21060         udelay(50);
21061
21062         wlc_phy_radio205x_vcocal_nphy(pi);
21063 }
21064
21065 void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
21066 {
21067         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21068                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
21069                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
21070                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
21071                               (1 << 2));
21072                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
21073         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21074                 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
21075                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
21076                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
21077                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
21078                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
21079         }
21080
21081         udelay(300);
21082 }
21083
21084 static void
21085 wlc_phy_chanspec_radio2057_setup(
21086         struct brcms_phy *pi,
21087         const struct chan_info_nphy_radio2057 *ci,
21088         const struct chan_info_nphy_radio2057_rev5 *
21089         ci2)
21090 {
21091         int coreNum;
21092         u16 txmix2g_tune_boost_pu = 0;
21093         u16 pad2g_tune_pus = 0;
21094
21095         if (pi->pubpi.radiorev == 5) {
21096
21097                 write_radio_reg(pi,
21098                                 RADIO_2057_VCOCAL_COUNTVAL0,
21099                                 ci2->RF_vcocal_countval0);
21100                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
21101                                 ci2->RF_vcocal_countval1);
21102                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
21103                                 ci2->RF_rfpll_refmaster_sparextalsize);
21104                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21105                                 ci2->RF_rfpll_loopfilter_r1);
21106                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21107                                 ci2->RF_rfpll_loopfilter_c2);
21108                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21109                                 ci2->RF_rfpll_loopfilter_c1);
21110                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
21111                                 ci2->RF_cp_kpd_idac);
21112                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
21113                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
21114                 write_radio_reg(pi,
21115                                 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
21116                 write_radio_reg(pi,
21117                                 RADIO_2057_LOGEN_MX2G_TUNE,
21118                                 ci2->RF_logen_mx2g_tune);
21119                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
21120                                 ci2->RF_logen_indbuf2g_tune);
21121
21122                 write_radio_reg(pi,
21123                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
21124                                 ci2->RF_txmix2g_tune_boost_pu_core0);
21125                 write_radio_reg(pi,
21126                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
21127                                 ci2->RF_pad2g_tune_pus_core0);
21128                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
21129                                 ci2->RF_lna2g_tune_core0);
21130
21131                 write_radio_reg(pi,
21132                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
21133                                 ci2->RF_txmix2g_tune_boost_pu_core1);
21134                 write_radio_reg(pi,
21135                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
21136                                 ci2->RF_pad2g_tune_pus_core1);
21137                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
21138                                 ci2->RF_lna2g_tune_core1);
21139
21140         } else {
21141
21142                 write_radio_reg(pi,
21143                                 RADIO_2057_VCOCAL_COUNTVAL0,
21144                                 ci->RF_vcocal_countval0);
21145                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
21146                                 ci->RF_vcocal_countval1);
21147                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
21148                                 ci->RF_rfpll_refmaster_sparextalsize);
21149                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21150                                 ci->RF_rfpll_loopfilter_r1);
21151                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21152                                 ci->RF_rfpll_loopfilter_c2);
21153                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21154                                 ci->RF_rfpll_loopfilter_c1);
21155                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
21156                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
21157                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
21158                 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
21159                 write_radio_reg(pi,
21160                                 RADIO_2057_LOGEN_MX2G_TUNE,
21161                                 ci->RF_logen_mx2g_tune);
21162                 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
21163                                 ci->RF_logen_mx5g_tune);
21164                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
21165                                 ci->RF_logen_indbuf2g_tune);
21166                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
21167                                 ci->RF_logen_indbuf5g_tune);
21168
21169                 write_radio_reg(pi,
21170                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
21171                                 ci->RF_txmix2g_tune_boost_pu_core0);
21172                 write_radio_reg(pi,
21173                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
21174                                 ci->RF_pad2g_tune_pus_core0);
21175                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
21176                                 ci->RF_pga_boost_tune_core0);
21177                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
21178                                 ci->RF_txmix5g_boost_tune_core0);
21179                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
21180                                 ci->RF_pad5g_tune_misc_pus_core0);
21181                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
21182                                 ci->RF_lna2g_tune_core0);
21183                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
21184                                 ci->RF_lna5g_tune_core0);
21185
21186                 write_radio_reg(pi,
21187                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
21188                                 ci->RF_txmix2g_tune_boost_pu_core1);
21189                 write_radio_reg(pi,
21190                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
21191                                 ci->RF_pad2g_tune_pus_core1);
21192                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
21193                                 ci->RF_pga_boost_tune_core1);
21194                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
21195                                 ci->RF_txmix5g_boost_tune_core1);
21196                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
21197                                 ci->RF_pad5g_tune_misc_pus_core1);
21198                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
21199                                 ci->RF_lna2g_tune_core1);
21200                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
21201                                 ci->RF_lna5g_tune_core1);
21202         }
21203
21204         if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
21205
21206                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21207                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21208                                         0x3f);
21209                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21210                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21211                                         0x8);
21212                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21213                                         0x8);
21214                 } else {
21215                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21216                                         0x1f);
21217                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21218                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21219                                         0x8);
21220                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21221                                         0x8);
21222                 }
21223         } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
21224                    (pi->pubpi.radiorev == 8)) {
21225
21226                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21227                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21228                                         0x1b);
21229                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
21230                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21231                                         0xa);
21232                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21233                                         0xa);
21234                 } else {
21235                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21236                                         0x1f);
21237                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21238                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21239                                         0x8);
21240                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21241                                         0x8);
21242                 }
21243
21244         }
21245
21246         if (CHSPEC_IS2G(pi->radio_chanspec)) {
21247                 if (PHY_IPA(pi)) {
21248                         if (pi->pubpi.radiorev == 3)
21249                                 txmix2g_tune_boost_pu = 0x6b;
21250
21251                         if (pi->pubpi.radiorev == 5)
21252                                 pad2g_tune_pus = 0x73;
21253
21254                 } else {
21255                         if (pi->pubpi.radiorev != 5) {
21256                                 pad2g_tune_pus = 0x3;
21257
21258                                 txmix2g_tune_boost_pu = 0x61;
21259                         }
21260                 }
21261
21262                 for (coreNum = 0; coreNum <= 1; coreNum++) {
21263
21264                         if (txmix2g_tune_boost_pu != 0)
21265                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21266                                                  TXMIX2G_TUNE_BOOST_PU,
21267                                                  txmix2g_tune_boost_pu);
21268
21269                         if (pad2g_tune_pus != 0)
21270                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21271                                                  PAD2G_TUNE_PUS,
21272                                                  pad2g_tune_pus);
21273                 }
21274         }
21275
21276         udelay(50);
21277
21278         wlc_phy_radio205x_vcocal_nphy(pi);
21279 }
21280
21281 static void
21282 wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21283                             const struct nphy_sfo_cfg *ci)
21284 {
21285         u16 val;
21286
21287         val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21288         if (CHSPEC_IS5G(chanspec) && !val) {
21289
21290                 val = R_REG(&pi->regs->psm_phy_hdr_param);
21291                 W_REG(&pi->regs->psm_phy_hdr_param,
21292                       (val | MAC_PHY_FORCE_CLK));
21293
21294                 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21295                            (BBCFG_RESETCCA | BBCFG_RESETRX));
21296
21297                 W_REG(&pi->regs->psm_phy_hdr_param, val);
21298
21299                 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21300         } else if (!CHSPEC_IS5G(chanspec) && val) {
21301
21302                 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21303
21304                 val = R_REG(&pi->regs->psm_phy_hdr_param);
21305                 W_REG(&pi->regs->psm_phy_hdr_param,
21306                       (val | MAC_PHY_FORCE_CLK));
21307
21308                 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21309                             (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
21310
21311                 W_REG(&pi->regs->psm_phy_hdr_param, val);
21312         }
21313
21314         write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21315         write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21316         write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21317
21318         write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21319         write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21320         write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21321
21322         if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21323                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21324
21325                 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21326         } else {
21327                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21328                                         NPHY_ClassifierCtrl_ofdm_en);
21329
21330                 if (CHSPEC_IS2G(chanspec))
21331                         and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21332         }
21333
21334         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21335                 wlc_phy_txpwr_fixpower_nphy(pi);
21336
21337         if (NREV_LT(pi->pubpi.phy_rev, 3))
21338                 wlc_phy_adjust_lnagaintbl_nphy(pi);
21339
21340         wlc_phy_txlpfbw_nphy(pi);
21341
21342         if (NREV_GE(pi->pubpi.phy_rev, 3)
21343             && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21344                 u8 spuravoid = 0;
21345
21346                 val = CHSPEC_CHANNEL(chanspec);
21347                 if (!CHSPEC_IS40(pi->radio_chanspec)) {
21348                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21349                                 if ((val == 13) || (val == 14) || (val == 153))
21350                                         spuravoid = 1;
21351                         } else if (((val >= 5) && (val <= 8)) || (val == 13)
21352                                    || (val == 14)) {
21353                                 spuravoid = 1;
21354                         }
21355                 } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21356                         if (val == 54)
21357                                 spuravoid = 1;
21358                 } else {
21359                         if (pi->nphy_aband_spurwar_en &&
21360                             ((val == 38) || (val == 102)
21361                              || (val == 118)))
21362                                 spuravoid = 1;
21363                 }
21364
21365                 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21366                         spuravoid = 1;
21367
21368                 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
21369                 si_pmu_spuravoid(pi->sh->sih, spuravoid);
21370                 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21371
21372                 if ((pi->sh->chip == BCM43224_CHIP_ID) ||
21373                     (pi->sh->chip == BCM43225_CHIP_ID)) {
21374
21375                         if (spuravoid == 1) {
21376
21377                                 W_REG(&pi->regs->tsf_clk_frac_l,
21378                                       0x5341);
21379                                 W_REG(&pi->regs->tsf_clk_frac_h,
21380                                       0x8);
21381                         } else {
21382
21383                                 W_REG(&pi->regs->tsf_clk_frac_l,
21384                                       0x8889);
21385                                 W_REG(&pi->regs->tsf_clk_frac_h,
21386                                       0x8);
21387                         }
21388                 }
21389
21390                 wlapi_bmac_core_phypll_reset(pi->sh->physhim);
21391
21392                 mod_phy_reg(pi, 0x01, (0x1 << 15),
21393                             ((spuravoid > 0) ? (0x1 << 15) : 0));
21394
21395                 wlc_phy_resetcca_nphy(pi);
21396
21397                 pi->phy_isspuravoid = (spuravoid > 0);
21398         }
21399
21400         if (NREV_LT(pi->pubpi.phy_rev, 7))
21401                 write_phy_reg(pi, 0x17e, 0x3830);
21402
21403         wlc_phy_spurwar_nphy(pi);
21404 }
21405
21406 void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21407 {
21408         int freq;
21409         const struct chan_info_nphy_radio2057 *t0 = NULL;
21410         const struct chan_info_nphy_radio205x *t1 = NULL;
21411         const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21412         const struct chan_info_nphy_2055 *t3 = NULL;
21413
21414         if (!wlc_phy_chan2freq_nphy
21415                     (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21416                 return;
21417
21418         wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21419
21420         if (CHSPEC_BW(chanspec) != pi->bw)
21421                 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21422
21423         if (CHSPEC_IS40(chanspec)) {
21424                 if (CHSPEC_SB_UPPER(chanspec)) {
21425                         or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21426                         if (NREV_GE(pi->pubpi.phy_rev, 7))
21427                                 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21428                 } else {
21429                         and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21430                         if (NREV_GE(pi->pubpi.phy_rev, 7))
21431                                 and_phy_reg(pi, 0x310,
21432                                             (~PRIM_SEL_UP20 & 0xffff));
21433                 }
21434         }
21435
21436         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21437                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21438
21439                         if ((pi->pubpi.radiorev <= 4)
21440                             || (pi->pubpi.radiorev == 6)) {
21441                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21442                                               0x2,
21443                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
21444                                                : 0));
21445                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21446                                               0x2,
21447                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
21448                                                : 0));
21449                         }
21450
21451                         wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21452                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
21453                                 (pi->pubpi.radiorev == 5) ?
21454                                 (const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21455                                 (const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21456
21457                 } else {
21458
21459                         mod_radio_reg(pi,
21460                                       RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21461                                       0x4,
21462                                       (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21463                         wlc_phy_chanspec_radio2056_setup(pi, t1);
21464
21465                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
21466                                 (const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21467                 }
21468
21469         } else {
21470
21471                 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21472                               (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21473                                : (0x05 << 4)));
21474
21475                 wlc_phy_chanspec_radio2055_setup(pi, t3);
21476                 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21477                                             (const struct nphy_sfo_cfg *)
21478                                              &(t3->PHY_BW1a));
21479         }
21480
21481 }
21482
21483 void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21484 {
21485         struct brcms_phy *pi = (struct brcms_phy *) ppi;
21486         u16 mask = 0xfc00;
21487         u32 mc = 0;
21488
21489         if (NREV_GE(pi->pubpi.phy_rev, 7))
21490                 return;
21491
21492         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21493                 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21494
21495                 if (lut_init == false)
21496                         return;
21497
21498                 if (pi->srom_fem2g.antswctrllut == 0) {
21499                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21500                                                  1, 0x02, 16, &v0);
21501                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21502                                                  1, 0x03, 16, &v1);
21503                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21504                                                  1, 0x08, 16, &v2);
21505                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21506                                                  1, 0x0C, 16, &v3);
21507                 }
21508
21509                 if (pi->srom_fem5g.antswctrllut == 0) {
21510                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21511                                                  1, 0x12, 16, &v0);
21512                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21513                                                  1, 0x13, 16, &v1);
21514                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21515                                                  1, 0x18, 16, &v2);
21516                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21517                                                  1, 0x1C, 16, &v3);
21518                 }
21519         } else {
21520
21521                 write_phy_reg(pi, 0xc8, 0x0);
21522                 write_phy_reg(pi, 0xc9, 0x0);
21523
21524                 ai_gpiocontrol(pi->sh->sih, mask, mask, GPIO_DRV_PRIORITY);
21525
21526                 mc = R_REG(&pi->regs->maccontrol);
21527                 mc &= ~MCTL_GPOUT_SEL_MASK;
21528                 W_REG(&pi->regs->maccontrol, mc);
21529
21530                 OR_REG(&pi->regs->psm_gpio_oe, mask);
21531
21532                 AND_REG(&pi->regs->psm_gpio_out, ~mask);
21533
21534                 if (lut_init) {
21535                         write_phy_reg(pi, 0xf8, 0x02d8);
21536                         write_phy_reg(pi, 0xf9, 0x0301);
21537                         write_phy_reg(pi, 0xfa, 0x02d8);
21538                         write_phy_reg(pi, 0xfb, 0x0301);
21539                 }
21540         }
21541 }
21542
21543 u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21544 {
21545         u16 curr_ctl, new_ctl;
21546         bool suspended = false;
21547
21548         if (D11REV_IS(pi->sh->corerev, 16)) {
21549                 suspended =
21550                         (R_REG(&pi->regs->maccontrol) & MCTL_EN_MAC) ?
21551                         false : true;
21552                 if (!suspended)
21553                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
21554         }
21555
21556         curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21557
21558         new_ctl = (curr_ctl & (~mask)) | (val & mask);
21559
21560         mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21561
21562         if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21563                 wlapi_enable_mac(pi->sh->physhim);
21564
21565         return new_ctl;
21566 }
21567
21568 void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21569 {
21570         u16 trigger_mask, status_mask;
21571         u16 orig_RfseqCoreActv;
21572
21573         switch (cmd) {
21574         case NPHY_RFSEQ_RX2TX:
21575                 trigger_mask = NPHY_RfseqTrigger_rx2tx;
21576                 status_mask = NPHY_RfseqStatus_rx2tx;
21577                 break;
21578         case NPHY_RFSEQ_TX2RX:
21579                 trigger_mask = NPHY_RfseqTrigger_tx2rx;
21580                 status_mask = NPHY_RfseqStatus_tx2rx;
21581                 break;
21582         case NPHY_RFSEQ_RESET2RX:
21583                 trigger_mask = NPHY_RfseqTrigger_reset2rx;
21584                 status_mask = NPHY_RfseqStatus_reset2rx;
21585                 break;
21586         case NPHY_RFSEQ_UPDATEGAINH:
21587                 trigger_mask = NPHY_RfseqTrigger_updategainh;
21588                 status_mask = NPHY_RfseqStatus_updategainh;
21589                 break;
21590         case NPHY_RFSEQ_UPDATEGAINL:
21591                 trigger_mask = NPHY_RfseqTrigger_updategainl;
21592                 status_mask = NPHY_RfseqStatus_updategainl;
21593                 break;
21594         case NPHY_RFSEQ_UPDATEGAINU:
21595                 trigger_mask = NPHY_RfseqTrigger_updategainu;
21596                 status_mask = NPHY_RfseqStatus_updategainu;
21597                 break;
21598         default:
21599                 return;
21600         }
21601
21602         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21603         or_phy_reg(pi, 0xa1,
21604                    (NPHY_RfseqMode_CoreActv_override |
21605                     NPHY_RfseqMode_Trigger_override));
21606         or_phy_reg(pi, 0xa3, trigger_mask);
21607         SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21608         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21609         WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21610 }
21611
21612 static void
21613 wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21614                                      u8 core_mask, u8 off)
21615 {
21616         u16 rfmxgain = 0, lpfgain = 0;
21617         u16 tgain = 0;
21618
21619         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21620
21621                 switch (cmd) {
21622                 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21623                         wlc_phy_rfctrl_override_nphy_rev7(
21624                                 pi, (0x1 << 5),
21625                                 value, core_mask, off,
21626                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21627                         wlc_phy_rfctrl_override_nphy_rev7(
21628                                 pi, (0x1 << 4), value,
21629                                 core_mask, off,
21630                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21631                         wlc_phy_rfctrl_override_nphy_rev7(
21632                                 pi, (0x1 << 3), value,
21633                                 core_mask, off,
21634                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21635                         break;
21636                 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21637                         wlc_phy_rfctrl_override_nphy_rev7(
21638                                 pi, (0x1 << 2),
21639                                 value, core_mask, off,
21640                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21641                         wlc_phy_rfctrl_override_nphy_rev7(
21642                                 pi, (0x1 << 1), value,
21643                                 core_mask, off,
21644                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21645                         wlc_phy_rfctrl_override_nphy_rev7(
21646                                 pi, (0x1 << 0), value,
21647                                 core_mask, off,
21648                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21649                         wlc_phy_rfctrl_override_nphy_rev7(
21650                                 pi, (0x1 << 1), value,
21651                                 core_mask, off,
21652                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21653                         wlc_phy_rfctrl_override_nphy_rev7(
21654                                 pi, (0x1 << 11), 0,
21655                                 core_mask, off,
21656                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21657                         break;
21658                 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21659                         wlc_phy_rfctrl_override_nphy_rev7(
21660                                 pi, (0x1 << 2),
21661                                 value, core_mask, off,
21662                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21663                         wlc_phy_rfctrl_override_nphy_rev7(
21664                                 pi, (0x1 << 1), value,
21665                                 core_mask, off,
21666                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21667                         wlc_phy_rfctrl_override_nphy_rev7(
21668                                 pi, (0x1 << 0), value,
21669                                 core_mask, off,
21670                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21671                         wlc_phy_rfctrl_override_nphy_rev7(
21672                                 pi, (0x1 << 2), value,
21673                                 core_mask, off,
21674                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21675                         wlc_phy_rfctrl_override_nphy_rev7(
21676                                 pi, (0x1 << 11), 1,
21677                                 core_mask, off,
21678                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21679                         break;
21680                 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21681                         rfmxgain = value & 0x000ff;
21682                         lpfgain = value & 0x0ff00;
21683                         lpfgain = lpfgain >> 8;
21684
21685                         wlc_phy_rfctrl_override_nphy_rev7(
21686                                 pi, (0x1 << 11),
21687                                 rfmxgain, core_mask,
21688                                 off,
21689                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21690                         wlc_phy_rfctrl_override_nphy_rev7(
21691                                 pi, (0x3 << 13),
21692                                 lpfgain, core_mask,
21693                                 off,
21694                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21695                         break;
21696                 case NPHY_REV7_RfctrlOverride_cmd_txgain:
21697                         tgain = value & 0x7fff;
21698                         lpfgain = value & 0x8000;
21699                         lpfgain = lpfgain >> 14;
21700
21701                         wlc_phy_rfctrl_override_nphy_rev7(
21702                                 pi, (0x1 << 12),
21703                                 tgain, core_mask, off,
21704                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21705                         wlc_phy_rfctrl_override_nphy_rev7(
21706                                 pi, (0x1 << 13),
21707                                 lpfgain, core_mask,
21708                                 off,
21709                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21710                         break;
21711                 }
21712         }
21713 }
21714
21715 static void
21716 wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21717                                u8 coresel, u8 rail, u8 rssi_type)
21718 {
21719         u16 valuetostuff;
21720
21721         offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21722                  NPHY_RSSICAL_MAXREAD : offset;
21723         offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21724                  -NPHY_RSSICAL_MAXREAD - 1 : offset;
21725
21726         valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21727
21728         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21729              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21730             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21731                 write_phy_reg(pi, 0x1a6, valuetostuff);
21732
21733         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21734              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21735             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21736                 write_phy_reg(pi, 0x1ac, valuetostuff);
21737
21738         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21739              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21740             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21741                 write_phy_reg(pi, 0x1b2, valuetostuff);
21742
21743         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21744              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21745             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21746                 write_phy_reg(pi, 0x1b8, valuetostuff);
21747
21748         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21749              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21750             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21751                 write_phy_reg(pi, 0x1a4, valuetostuff);
21752
21753         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21754              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21755             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21756                 write_phy_reg(pi, 0x1aa, valuetostuff);
21757
21758         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21759              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21760             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21761                 write_phy_reg(pi, 0x1b0, valuetostuff);
21762
21763         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21764              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21765             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21766                 write_phy_reg(pi, 0x1b6, valuetostuff);
21767
21768         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21769              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21770             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21771                 write_phy_reg(pi, 0x1a5, valuetostuff);
21772         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21773              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21774             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21775                 write_phy_reg(pi, 0x1ab, valuetostuff);
21776
21777         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21778              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21779             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21780                 write_phy_reg(pi, 0x1b1, valuetostuff);
21781
21782         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21783              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21784             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21785                 write_phy_reg(pi, 0x1b7, valuetostuff);
21786
21787         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21788              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21789             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21790                 write_phy_reg(pi, 0x1a7, valuetostuff);
21791         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21792              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21793             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21794                 write_phy_reg(pi, 0x1ad, valuetostuff);
21795         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21796              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21797             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21798                 write_phy_reg(pi, 0x1b3, valuetostuff);
21799         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21800              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21801             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21802                 write_phy_reg(pi, 0x1b9, valuetostuff);
21803
21804         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21805              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21806             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21807                 write_phy_reg(pi, 0x1a8, valuetostuff);
21808
21809         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21810              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21811             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21812                 write_phy_reg(pi, 0x1ae, valuetostuff);
21813
21814         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21815              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21816             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21817                 write_phy_reg(pi, 0x1b4, valuetostuff);
21818
21819         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21820              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21821             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21822                 write_phy_reg(pi, 0x1ba, valuetostuff);
21823
21824         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21825              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21826             (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21827                 write_phy_reg(pi, 0x1a9, valuetostuff);
21828         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21829              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21830             (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21831                 write_phy_reg(pi, 0x1b5, valuetostuff);
21832
21833         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21834              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21835             (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21836                 write_phy_reg(pi, 0x1af, valuetostuff);
21837
21838         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21839              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21840             (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21841                 write_phy_reg(pi, 0x1bb, valuetostuff);
21842 }
21843
21844 static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21845 {
21846         if (PHY_IPA(pi)) {
21847                 if (NREV_GE(pi->pubpi.phy_rev, 7))
21848                         write_radio_reg(pi,
21849                                         ((core == PHY_CORE_0) ?
21850                                          RADIO_2057_TX0_TX_SSI_MUX :
21851                                          RADIO_2057_TX1_TX_SSI_MUX),
21852                                         (CHSPEC_IS5G(pi->radio_chanspec) ?
21853                                         0xc : 0xe));
21854                 else
21855                         write_radio_reg(pi,
21856                                         RADIO_2056_TX_TX_SSI_MUX |
21857                                         ((core == PHY_CORE_0) ?
21858                                          RADIO_2056_TX0 : RADIO_2056_TX1),
21859                                         (CHSPEC_IS5G(pi->radio_chanspec) ?
21860                                         0xc : 0xe));
21861         } else {
21862                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21863                         write_radio_reg(pi,
21864                                         ((core == PHY_CORE_0) ?
21865                                          RADIO_2057_TX0_TX_SSI_MUX :
21866                                          RADIO_2057_TX1_TX_SSI_MUX),
21867                                         0x11);
21868
21869                         if (pi->pubpi.radioid == BCM2057_ID)
21870                                 write_radio_reg(pi,
21871                                                 RADIO_2057_IQTEST_SEL_PU, 0x1);
21872
21873                 } else {
21874                         write_radio_reg(pi,
21875                                         RADIO_2056_TX_TX_SSI_MUX |
21876                                         ((core == PHY_CORE_0) ?
21877                                          RADIO_2056_TX0 : RADIO_2056_TX1),
21878                                         0x11);
21879                 }
21880         }
21881 }
21882
21883 void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21884 {
21885         u16 mask, val;
21886         u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21887             startseq;
21888         u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21889             rfctrlovr_trigger_val;
21890         u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21891         u16 rfctrlcmd_val, rfctrlovr_val;
21892         u8 core;
21893
21894         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21895                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21896                         mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21897                         mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21898
21899                         mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21900                         mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21901
21902                         mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21903                         mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21904
21905                         mask = (0x1 << 2) |
21906                                (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21907                         mod_phy_reg(pi, 0xf9, mask, 0);
21908                         mod_phy_reg(pi, 0xfb, mask, 0);
21909
21910                 } else {
21911                         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21912                                 if (core_code == RADIO_MIMO_CORESEL_CORE1
21913                                     && core == PHY_CORE_1)
21914                                         continue;
21915                                 else if (core_code == RADIO_MIMO_CORESEL_CORE2
21916                                          && core == PHY_CORE_0)
21917                                         continue;
21918
21919                                 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21920                                             0x8f : 0xa5, (0x1 << 9), 1 << 9);
21921
21922                                 if (rssi_type == NPHY_RSSI_SEL_W1 ||
21923                                     rssi_type == NPHY_RSSI_SEL_W2 ||
21924                                     rssi_type == NPHY_RSSI_SEL_NB) {
21925                                         mod_phy_reg(pi,
21926                                                     (core ==
21927                                                      PHY_CORE_0) ? 0xa6 : 0xa7,
21928                                                     (0x3 << 8), 0);
21929
21930                                         mask = (0x1 << 2) |
21931                                                (0x1 << 3) |
21932                                                (0x1 << 4) | (0x1 << 5);
21933                                         mod_phy_reg(pi,
21934                                                     (core ==
21935                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
21936                                                     mask, 0);
21937
21938                                         if (rssi_type == NPHY_RSSI_SEL_W1) {
21939                                                 if (CHSPEC_IS5G(
21940                                                           pi->radio_chanspec)) {
21941                                                         mask = (0x1 << 2);
21942                                                         val = 1 << 2;
21943                                                 } else {
21944                                                         mask = (0x1 << 3);
21945                                                         val = 1 << 3;
21946                                                 }
21947                                         } else if (rssi_type ==
21948                                                    NPHY_RSSI_SEL_W2) {
21949                                                 mask = (0x1 << 4);
21950                                                 val = 1 << 4;
21951                                         } else {
21952                                                 mask = (0x1 << 5);
21953                                                 val = 1 << 5;
21954                                         }
21955                                         mod_phy_reg(pi,
21956                                                     (core ==
21957                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
21958                                                     mask, val);
21959
21960                                         mask = (0x1 << 5);
21961                                         val = 1 << 5;
21962                                         mod_phy_reg(pi, (core == PHY_CORE_0) ?
21963                                                     0xe5 : 0xe6, mask, val);
21964                                 } else {
21965                                         if (rssi_type == NPHY_RSSI_SEL_TBD) {
21966                                                 mask = (0x3 << 8);
21967                                                 val = 1 << 8;
21968                                                 mod_phy_reg(pi,
21969                                                             (core ==
21970                                                              PHY_CORE_0) ? 0xa6
21971                                                             : 0xa7, mask, val);
21972                                                 mask = (0x3 << 10);
21973                                                 val = 1 << 10;
21974                                                 mod_phy_reg(pi,
21975                                                             (core ==
21976                                                              PHY_CORE_0) ? 0xa6
21977                                                             : 0xa7, mask, val);
21978                                         } else if (rssi_type ==
21979                                                    NPHY_RSSI_SEL_IQ) {
21980                                                 mask = (0x3 << 8);
21981                                                 val = 2 << 8;
21982                                                 mod_phy_reg(pi,
21983                                                             (core ==
21984                                                              PHY_CORE_0) ? 0xa6
21985                                                             : 0xa7, mask, val);
21986                                                 mask = (0x3 << 10);
21987                                                 val = 2 << 10;
21988                                                 mod_phy_reg(pi,
21989                                                             (core ==
21990                                                              PHY_CORE_0) ? 0xa6
21991                                                             : 0xa7, mask, val);
21992                                         } else {
21993                                                 mask = (0x3 << 8);
21994                                                 val = 3 << 8;
21995                                                 mod_phy_reg(pi,
21996                                                             (core ==
21997                                                              PHY_CORE_0) ? 0xa6
21998                                                             : 0xa7, mask, val);
21999                                                 mask = (0x3 << 10);
22000                                                 val = 3 << 10;
22001                                                 mod_phy_reg(pi,
22002                                                             (core ==
22003                                                              PHY_CORE_0) ? 0xa6
22004                                                             : 0xa7, mask, val);
22005                                                 brcms_phy_wr_tx_mux(pi, core);
22006                                                 afectrlovr_rssi_val = 1 << 9;
22007                                                 mod_phy_reg(pi,
22008                                                            (core ==
22009                                                             PHY_CORE_0) ? 0x8f
22010                                                            : 0xa5, (0x1 << 9),
22011                                                            afectrlovr_rssi_val);
22012                                         }
22013                                 }
22014                         }
22015                 }
22016         } else {
22017
22018                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
22019                     (rssi_type == NPHY_RSSI_SEL_W2) ||
22020                     (rssi_type == NPHY_RSSI_SEL_NB))
22021                         val = 0x0;
22022                 else if (rssi_type == NPHY_RSSI_SEL_TBD)
22023                         val = 0x1;
22024                 else if (rssi_type == NPHY_RSSI_SEL_IQ)
22025                         val = 0x2;
22026                 else
22027                         val = 0x3;
22028
22029                 mask = ((0x3 << 12) | (0x3 << 14));
22030                 val = (val << 12) | (val << 14);
22031                 mod_phy_reg(pi, 0xa6, mask, val);
22032                 mod_phy_reg(pi, 0xa7, mask, val);
22033
22034                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
22035                     (rssi_type == NPHY_RSSI_SEL_W2) ||
22036                     (rssi_type == NPHY_RSSI_SEL_NB)) {
22037                         if (rssi_type == NPHY_RSSI_SEL_W1)
22038                                 val = 0x1;
22039                         if (rssi_type == NPHY_RSSI_SEL_W2)
22040                                 val = 0x2;
22041                         if (rssi_type == NPHY_RSSI_SEL_NB)
22042                                 val = 0x3;
22043
22044                         mask = (0x3 << 4);
22045                         val = (val << 4);
22046                         mod_phy_reg(pi, 0x7a, mask, val);
22047                         mod_phy_reg(pi, 0x7d, mask, val);
22048                 }
22049
22050                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
22051                         afectrlovr_rssi_val = 0;
22052                         rfctrlcmd_rxen_val = 0;
22053                         rfctrlcmd_coresel_val = 0;
22054                         rfctrlovr_rssi_val = 0;
22055                         rfctrlovr_rxen_val = 0;
22056                         rfctrlovr_coresel_val = 0;
22057                         rfctrlovr_trigger_val = 0;
22058                         startseq = 0;
22059                 } else {
22060                         afectrlovr_rssi_val = 1;
22061                         rfctrlcmd_rxen_val = 1;
22062                         rfctrlcmd_coresel_val = core_code;
22063                         rfctrlovr_rssi_val = 1;
22064                         rfctrlovr_rxen_val = 1;
22065                         rfctrlovr_coresel_val = 1;
22066                         rfctrlovr_trigger_val = 1;
22067                         startseq = 1;
22068                 }
22069
22070                 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
22071                 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
22072                                        12) | (afectrlovr_rssi_val << 13);
22073                 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
22074                             afectrlovr_rssi_val);
22075
22076                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
22077                     (rssi_type == NPHY_RSSI_SEL_W2) ||
22078                     (rssi_type == NPHY_RSSI_SEL_NB)) {
22079                         rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
22080                         rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
22081                                         (rfctrlcmd_coresel_val << 3);
22082
22083                         rfctrlovr_mask = ((0x1 << 5) |
22084                                           (0x1 << 12) |
22085                                           (0x1 << 1) | (0x1 << 0));
22086                         rfctrlovr_val = (rfctrlovr_rssi_val <<
22087                                          5) |
22088                                         (rfctrlovr_rxen_val << 12) |
22089                                         (rfctrlovr_coresel_val << 1) |
22090                                         (rfctrlovr_trigger_val << 0);
22091
22092                         mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
22093                         mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
22094
22095                         mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
22096                         udelay(20);
22097
22098                         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22099                 }
22100         }
22101 }
22102
22103 int
22104 wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
22105                        u8 nsamps)
22106 {
22107         s16 rssi0, rssi1;
22108         u16 afectrlCore1_save = 0;
22109         u16 afectrlCore2_save = 0;
22110         u16 afectrlOverride1_save = 0;
22111         u16 afectrlOverride2_save = 0;
22112         u16 rfctrlOverrideAux0_save = 0;
22113         u16 rfctrlOverrideAux1_save = 0;
22114         u16 rfctrlMiscReg1_save = 0;
22115         u16 rfctrlMiscReg2_save = 0;
22116         u16 rfctrlcmd_save = 0;
22117         u16 rfctrloverride_save = 0;
22118         u16 rfctrlrssiothers1_save = 0;
22119         u16 rfctrlrssiothers2_save = 0;
22120         s8 tmp_buf[4];
22121         u8 ctr = 0, samp = 0;
22122         s32 rssi_out_val;
22123         u16 gpiosel_orig;
22124
22125         afectrlCore1_save = read_phy_reg(pi, 0xa6);
22126         afectrlCore2_save = read_phy_reg(pi, 0xa7);
22127         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22128                 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22129                 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22130                 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
22131                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22132                 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22133                 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22134         } else {
22135                 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
22136                 rfctrlcmd_save = read_phy_reg(pi, 0x78);
22137                 rfctrloverride_save = read_phy_reg(pi, 0xec);
22138                 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
22139                 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
22140         }
22141
22142         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22143
22144         gpiosel_orig = read_phy_reg(pi, 0xca);
22145         if (NREV_LT(pi->pubpi.phy_rev, 2))
22146                 write_phy_reg(pi, 0xca, 5);
22147
22148         for (ctr = 0; ctr < 4; ctr++)
22149                 rssi_buf[ctr] = 0;
22150
22151         for (samp = 0; samp < nsamps; samp++) {
22152                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
22153                         rssi0 = read_phy_reg(pi, 0x1c9);
22154                         rssi1 = read_phy_reg(pi, 0x1ca);
22155                 } else {
22156                         rssi0 = read_phy_reg(pi, 0x219);
22157                         rssi1 = read_phy_reg(pi, 0x21a);
22158                 }
22159
22160                 ctr = 0;
22161                 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
22162                 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
22163                 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
22164                 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
22165
22166                 for (ctr = 0; ctr < 4; ctr++)
22167                         rssi_buf[ctr] += tmp_buf[ctr];
22168
22169         }
22170
22171         rssi_out_val = rssi_buf[3] & 0xff;
22172         rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
22173         rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
22174         rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
22175
22176         if (NREV_LT(pi->pubpi.phy_rev, 2))
22177                 write_phy_reg(pi, 0xca, gpiosel_orig);
22178
22179         write_phy_reg(pi, 0xa6, afectrlCore1_save);
22180         write_phy_reg(pi, 0xa7, afectrlCore2_save);
22181         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22182                 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
22183                 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
22184                 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
22185                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22186                 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
22187                 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
22188         } else {
22189                 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
22190                 write_phy_reg(pi, 0x78, rfctrlcmd_save);
22191                 write_phy_reg(pi, 0xec, rfctrloverride_save);
22192                 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
22193                 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
22194         }
22195
22196         return rssi_out_val;
22197 }
22198
22199 s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
22200 {
22201         u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
22202         u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
22203         u16 pwrdet_rxtx_core1_save;
22204         u16 pwrdet_rxtx_core2_save;
22205         u16 afectrlCore1_save;
22206         u16 afectrlCore2_save;
22207         u16 afectrlOverride_save;
22208         u16 afectrlOverride2_save;
22209         u16 pd_pll_ts_save;
22210         u16 gpioSel_save;
22211         s32 radio_temp[4];
22212         s32 radio_temp2[4];
22213         u16 syn_tempprocsense_save;
22214         s16 offset = 0;
22215
22216         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22217                 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
22218                 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
22219                 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
22220                 s32 auxADC_Vl;
22221                 u16 RfctrlOverride5_save, RfctrlOverride6_save;
22222                 u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
22223                 u16 RSSIMultCoef0QPowerDet_save;
22224                 u16 tempsense_Rcal;
22225
22226                 syn_tempprocsense_save =
22227                         read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
22228
22229                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22230                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22231                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22232                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22233                 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
22234                 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22235                 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22236                 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22237                 RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22238
22239                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22240                                         &auxADC_Vmid_save);
22241                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22242                                         &auxADC_Av_save);
22243                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22244                                         &auxADC_rssi_ctrlL_save);
22245                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22246                                         &auxADC_rssi_ctrlH_save);
22247
22248                 write_phy_reg(pi, 0x1ae, 0x0);
22249
22250                 auxADC_rssi_ctrlL = 0x0;
22251                 auxADC_rssi_ctrlH = 0x20;
22252                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22253                                          &auxADC_rssi_ctrlL);
22254                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22255                                          &auxADC_rssi_ctrlH);
22256
22257                 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22258
22259                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22260                                 tempsense_Rcal | 0x01);
22261
22262                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22263                                                   1, 0, 0,
22264                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
22265                 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22266                 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22267                 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22268                 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22269
22270                 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22271                 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22272                 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22273                 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22274                 udelay(5);
22275                 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22276                 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22277                 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22278                 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22279                 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22280                 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22281                 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22282                 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22283                 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22284                 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22285
22286                 auxADC_Vmid = 0xA3;
22287                 auxADC_Av = 0x0;
22288                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22289                                          &auxADC_Vmid);
22290                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22291                                          &auxADC_Av);
22292
22293                 udelay(3);
22294
22295                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22296                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22297                                 tempsense_Rcal | 0x03);
22298
22299                 udelay(5);
22300                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22301
22302                 auxADC_Av = 0x7;
22303                 if (radio_temp[1] + radio_temp2[1] < -30) {
22304                         auxADC_Vmid = 0x45;
22305                         auxADC_Vl = 263;
22306                 } else if (radio_temp[1] + radio_temp2[1] < -9) {
22307                         auxADC_Vmid = 0x200;
22308                         auxADC_Vl = 467;
22309                 } else if (radio_temp[1] + radio_temp2[1] < 11) {
22310                         auxADC_Vmid = 0x266;
22311                         auxADC_Vl = 634;
22312                 } else {
22313                         auxADC_Vmid = 0x2D5;
22314                         auxADC_Vl = 816;
22315                 }
22316
22317                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22318                                          &auxADC_Vmid);
22319                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22320                                          &auxADC_Av);
22321
22322                 udelay(3);
22323
22324                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22325                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22326                                 tempsense_Rcal | 0x01);
22327
22328                 udelay(5);
22329                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22330
22331                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22332                                 syn_tempprocsense_save);
22333
22334                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22335                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22336                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22337                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22338                 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22339                 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22340                 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22341                 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22342                 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22343
22344                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22345                                          &auxADC_Vmid_save);
22346                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22347                                          &auxADC_Av_save);
22348                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22349                                          &auxADC_rssi_ctrlL_save);
22350                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22351                                          &auxADC_rssi_ctrlH_save);
22352
22353                 radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22354                                  + 82 * (auxADC_Vl) - 28861 +
22355                                  128) / 256;
22356
22357                 offset = (s16) pi->phy_tempsense_offset;
22358
22359         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22360                 syn_tempprocsense_save =
22361                         read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22362
22363                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22364                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22365                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22366                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22367                 gpioSel_save = read_phy_reg(pi, 0xca);
22368
22369                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22370
22371                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22372                 if (NREV_LT(pi->pubpi.phy_rev, 7))
22373                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22374
22375                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22376                 if (NREV_GE(pi->pubpi.phy_rev, 7))
22377                         write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22378                 else
22379                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22380
22381                 radio_temp[0] =
22382                         (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22383
22384                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22385                                 syn_tempprocsense_save);
22386
22387                 write_phy_reg(pi, 0xca, gpioSel_save);
22388                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22389                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22390                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22391                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22392
22393                 offset = (s16) pi->phy_tempsense_offset;
22394         } else {
22395
22396                 pwrdet_rxtx_core1_save =
22397                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22398                 pwrdet_rxtx_core2_save =
22399                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22400                 core1_txrf_iqcal1_save =
22401                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22402                 core1_txrf_iqcal2_save =
22403                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22404                 core2_txrf_iqcal1_save =
22405                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22406                 core2_txrf_iqcal2_save =
22407                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22408                 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22409
22410                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22411                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22412                 afectrlOverride_save = read_phy_reg(pi, 0xa5);
22413                 gpioSel_save = read_phy_reg(pi, 0xca);
22414
22415                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22416                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22417                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22418                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22419                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22420                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22421                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22422
22423                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22424                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22425
22426                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22427                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22428
22429                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22430                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22431
22432                 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22433                 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22434                 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22435                 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22436
22437                 radio_temp[0] =
22438                         (radio_temp[0] + radio_temp[1] + radio_temp[2] +
22439                          radio_temp[3]);
22440
22441                 radio_temp[0] =
22442                         (radio_temp[0] +
22443                          (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22444
22445                 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22446
22447                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22448                                 pwrdet_rxtx_core1_save);
22449                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22450                                 pwrdet_rxtx_core2_save);
22451                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22452                                 core1_txrf_iqcal1_save);
22453                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22454                                 core2_txrf_iqcal1_save);
22455                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22456                                 core1_txrf_iqcal2_save);
22457                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22458                                 core2_txrf_iqcal2_save);
22459                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22460
22461                 write_phy_reg(pi, 0xca, gpioSel_save);
22462                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22463                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22464                 write_phy_reg(pi, 0xa5, afectrlOverride_save);
22465         }
22466
22467         return (s16) radio_temp[0] + offset;
22468 }
22469
22470 static void
22471 wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22472 {
22473         u8 core;
22474
22475         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22476                 if (rssi_type == NPHY_RSSI_SEL_NB) {
22477                         if (core == PHY_CORE_0) {
22478                                 mod_radio_reg(pi,
22479                                               RADIO_2055_CORE1_B0_NBRSSI_VCM,
22480                                               RADIO_2055_NBRSSI_VCM_I_MASK,
22481                                               vcm_buf[2 *
22482                                                       core] <<
22483                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
22484                                 mod_radio_reg(pi,
22485                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22486                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
22487                                               vcm_buf[2 * core +
22488                                                       1] <<
22489                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22490                         } else {
22491                                 mod_radio_reg(pi,
22492                                               RADIO_2055_CORE2_B0_NBRSSI_VCM,
22493                                               RADIO_2055_NBRSSI_VCM_I_MASK,
22494                                               vcm_buf[2 *
22495                                                       core] <<
22496                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
22497                                 mod_radio_reg(pi,
22498                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22499                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
22500                                               vcm_buf[2 * core +
22501                                                       1] <<
22502                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22503                         }
22504                 } else {
22505                         if (core == PHY_CORE_0)
22506                                 mod_radio_reg(pi,
22507                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22508                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
22509                                               vcm_buf[2 *
22510                                                       core] <<
22511                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22512                         else
22513                                 mod_radio_reg(pi,
22514                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22515                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
22516                                               vcm_buf[2 *
22517                                                       core] <<
22518                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22519                 }
22520         }
22521 }
22522
22523 static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22524 {
22525         u16 classif_state;
22526         u16 clip_state[2];
22527         u16 clip_off[] = { 0xffff, 0xffff };
22528         s32 target_code;
22529         u8 vcm, min_vcm;
22530         u8 vcm_final = 0;
22531         u8 result_idx;
22532         s32 poll_results[8][4] = {
22533                 {0, 0, 0, 0},
22534                 {0, 0, 0, 0},
22535                 {0, 0, 0, 0},
22536                 {0, 0, 0, 0},
22537                 {0, 0, 0, 0},
22538                 {0, 0, 0, 0},
22539                 {0, 0, 0, 0},
22540                 {0, 0, 0, 0}
22541         };
22542         s32 poll_result_core[4] = { 0, 0, 0, 0 };
22543         s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22544         s32 fine_digital_offset[4];
22545         s32 poll_results_min[4] = { 0, 0, 0, 0 };
22546         s32 min_poll;
22547         u8 vcm_level_max;
22548         u8 core;
22549         u8 wb_cnt;
22550         u8 rssi_type;
22551         u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22552         u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22553         u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22554         u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22555         u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22556         u16 NPHY_RfctrlCmd_save;
22557         u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22558         u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22559         u8 rxcore_state;
22560         u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22561         u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22562         u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22563         u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22564
22565         NPHY_REV7_RfctrlOverride3_save =
22566                 NPHY_REV7_RfctrlOverride4_save =
22567                 NPHY_REV7_RfctrlOverride5_save =
22568                 NPHY_REV7_RfctrlOverride6_save =
22569                 NPHY_REV7_RfctrlMiscReg3_save =
22570                 NPHY_REV7_RfctrlMiscReg4_save =
22571                 NPHY_REV7_RfctrlMiscReg5_save =
22572                 NPHY_REV7_RfctrlMiscReg6_save = 0;
22573
22574         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22575         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22576         wlc_phy_clip_det_nphy(pi, 0, clip_state);
22577         wlc_phy_clip_det_nphy(pi, 1, clip_off);
22578
22579         NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22580         NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22581         NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22582         NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22583         NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22584         NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22585         NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22586         NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22587         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22588                 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22589                 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22590                 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22591                 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22592         }
22593         NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22594         NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22595         NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22596         NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22597         NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22598         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22599                 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22600                 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22601                 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22602                 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22603         }
22604         NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22605         NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22606
22607         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22608                                          RADIO_MIMO_CORESEL_ALLRXTX);
22609         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22610                                          RADIO_MIMO_CORESEL_ALLRXTX);
22611
22612         if (NREV_GE(pi->pubpi.phy_rev, 7))
22613                 wlc_phy_rfctrl_override_1tomany_nphy(
22614                         pi,
22615                         NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22616                         0, 0, 0);
22617         else
22618                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22619
22620         if (NREV_GE(pi->pubpi.phy_rev, 7))
22621                 wlc_phy_rfctrl_override_1tomany_nphy(
22622                         pi,
22623                         NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22624                         1, 0, 0);
22625         else
22626                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22627
22628         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22629                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22630                                                   1, 0, 0,
22631                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
22632                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22633                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
22634         } else {
22635                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22636                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22637         }
22638
22639         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22640                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22641                         wlc_phy_rfctrl_override_nphy_rev7(
22642                                 pi, (0x1 << 5),
22643                                 0, 0, 0,
22644                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22645                         wlc_phy_rfctrl_override_nphy_rev7(
22646                                 pi, (0x1 << 4), 1, 0,
22647                                 0,
22648                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22649                 } else {
22650                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22651                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22652                 }
22653
22654         } else {
22655                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22656                         wlc_phy_rfctrl_override_nphy_rev7(
22657                                 pi, (0x1 << 4),
22658                                 0, 0, 0,
22659                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22660                         wlc_phy_rfctrl_override_nphy_rev7(
22661                                 pi, (0x1 << 5), 1, 0,
22662                                 0,
22663                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22664                 } else {
22665                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22666                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22667                 }
22668         }
22669
22670         rxcore_state = wlc_phy_rxcore_getstate_nphy(
22671                 (struct brcms_phy_pub *) pi);
22672
22673         vcm_level_max = 8;
22674
22675         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22676
22677                 if ((rxcore_state & (1 << core)) == 0)
22678                         continue;
22679
22680                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22681                                                core ==
22682                                                PHY_CORE_0 ?
22683                                                RADIO_MIMO_CORESEL_CORE1 :
22684                                                RADIO_MIMO_CORESEL_CORE2,
22685                                                NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22686                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22687                                                core ==
22688                                                PHY_CORE_0 ?
22689                                                RADIO_MIMO_CORESEL_CORE1 :
22690                                                RADIO_MIMO_CORESEL_CORE2,
22691                                                NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22692
22693                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22694                         if (NREV_GE(pi->pubpi.phy_rev, 7))
22695                                 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22696                                               RADIO_2057_NB_MASTER_CORE0 :
22697                                               RADIO_2057_NB_MASTER_CORE1,
22698                                               RADIO_2057_VCM_MASK, vcm);
22699                         else
22700                                 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22701                                               ((core ==
22702                                                 PHY_CORE_0) ? RADIO_2056_RX0 :
22703                                                RADIO_2056_RX1),
22704                                               RADIO_2056_VCM_MASK,
22705                                               vcm << RADIO_2056_RSSI_VCM_SHIFT);
22706
22707                         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22708                                                &poll_results[vcm][0],
22709                                                NPHY_RSSICAL_NPOLL);
22710                 }
22711
22712                 for (result_idx = 0; result_idx < 4; result_idx++) {
22713                         if ((core == result_idx / 2) &&
22714                             (result_idx % 2 == 0)) {
22715
22716                                 min_d = NPHY_RSSICAL_MAXD;
22717                                 min_vcm = 0;
22718                                 min_poll =
22719                                         NPHY_RSSICAL_MAXREAD *
22720                                         NPHY_RSSICAL_NPOLL + 1;
22721                                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22722                                         curr_d =
22723                                                 poll_results[vcm][result_idx] *
22724                                                 poll_results[vcm][result_idx] +
22725                                                 poll_results[vcm][result_idx +
22726                                                                   1] *
22727                                                 poll_results[vcm][result_idx +
22728                                                                   1];
22729                                         if (curr_d < min_d) {
22730                                                 min_d = curr_d;
22731                                                 min_vcm = vcm;
22732                                         }
22733                                         if (poll_results[vcm][result_idx] <
22734                                             min_poll)
22735                                                 min_poll =
22736                                                         poll_results[vcm]
22737                                                         [result_idx];
22738                                 }
22739                                 vcm_final = min_vcm;
22740                                 poll_results_min[result_idx] = min_poll;
22741                         }
22742                 }
22743
22744                 if (NREV_GE(pi->pubpi.phy_rev, 7))
22745                         mod_radio_reg(pi, (core == PHY_CORE_0) ?
22746                                       RADIO_2057_NB_MASTER_CORE0 :
22747                                       RADIO_2057_NB_MASTER_CORE1,
22748                                       RADIO_2057_VCM_MASK, vcm_final);
22749                 else
22750                         mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22751                                       ((core ==
22752                                         PHY_CORE_0) ? RADIO_2056_RX0 :
22753                                        RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22754                                       vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22755
22756                 for (result_idx = 0; result_idx < 4; result_idx++) {
22757                         if (core == result_idx / 2) {
22758                                 fine_digital_offset[result_idx] =
22759                                         (NPHY_RSSICAL_NB_TARGET *
22760                                          NPHY_RSSICAL_NPOLL) -
22761                                         poll_results[vcm_final][result_idx];
22762                                 if (fine_digital_offset[result_idx] < 0) {
22763                                         fine_digital_offset[result_idx] =
22764                                                 abs(fine_digital_offset
22765                                                     [result_idx]);
22766                                         fine_digital_offset[result_idx] +=
22767                                                 (NPHY_RSSICAL_NPOLL / 2);
22768                                         fine_digital_offset[result_idx] /=
22769                                                 NPHY_RSSICAL_NPOLL;
22770                                         fine_digital_offset[result_idx] =
22771                                                 -fine_digital_offset[
22772                                                                     result_idx];
22773                                 } else {
22774                                         fine_digital_offset[result_idx] +=
22775                                                 (NPHY_RSSICAL_NPOLL / 2);
22776                                         fine_digital_offset[result_idx] /=
22777                                                 NPHY_RSSICAL_NPOLL;
22778                                 }
22779
22780                                 if (poll_results_min[result_idx] ==
22781                                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22782                                         fine_digital_offset[result_idx] =
22783                                                 (NPHY_RSSICAL_NB_TARGET -
22784                                                  NPHY_RSSICAL_MAXREAD - 1);
22785
22786                                 wlc_phy_scale_offset_rssi_nphy(
22787                                         pi, 0x0,
22788                                         (s8)
22789                                         fine_digital_offset
22790                                         [result_idx],
22791                                         (result_idx / 2 == 0) ?
22792                                         RADIO_MIMO_CORESEL_CORE1 :
22793                                         RADIO_MIMO_CORESEL_CORE2,
22794                                         (result_idx % 2 == 0) ?
22795                                         NPHY_RAIL_I : NPHY_RAIL_Q,
22796                                         NPHY_RSSI_SEL_NB);
22797                         }
22798                 }
22799
22800         }
22801
22802         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22803
22804                 if ((rxcore_state & (1 << core)) == 0)
22805                         continue;
22806
22807                 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22808                         if (wb_cnt == 0) {
22809                                 rssi_type = NPHY_RSSI_SEL_W1;
22810                                 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22811                         } else {
22812                                 rssi_type = NPHY_RSSI_SEL_W2;
22813                                 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22814                         }
22815
22816                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22817                                                        core ==
22818                                                        PHY_CORE_0 ?
22819                                                        RADIO_MIMO_CORESEL_CORE1
22820                                                        :
22821                                                        RADIO_MIMO_CORESEL_CORE2,
22822                                                        NPHY_RAIL_I, rssi_type);
22823                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22824                                                        core ==
22825                                                        PHY_CORE_0 ?
22826                                                        RADIO_MIMO_CORESEL_CORE1
22827                                                        :
22828                                                        RADIO_MIMO_CORESEL_CORE2,
22829                                                        NPHY_RAIL_Q, rssi_type);
22830
22831                         wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22832                                                NPHY_RSSICAL_NPOLL);
22833
22834                         for (result_idx = 0; result_idx < 4; result_idx++) {
22835                                 if (core == result_idx / 2) {
22836                                         fine_digital_offset[result_idx] =
22837                                                 (target_code *
22838                                                  NPHY_RSSICAL_NPOLL) -
22839                                                 poll_result_core[result_idx];
22840                                         if (fine_digital_offset[result_idx] <
22841                                             0) {
22842                                                 fine_digital_offset[result_idx]
22843                                                         = abs(
22844                                                             fine_digital_offset
22845                                                             [result_idx]);
22846                                                 fine_digital_offset[result_idx]
22847                                                         += (NPHY_RSSICAL_NPOLL
22848                                                             / 2);
22849                                                 fine_digital_offset[result_idx]
22850                                                         /= NPHY_RSSICAL_NPOLL;
22851                                                 fine_digital_offset[result_idx]
22852                                                         = -fine_digital_offset
22853                                                                 [result_idx];
22854                                         } else {
22855                                                 fine_digital_offset[result_idx]
22856                                                         += (NPHY_RSSICAL_NPOLL
22857                                                             / 2);
22858                                                 fine_digital_offset[result_idx]
22859                                                         /= NPHY_RSSICAL_NPOLL;
22860                                         }
22861
22862                                         wlc_phy_scale_offset_rssi_nphy(
22863                                                 pi, 0x0,
22864                                                 (s8)
22865                                                 fine_digital_offset
22866                                                 [core *
22867                                                  2],
22868                                                 (core == PHY_CORE_0) ?
22869                                                 RADIO_MIMO_CORESEL_CORE1 :
22870                                                 RADIO_MIMO_CORESEL_CORE2,
22871                                                 (result_idx % 2 == 0) ?
22872                                                 NPHY_RAIL_I :
22873                                                 NPHY_RAIL_Q,
22874                                                 rssi_type);
22875                                 }
22876                         }
22877
22878                 }
22879         }
22880
22881         write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22882         write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22883
22884         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22885
22886         mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22887         mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22888         mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22889
22890         mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22891         mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22892         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22893
22894         write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22895         write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22896         write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22897         write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22898         write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22899         write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22900         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22901                 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22902                 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22903                 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22904                 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22905         }
22906         write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22907         write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22908         write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22909         write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22910         write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22911         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22912                 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22913                 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22914                 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22915                 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22916         }
22917         write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22918         write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22919
22920         if (CHSPEC_IS2G(pi->radio_chanspec)) {
22921                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22922                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22923                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22924                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22925                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22926                 } else {
22927                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22928                                 read_radio_reg(pi,
22929                                                RADIO_2056_RX_RSSI_MISC |
22930                                                RADIO_2056_RX0);
22931                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22932                                 read_radio_reg(pi,
22933                                                RADIO_2056_RX_RSSI_MISC |
22934                                                RADIO_2056_RX1);
22935                 }
22936
22937                 pi->rssical_cache.rssical_phyregs_2G[0] =
22938                         read_phy_reg(pi, 0x1a6);
22939                 pi->rssical_cache.rssical_phyregs_2G[1] =
22940                         read_phy_reg(pi, 0x1ac);
22941                 pi->rssical_cache.rssical_phyregs_2G[2] =
22942                         read_phy_reg(pi, 0x1b2);
22943                 pi->rssical_cache.rssical_phyregs_2G[3] =
22944                         read_phy_reg(pi, 0x1b8);
22945                 pi->rssical_cache.rssical_phyregs_2G[4] =
22946                         read_phy_reg(pi, 0x1a4);
22947                 pi->rssical_cache.rssical_phyregs_2G[5] =
22948                         read_phy_reg(pi, 0x1aa);
22949                 pi->rssical_cache.rssical_phyregs_2G[6] =
22950                         read_phy_reg(pi, 0x1b0);
22951                 pi->rssical_cache.rssical_phyregs_2G[7] =
22952                         read_phy_reg(pi, 0x1b6);
22953                 pi->rssical_cache.rssical_phyregs_2G[8] =
22954                         read_phy_reg(pi, 0x1a5);
22955                 pi->rssical_cache.rssical_phyregs_2G[9] =
22956                         read_phy_reg(pi, 0x1ab);
22957                 pi->rssical_cache.rssical_phyregs_2G[10] =
22958                         read_phy_reg(pi, 0x1b1);
22959                 pi->rssical_cache.rssical_phyregs_2G[11] =
22960                         read_phy_reg(pi, 0x1b7);
22961
22962                 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22963         } else {
22964                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22965                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22966                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22967                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22968                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22969                 } else {
22970                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22971                                 read_radio_reg(pi,
22972                                                RADIO_2056_RX_RSSI_MISC |
22973                                                RADIO_2056_RX0);
22974                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22975                                 read_radio_reg(pi,
22976                                                RADIO_2056_RX_RSSI_MISC |
22977                                                RADIO_2056_RX1);
22978                 }
22979
22980                 pi->rssical_cache.rssical_phyregs_5G[0] =
22981                         read_phy_reg(pi, 0x1a6);
22982                 pi->rssical_cache.rssical_phyregs_5G[1] =
22983                         read_phy_reg(pi, 0x1ac);
22984                 pi->rssical_cache.rssical_phyregs_5G[2] =
22985                         read_phy_reg(pi, 0x1b2);
22986                 pi->rssical_cache.rssical_phyregs_5G[3] =
22987                         read_phy_reg(pi, 0x1b8);
22988                 pi->rssical_cache.rssical_phyregs_5G[4] =
22989                         read_phy_reg(pi, 0x1a4);
22990                 pi->rssical_cache.rssical_phyregs_5G[5] =
22991                         read_phy_reg(pi, 0x1aa);
22992                 pi->rssical_cache.rssical_phyregs_5G[6] =
22993                         read_phy_reg(pi, 0x1b0);
22994                 pi->rssical_cache.rssical_phyregs_5G[7] =
22995                         read_phy_reg(pi, 0x1b6);
22996                 pi->rssical_cache.rssical_phyregs_5G[8] =
22997                         read_phy_reg(pi, 0x1a5);
22998                 pi->rssical_cache.rssical_phyregs_5G[9] =
22999                         read_phy_reg(pi, 0x1ab);
23000                 pi->rssical_cache.rssical_phyregs_5G[10] =
23001                         read_phy_reg(pi, 0x1b1);
23002                 pi->rssical_cache.rssical_phyregs_5G[11] =
23003                         read_phy_reg(pi, 0x1b7);
23004
23005                 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
23006         }
23007
23008         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
23009         wlc_phy_clip_det_nphy(pi, 1, clip_state);
23010 }
23011
23012 static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
23013 {
23014         s32 target_code;
23015         u16 classif_state;
23016         u16 clip_state[2];
23017         u16 rssi_ctrl_state[2], pd_state[2];
23018         u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
23019         u16 rfctrlintc_override_val;
23020         u16 clip_off[] = { 0xffff, 0xffff };
23021         u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
23022         u8 vcm, min_vcm, vcm_tmp[4];
23023         u8 vcm_final[4] = { 0, 0, 0, 0 };
23024         u8 result_idx, ctr;
23025         s32 poll_results[4][4] = {
23026                 {0, 0, 0, 0},
23027                 {0, 0, 0, 0},
23028                 {0, 0, 0, 0},
23029                 {0, 0, 0, 0}
23030         };
23031         s32 poll_miniq[4][2] = {
23032                 {0, 0},
23033                 {0, 0},
23034                 {0, 0},
23035                 {0, 0}
23036         };
23037         s32 min_d, curr_d;
23038         s32 fine_digital_offset[4];
23039         s32 poll_results_min[4] = { 0, 0, 0, 0 };
23040         s32 min_poll;
23041
23042         switch (rssi_type) {
23043         case NPHY_RSSI_SEL_NB:
23044                 target_code = NPHY_RSSICAL_NB_TARGET;
23045                 break;
23046         case NPHY_RSSI_SEL_W1:
23047                 target_code = NPHY_RSSICAL_W1_TARGET;
23048                 break;
23049         case NPHY_RSSI_SEL_W2:
23050                 target_code = NPHY_RSSICAL_W2_TARGET;
23051                 break;
23052         default:
23053                 return;
23054                 break;
23055         }
23056
23057         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
23058         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
23059         wlc_phy_clip_det_nphy(pi, 0, clip_state);
23060         wlc_phy_clip_det_nphy(pi, 1, clip_off);
23061
23062         rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
23063         rfctrlintc_override_val =
23064                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
23065
23066         rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
23067         rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
23068         write_phy_reg(pi, 0x91, rfctrlintc_override_val);
23069         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
23070
23071         rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
23072         rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
23073         write_phy_reg(pi, 0x92, rfctrlintc_override_val);
23074         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
23075
23076         pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
23077                   RADIO_2055_WBRSSI_G2_PD;
23078         pd_state[0] =
23079                 read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
23080         pd_state[1] =
23081                 read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
23082         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
23083         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
23084         rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
23085                          RADIO_2055_WBRSSI_G2_SEL;
23086         rssi_ctrl_state[0] =
23087                 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
23088         rssi_ctrl_state[1] =
23089                 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
23090         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
23091
23092         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
23093                                        NPHY_RAIL_I, rssi_type);
23094         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
23095                                        NPHY_RAIL_Q, rssi_type);
23096
23097         for (vcm = 0; vcm < 4; vcm++) {
23098
23099                 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
23100                 if (rssi_type != NPHY_RSSI_SEL_W2)
23101                         wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
23102
23103                 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
23104                                        NPHY_RSSICAL_NPOLL);
23105
23106                 if ((rssi_type == NPHY_RSSI_SEL_W1)
23107                     || (rssi_type == NPHY_RSSI_SEL_W2)) {
23108                         for (ctr = 0; ctr < 2; ctr++)
23109                                 poll_miniq[vcm][ctr] =
23110                                         min(poll_results[vcm][ctr * 2 + 0],
23111                                             poll_results[vcm][ctr * 2 + 1]);
23112                 }
23113         }
23114
23115         for (result_idx = 0; result_idx < 4; result_idx++) {
23116                 min_d = NPHY_RSSICAL_MAXD;
23117                 min_vcm = 0;
23118                 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
23119                 for (vcm = 0; vcm < 4; vcm++) {
23120                         curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
23121                                       poll_results[vcm][result_idx] :
23122                                       poll_miniq[vcm][result_idx / 2]) -
23123                                      (target_code * NPHY_RSSICAL_NPOLL));
23124                         if (curr_d < min_d) {
23125                                 min_d = curr_d;
23126                                 min_vcm = vcm;
23127                         }
23128                         if (poll_results[vcm][result_idx] < min_poll)
23129                                 min_poll = poll_results[vcm][result_idx];
23130                 }
23131                 vcm_final[result_idx] = min_vcm;
23132                 poll_results_min[result_idx] = min_poll;
23133         }
23134
23135         if (rssi_type != NPHY_RSSI_SEL_W2)
23136                 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
23137
23138         for (result_idx = 0; result_idx < 4; result_idx++) {
23139                 fine_digital_offset[result_idx] =
23140                         (target_code * NPHY_RSSICAL_NPOLL) -
23141                         poll_results[vcm_final[result_idx]][result_idx];
23142                 if (fine_digital_offset[result_idx] < 0) {
23143                         fine_digital_offset[result_idx] =
23144                                 abs(fine_digital_offset[result_idx]);
23145                         fine_digital_offset[result_idx] +=
23146                                 (NPHY_RSSICAL_NPOLL / 2);
23147                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23148                         fine_digital_offset[result_idx] =
23149                                 -fine_digital_offset[result_idx];
23150                 } else {
23151                         fine_digital_offset[result_idx] +=
23152                                 (NPHY_RSSICAL_NPOLL / 2);
23153                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23154                 }
23155
23156                 if (poll_results_min[result_idx] ==
23157                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
23158                         fine_digital_offset[result_idx] =
23159                                 (target_code - NPHY_RSSICAL_MAXREAD - 1);
23160
23161                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
23162                                                (s8)
23163                                                fine_digital_offset[result_idx],
23164                                                (result_idx / 2 ==
23165                                                 0) ? RADIO_MIMO_CORESEL_CORE1 :
23166                                                RADIO_MIMO_CORESEL_CORE2,
23167                                                (result_idx % 2 ==
23168                                                 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
23169                                                rssi_type);
23170         }
23171
23172         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
23173         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
23174         if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
23175                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23176                                      NPHY_RSSI_SEL_NB);
23177         else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
23178                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23179                                      NPHY_RSSI_SEL_W1);
23180         else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G2_SEL)
23181                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23182                                      NPHY_RSSI_SEL_W2);
23183         else
23184                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23185                                      NPHY_RSSI_SEL_W2);
23186         if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
23187                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23188                                      NPHY_RSSI_SEL_NB);
23189         else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
23190                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23191                                      NPHY_RSSI_SEL_W1);
23192         else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G2_SEL)
23193                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23194                                      NPHY_RSSI_SEL_W2);
23195         else
23196                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23197                                      NPHY_RSSI_SEL_W2);
23198
23199         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
23200
23201         write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
23202         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
23203         write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
23204         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
23205
23206         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
23207         wlc_phy_clip_det_nphy(pi, 1, clip_state);
23208
23209         wlc_phy_resetcca_nphy(pi);
23210 }
23211
23212 void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
23213 {
23214         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23215                 wlc_phy_rssi_cal_nphy_rev3(pi);
23216         } else {
23217                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
23218                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
23219                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
23220         }
23221 }
23222
23223 int
23224 wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
23225 {
23226         s16 rxpwr, rxpwr0, rxpwr1;
23227         s16 phyRx0_l, phyRx2_l;
23228
23229         rxpwr = 0;
23230         rxpwr0 = rxh->PhyRxStatus_1 & PRXS1_nphy_PWR0_MASK;
23231         rxpwr1 = (rxh->PhyRxStatus_1 & PRXS1_nphy_PWR1_MASK) >> 8;
23232
23233         if (rxpwr0 > 127)
23234                 rxpwr0 -= 256;
23235         if (rxpwr1 > 127)
23236                 rxpwr1 -= 256;
23237
23238         phyRx0_l = rxh->PhyRxStatus_0 & 0x00ff;
23239         phyRx2_l = rxh->PhyRxStatus_2 & 0x00ff;
23240         if (phyRx2_l > 127)
23241                 phyRx2_l -= 256;
23242
23243         if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
23244                 rxpwr0 = rxpwr1;
23245                 rxpwr1 = phyRx2_l;
23246         }
23247
23248         if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
23249                 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23250         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23251                 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23252         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23253                 rxpwr = (rxpwr0 + rxpwr1) >> 1;
23254
23255         return rxpwr;
23256 }
23257
23258 static void
23259 wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23260                              u16 num_samps)
23261 {
23262         u16 t;
23263         u32 *data_buf = NULL;
23264
23265         data_buf = kmalloc(sizeof(u32) * num_samps, GFP_ATOMIC);
23266         if (data_buf == NULL)
23267                 return;
23268
23269         if (pi->phyhang_avoid)
23270                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23271
23272         for (t = 0; t < num_samps; t++)
23273                 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23274                               (((unsigned int)tone_buf[t].q) & 0x3ff);
23275         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23276                                  data_buf);
23277
23278         kfree(data_buf);
23279
23280         if (pi->phyhang_avoid)
23281                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23282 }
23283
23284 static u16
23285 wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23286                               u8 dac_test_mode)
23287 {
23288         u8 phy_bw, is_phybw40;
23289         u16 num_samps, t, spur;
23290         s32 theta = 0, rot = 0;
23291         u32 tbl_len;
23292         struct cordic_iq *tone_buf = NULL;
23293
23294         is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23295         phy_bw = (is_phybw40 == 1) ? 40 : 20;
23296         tbl_len = (phy_bw << 3);
23297
23298         if (dac_test_mode == 1) {
23299                 spur = read_phy_reg(pi, 0x01);
23300                 spur = (spur >> 15) & 1;
23301                 phy_bw = (spur == 1) ? 82 : 80;
23302                 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23303
23304                 tbl_len = (phy_bw << 1);
23305         }
23306
23307         tone_buf = kmalloc(sizeof(struct cordic_iq) * tbl_len, GFP_ATOMIC);
23308         if (tone_buf == NULL)
23309                 return 0;
23310
23311         num_samps = (u16) tbl_len;
23312         rot = ((f_kHz * 36) / phy_bw) / 100;
23313         theta = 0;
23314
23315         for (t = 0; t < num_samps; t++) {
23316
23317                 tone_buf[t] = cordic_calc_iq(theta);
23318
23319                 theta += rot;
23320
23321                 tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
23322                 tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
23323         }
23324
23325         wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23326
23327         kfree(tone_buf);
23328
23329         return num_samps;
23330 }
23331
23332 static void
23333 wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23334                         u16 wait, u8 iqmode, u8 dac_test_mode,
23335                         bool modify_bbmult)
23336 {
23337         u16 bb_mult;
23338         u8 phy_bw, sample_cmd;
23339         u16 orig_RfseqCoreActv;
23340         u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
23341             lpf_bw_ctl_miscreg4;
23342
23343         if (pi->phyhang_avoid)
23344                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23345
23346         phy_bw = 20;
23347         if (CHSPEC_IS40(pi->radio_chanspec))
23348                 phy_bw = 40;
23349
23350         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23351
23352                 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23353                 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23354                 if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
23355                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23356                                               (0x7 << 8);
23357                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23358                                               (0x7 << 8);
23359                 } else {
23360                         wlc_phy_rfctrl_override_nphy_rev7(
23361                                 pi,
23362                                 (0x1 << 7),
23363                                 wlc_phy_read_lpf_bw_ctl_nphy
23364                                         (pi,
23365                                         0), 0, 0,
23366                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23367
23368                         pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23369
23370                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23371                                               (0x7 << 8);
23372                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23373                                               (0x7 << 8);
23374                 }
23375         }
23376
23377         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23378
23379                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23380                                         &bb_mult);
23381                 pi->nphy_bb_mult_save =
23382                         BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23383         }
23384
23385         if (modify_bbmult) {
23386                 bb_mult = (phy_bw == 20) ? 100 : 71;
23387                 bb_mult = (bb_mult << 8) + bb_mult;
23388                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23389                                          &bb_mult);
23390         }
23391
23392         if (pi->phyhang_avoid)
23393                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23394
23395         write_phy_reg(pi, 0xc6, num_samps - 1);
23396
23397         if (loops != 0xffff)
23398                 write_phy_reg(pi, 0xc4, loops - 1);
23399         else
23400                 write_phy_reg(pi, 0xc4, loops);
23401
23402         write_phy_reg(pi, 0xc5, wait);
23403
23404         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23405         or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23406         if (iqmode) {
23407
23408                 and_phy_reg(pi, 0xc2, 0x7FFF);
23409
23410                 or_phy_reg(pi, 0xc2, 0x8000);
23411         } else {
23412
23413                 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23414                 write_phy_reg(pi, 0xc3, sample_cmd);
23415         }
23416
23417         SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23418
23419         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23420 }
23421
23422 int
23423 wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23424                      u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23425 {
23426         u16 num_samps;
23427         u16 loops = 0xffff;
23428         u16 wait = 0;
23429
23430         num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23431                                                   dac_test_mode);
23432         if (num_samps == 0)
23433                 return -EBADE;
23434
23435         wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23436                                 dac_test_mode, modify_bbmult);
23437
23438         return 0;
23439 }
23440
23441 void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23442 {
23443         u16 playback_status;
23444         u16 bb_mult;
23445
23446         if (pi->phyhang_avoid)
23447                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23448
23449         playback_status = read_phy_reg(pi, 0xc7);
23450         if (playback_status & 0x1)
23451                 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23452         else if (playback_status & 0x2)
23453                 and_phy_reg(pi, 0xc2,
23454                             (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23455
23456         and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23457
23458         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23459
23460                 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23461                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23462                                          &bb_mult);
23463
23464                 pi->nphy_bb_mult_save = 0;
23465         }
23466
23467         if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23468                 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23469                         wlc_phy_rfctrl_override_nphy_rev7(
23470                                 pi,
23471                                 (0x1 << 7),
23472                                 0, 0, 1,
23473                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23474                         pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23475                 }
23476         }
23477
23478         if (pi->phyhang_avoid)
23479                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23480 }
23481
23482 static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23483 {
23484         u32 *tx_pwrctrl_tbl = NULL;
23485         uint phyrev = pi->pubpi.phy_rev;
23486
23487         if (PHY_IPA(pi)) {
23488                 tx_pwrctrl_tbl =
23489                         wlc_phy_get_ipa_gaintbl_nphy(pi);
23490         } else {
23491                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23492                         if (NREV_IS(phyrev, 3))
23493                                 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23494                         else if (NREV_IS(phyrev, 4))
23495                                 tx_pwrctrl_tbl =
23496                                         (pi->srom_fem5g.extpagain == 3) ?
23497                                         nphy_tpc_5GHz_txgain_HiPwrEPA :
23498                                         nphy_tpc_5GHz_txgain_rev4;
23499                         else
23500                                 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23501                 } else {
23502                         if (NREV_GE(phyrev, 7)) {
23503                                 if (pi->pubpi.radiorev == 3)
23504                                         tx_pwrctrl_tbl =
23505                                                 nphy_tpc_txgain_epa_2057rev3;
23506                                 else if (pi->pubpi.radiorev == 5)
23507                                         tx_pwrctrl_tbl =
23508                                                 nphy_tpc_txgain_epa_2057rev5;
23509                         } else {
23510                                 if (NREV_GE(phyrev, 5) &&
23511                                    (pi->srom_fem2g.extpagain == 3))
23512                                         tx_pwrctrl_tbl =
23513                                                 nphy_tpc_txgain_HiPwrEPA;
23514                                 else
23515                                         tx_pwrctrl_tbl =
23516                                                 nphy_tpc_txgain_rev3;
23517                         }
23518                 }
23519         }
23520         return tx_pwrctrl_tbl;
23521 }
23522
23523 struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23524 {
23525         u16 base_idx[2], curr_gain[2];
23526         u8 core_no;
23527         struct nphy_txgains target_gain;
23528         u32 *tx_pwrctrl_tbl = NULL;
23529
23530         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23531                 if (pi->phyhang_avoid)
23532                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
23533
23534                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23535                                         curr_gain);
23536
23537                 if (pi->phyhang_avoid)
23538                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
23539
23540                 for (core_no = 0; core_no < 2; core_no++) {
23541                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23542                                 target_gain.ipa[core_no] =
23543                                         curr_gain[core_no] & 0x0007;
23544                                 target_gain.pad[core_no] =
23545                                         ((curr_gain[core_no] & 0x00F8) >> 3);
23546                                 target_gain.pga[core_no] =
23547                                         ((curr_gain[core_no] & 0x0F00) >> 8);
23548                                 target_gain.txgm[core_no] =
23549                                         ((curr_gain[core_no] & 0x7000) >> 12);
23550                                 target_gain.txlpf[core_no] =
23551                                         ((curr_gain[core_no] & 0x8000) >> 15);
23552                         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23553                                 target_gain.ipa[core_no] =
23554                                         curr_gain[core_no] & 0x000F;
23555                                 target_gain.pad[core_no] =
23556                                         ((curr_gain[core_no] & 0x00F0) >> 4);
23557                                 target_gain.pga[core_no] =
23558                                         ((curr_gain[core_no] & 0x0F00) >> 8);
23559                                 target_gain.txgm[core_no] =
23560                                         ((curr_gain[core_no] & 0x7000) >> 12);
23561                         } else {
23562                                 target_gain.ipa[core_no] =
23563                                         curr_gain[core_no] & 0x0003;
23564                                 target_gain.pad[core_no] =
23565                                         ((curr_gain[core_no] & 0x000C) >> 2);
23566                                 target_gain.pga[core_no] =
23567                                         ((curr_gain[core_no] & 0x0070) >> 4);
23568                                 target_gain.txgm[core_no] =
23569                                         ((curr_gain[core_no] & 0x0380) >> 7);
23570                         }
23571                 }
23572         } else {
23573                 uint phyrev = pi->pubpi.phy_rev;
23574
23575                 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23576                 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23577                 for (core_no = 0; core_no < 2; core_no++) {
23578                         if (NREV_GE(phyrev, 3)) {
23579                                 tx_pwrctrl_tbl =
23580                                         brcms_phy_get_tx_pwrctrl_tbl(pi);
23581                                 if (NREV_GE(phyrev, 7)) {
23582                                         target_gain.ipa[core_no] =
23583                                                 (tx_pwrctrl_tbl
23584                                                  [base_idx[core_no]]
23585                                                  >> 16) & 0x7;
23586                                         target_gain.pad[core_no] =
23587                                                 (tx_pwrctrl_tbl
23588                                                  [base_idx[core_no]]
23589                                                  >> 19) & 0x1f;
23590                                         target_gain.pga[core_no] =
23591                                                 (tx_pwrctrl_tbl
23592                                                  [base_idx[core_no]]
23593                                                  >> 24) & 0xf;
23594                                         target_gain.txgm[core_no] =
23595                                                 (tx_pwrctrl_tbl
23596                                                  [base_idx[core_no]]
23597                                                  >> 28) & 0x7;
23598                                         target_gain.txlpf[core_no] =
23599                                                 (tx_pwrctrl_tbl
23600                                                  [base_idx[core_no]]
23601                                                  >> 31) & 0x1;
23602                                 } else {
23603                                         target_gain.ipa[core_no] =
23604                                                 (tx_pwrctrl_tbl
23605                                                  [base_idx[core_no]]
23606                                                  >> 16) & 0xf;
23607                                         target_gain.pad[core_no] =
23608                                                 (tx_pwrctrl_tbl
23609                                                  [base_idx[core_no]]
23610                                                  >> 20) & 0xf;
23611                                         target_gain.pga[core_no] =
23612                                                 (tx_pwrctrl_tbl
23613                                                  [base_idx[core_no]]
23614                                                  >> 24) & 0xf;
23615                                         target_gain.txgm[core_no] =
23616                                                 (tx_pwrctrl_tbl
23617                                                 [base_idx[core_no]]
23618                                                  >> 28) & 0x7;
23619                                 }
23620                         } else {
23621                                 target_gain.ipa[core_no] =
23622                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23623                                          16) & 0x3;
23624                                 target_gain.pad[core_no] =
23625                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23626                                          18) & 0x3;
23627                                 target_gain.pga[core_no] =
23628                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23629                                          20) & 0x7;
23630                                 target_gain.txgm[core_no] =
23631                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23632                                          23) & 0x7;
23633                         }
23634                 }
23635         }
23636
23637         return target_gain;
23638 }
23639
23640 static void
23641 wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23642                               struct nphy_txgains target_gain,
23643                               struct nphy_iqcal_params *params)
23644 {
23645         u8 k;
23646         int idx;
23647         u16 gain_index;
23648         u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23649
23650         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23651                 if (NREV_GE(pi->pubpi.phy_rev, 7))
23652                         params->txlpf = target_gain.txlpf[core_no];
23653
23654                 params->txgm = target_gain.txgm[core_no];
23655                 params->pga = target_gain.pga[core_no];
23656                 params->pad = target_gain.pad[core_no];
23657                 params->ipa = target_gain.ipa[core_no];
23658                 if (NREV_GE(pi->pubpi.phy_rev, 7))
23659                         params->cal_gain =
23660                                 ((params->txlpf << 15) | (params->txgm << 12) |
23661                                  (params->pga << 8) |
23662                                  (params->pad << 3) | (params->ipa));
23663                 else
23664                         params->cal_gain =
23665                                 ((params->txgm << 12) | (params->pga << 8) |
23666                                  (params->pad << 4) | (params->ipa));
23667
23668                 params->ncorr[0] = 0x79;
23669                 params->ncorr[1] = 0x79;
23670                 params->ncorr[2] = 0x79;
23671                 params->ncorr[3] = 0x79;
23672                 params->ncorr[4] = 0x79;
23673         } else {
23674
23675                 gain_index = ((target_gain.pad[core_no] << 0) |
23676                               (target_gain.pga[core_no] << 4) |
23677                               (target_gain.txgm[core_no] << 8));
23678
23679                 idx = -1;
23680                 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23681                         if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23682                             gain_index) {
23683                                 idx = k;
23684                                 break;
23685                         }
23686                 }
23687
23688                 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23689                 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23690                 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23691                 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23692                                     (params->pad << 2));
23693                 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23694                 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23695                 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23696                 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23697         }
23698 }
23699
23700 static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23701 {
23702         u16 jtag_core, core;
23703
23704         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23705
23706                 for (core = 0; core <= 1; core++) {
23707
23708                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23709                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23710                                                 TX_SSI_MASTER);
23711
23712                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23713                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23714                                                 IQCAL_VCM_HG);
23715
23716                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23717                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23718                                                 IQCAL_IDAC);
23719
23720                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23721                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23722                                                 TSSI_VCM);
23723
23724                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23725
23726                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23727                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23728                                                 TX_SSI_MUX);
23729
23730                         if (pi->pubpi.radiorev != 5)
23731                                 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23732                                         READ_RADIO_REG3(pi, RADIO_2057, TX,
23733                                                         core,
23734                                                         TSSIA);
23735
23736                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23737                                READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23738
23739                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23740                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23741                                                 TSSI_MISC1);
23742
23743                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23744                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23745                                                  TX_SSI_MASTER, 0x0a);
23746                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23747                                                  IQCAL_VCM_HG, 0x43);
23748                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23749                                                  IQCAL_IDAC, 0x55);
23750                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23751                                                  TSSI_VCM, 0x00);
23752                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23753                                                  TSSIG, 0x00);
23754                                 if (pi->use_int_tx_iqlo_cal_nphy) {
23755                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23756                                                          core, TX_SSI_MUX, 0x4);
23757                                         if (!(pi->
23758                                         internal_tx_iqlo_cal_tapoff_intpa_nphy))
23759                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23760                                                                  TX, core,
23761                                                                  TSSIA, 0x31);
23762                                         else
23763                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23764                                                                  TX, core,
23765                                                                  TSSIA, 0x21);
23766                                 }
23767                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23768                                                  TSSI_MISC1, 0x00);
23769                         } else {
23770                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23771                                                  TX_SSI_MASTER, 0x06);
23772                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23773                                                  IQCAL_VCM_HG, 0x43);
23774                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23775                                                  IQCAL_IDAC, 0x55);
23776                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23777                                                  TSSI_VCM, 0x00);
23778
23779                                 if (pi->pubpi.radiorev != 5)
23780                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23781                                                          core, TSSIA, 0x00);
23782                                 if (pi->use_int_tx_iqlo_cal_nphy) {
23783                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23784                                                          core, TX_SSI_MUX,
23785                                                          0x06);
23786                                         if (!(pi->
23787                                         internal_tx_iqlo_cal_tapoff_intpa_nphy))
23788                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23789                                                                  TX, core,
23790                                                                  TSSIG, 0x31);
23791                                         else
23792                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23793                                                                  TX, core,
23794                                                                  TSSIG, 0x21);
23795                                 }
23796                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23797                                                  TSSI_MISC1, 0x00);
23798                         }
23799                 }
23800         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23801
23802                 for (core = 0; core <= 1; core++) {
23803                         jtag_core =
23804                                 (core ==
23805                                  PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23806
23807                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23808                                 read_radio_reg(pi,
23809                                                RADIO_2056_TX_TX_SSI_MASTER |
23810                                                jtag_core);
23811
23812                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23813                                 read_radio_reg(pi,
23814                                                RADIO_2056_TX_IQCAL_VCM_HG |
23815                                                jtag_core);
23816
23817                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23818                                 read_radio_reg(pi,
23819                                                RADIO_2056_TX_IQCAL_IDAC |
23820                                                jtag_core);
23821
23822                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23823                                 read_radio_reg(
23824                                         pi,
23825                                         RADIO_2056_TX_TSSI_VCM |
23826                                         jtag_core);
23827
23828                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23829                                 read_radio_reg(pi,
23830                                                RADIO_2056_TX_TX_AMP_DET |
23831                                                jtag_core);
23832
23833                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23834                                 read_radio_reg(pi,
23835                                                RADIO_2056_TX_TX_SSI_MUX |
23836                                                jtag_core);
23837
23838                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23839                                 read_radio_reg(pi,
23840                                                RADIO_2056_TX_TSSIA | jtag_core);
23841
23842                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23843                                 read_radio_reg(pi,
23844                                                RADIO_2056_TX_TSSIG | jtag_core);
23845
23846                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23847                                 read_radio_reg(pi,
23848                                                RADIO_2056_TX_TSSI_MISC1 |
23849                                                jtag_core);
23850
23851                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23852                                 read_radio_reg(pi,
23853                                                RADIO_2056_TX_TSSI_MISC2 |
23854                                                jtag_core);
23855
23856                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23857                                 read_radio_reg(pi,
23858                                                RADIO_2056_TX_TSSI_MISC3 |
23859                                                jtag_core);
23860
23861                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23862                                 write_radio_reg(pi,
23863                                                 RADIO_2056_TX_TX_SSI_MASTER |
23864                                                 jtag_core, 0x0a);
23865                                 write_radio_reg(pi,
23866                                                 RADIO_2056_TX_IQCAL_VCM_HG |
23867                                                 jtag_core, 0x40);
23868                                 write_radio_reg(pi,
23869                                                 RADIO_2056_TX_IQCAL_IDAC |
23870                                                 jtag_core, 0x55);
23871                                 write_radio_reg(pi,
23872                                                 RADIO_2056_TX_TSSI_VCM |
23873                                                 jtag_core, 0x00);
23874                                 write_radio_reg(pi,
23875                                                 RADIO_2056_TX_TX_AMP_DET |
23876                                                 jtag_core, 0x00);
23877
23878                                 if (PHY_IPA(pi)) {
23879                                         write_radio_reg(
23880                                                 pi,
23881                                                 RADIO_2056_TX_TX_SSI_MUX
23882                                                 | jtag_core, 0x4);
23883                                         write_radio_reg(pi,
23884                                                         RADIO_2056_TX_TSSIA |
23885                                                         jtag_core, 0x1);
23886                                 } else {
23887                                         write_radio_reg(
23888                                                 pi,
23889                                                 RADIO_2056_TX_TX_SSI_MUX
23890                                                 | jtag_core, 0x00);
23891                                         write_radio_reg(pi,
23892                                                         RADIO_2056_TX_TSSIA |
23893                                                         jtag_core, 0x2f);
23894                                 }
23895                                 write_radio_reg(pi,
23896                                                 RADIO_2056_TX_TSSIG | jtag_core,
23897                                                 0x00);
23898                                 write_radio_reg(pi,
23899                                                 RADIO_2056_TX_TSSI_MISC1 |
23900                                                 jtag_core, 0x00);
23901
23902                                 write_radio_reg(pi,
23903                                                 RADIO_2056_TX_TSSI_MISC2 |
23904                                                 jtag_core, 0x00);
23905                                 write_radio_reg(pi,
23906                                                 RADIO_2056_TX_TSSI_MISC3 |
23907                                                 jtag_core, 0x00);
23908                         } else {
23909                                 write_radio_reg(pi,
23910                                                 RADIO_2056_TX_TX_SSI_MASTER |
23911                                                 jtag_core, 0x06);
23912                                 write_radio_reg(pi,
23913                                                 RADIO_2056_TX_IQCAL_VCM_HG |
23914                                                 jtag_core, 0x40);
23915                                 write_radio_reg(pi,
23916                                                 RADIO_2056_TX_IQCAL_IDAC |
23917                                                 jtag_core, 0x55);
23918                                 write_radio_reg(pi,
23919                                                 RADIO_2056_TX_TSSI_VCM |
23920                                                 jtag_core, 0x00);
23921                                 write_radio_reg(pi,
23922                                                 RADIO_2056_TX_TX_AMP_DET |
23923                                                 jtag_core, 0x00);
23924                                 write_radio_reg(pi,
23925                                                 RADIO_2056_TX_TSSIA | jtag_core,
23926                                                 0x00);
23927
23928                                 if (PHY_IPA(pi)) {
23929
23930                                         write_radio_reg(
23931                                                 pi,
23932                                                 RADIO_2056_TX_TX_SSI_MUX
23933                                                 | jtag_core, 0x06);
23934                                         if (NREV_LT(pi->pubpi.phy_rev, 5))
23935                                                 write_radio_reg(
23936                                                         pi,
23937                                                         RADIO_2056_TX_TSSIG
23938                                                         | jtag_core,
23939                                                         0x11);
23940                                         else
23941                                                 write_radio_reg(
23942                                                         pi,
23943                                                         RADIO_2056_TX_TSSIG
23944                                                         | jtag_core,
23945                                                         0x1);
23946                                 } else {
23947                                         write_radio_reg(
23948                                                 pi,
23949                                                 RADIO_2056_TX_TX_SSI_MUX
23950                                                 | jtag_core, 0x00);
23951                                         write_radio_reg(pi,
23952                                                         RADIO_2056_TX_TSSIG |
23953                                                         jtag_core, 0x20);
23954                                 }
23955
23956                                 write_radio_reg(pi,
23957                                                 RADIO_2056_TX_TSSI_MISC1 |
23958                                                 jtag_core, 0x00);
23959                                 write_radio_reg(pi,
23960                                                 RADIO_2056_TX_TSSI_MISC2 |
23961                                                 jtag_core, 0x00);
23962                                 write_radio_reg(pi,
23963                                                 RADIO_2056_TX_TSSI_MISC3 |
23964                                                 jtag_core, 0x00);
23965                         }
23966                 }
23967         } else {
23968
23969                 pi->tx_rx_cal_radio_saveregs[0] =
23970                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23971                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23972                 pi->tx_rx_cal_radio_saveregs[1] =
23973                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23974                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23975
23976                 pi->tx_rx_cal_radio_saveregs[2] =
23977                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23978                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23979                 pi->tx_rx_cal_radio_saveregs[3] =
23980                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23981                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23982
23983                 pi->tx_rx_cal_radio_saveregs[4] =
23984                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23985                 pi->tx_rx_cal_radio_saveregs[5] =
23986                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23987
23988                 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23989                     0) {
23990
23991                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23992                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23993                 } else {
23994
23995                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23996                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23997                 }
23998
23999                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
24000
24001                         or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
24002                         or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
24003                 } else {
24004
24005                         and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
24006                         and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
24007                 }
24008         }
24009 }
24010
24011 static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
24012 {
24013         u16 jtag_core, core;
24014
24015         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24016                 for (core = 0; core <= 1; core++) {
24017
24018                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24019                                          TX_SSI_MASTER,
24020                                          pi->
24021                                          tx_rx_cal_radio_saveregs[(core * 11) +
24022                                                                   0]);
24023
24024                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
24025                                          pi->
24026                                          tx_rx_cal_radio_saveregs[(core * 11) +
24027                                                                   1]);
24028
24029                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
24030                                          pi->
24031                                          tx_rx_cal_radio_saveregs[(core * 11) +
24032                                                                   2]);
24033
24034                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
24035                                          pi->
24036                                          tx_rx_cal_radio_saveregs[(core * 11) +
24037                                                                   3]);
24038
24039                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
24040                                          pi->
24041                                          tx_rx_cal_radio_saveregs[(core * 11) +
24042                                                                   5]);
24043
24044                         if (pi->pubpi.radiorev != 5)
24045                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24046                                                  TSSIA,
24047                                                  pi->tx_rx_cal_radio_saveregs
24048                                                              [(core * 11) + 6]);
24049
24050                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
24051                                          pi->
24052                                          tx_rx_cal_radio_saveregs[(core * 11) +
24053                                                                   7]);
24054
24055                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
24056                                          pi->
24057                                          tx_rx_cal_radio_saveregs[(core * 11) +
24058                                                                   8]);
24059                 }
24060         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24061                 for (core = 0; core <= 1; core++) {
24062                         jtag_core = (core == PHY_CORE_0) ?
24063                                      RADIO_2056_TX0 : RADIO_2056_TX1;
24064
24065                         write_radio_reg(pi,
24066                                         RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
24067                                         pi->
24068                                         tx_rx_cal_radio_saveregs[(core * 11) +
24069                                                                  0]);
24070
24071                         write_radio_reg(pi,
24072                                         RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
24073                                         pi->
24074                                         tx_rx_cal_radio_saveregs[(core * 11) +
24075                                                                  1]);
24076
24077                         write_radio_reg(pi,
24078                                         RADIO_2056_TX_IQCAL_IDAC | jtag_core,
24079                                         pi->
24080                                         tx_rx_cal_radio_saveregs[(core * 11) +
24081                                                                  2]);
24082
24083                         write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
24084                                         pi->
24085                                         tx_rx_cal_radio_saveregs[(core * 11) +
24086                                                                  3]);
24087
24088                         write_radio_reg(pi,
24089                                         RADIO_2056_TX_TX_AMP_DET | jtag_core,
24090                                         pi->
24091                                         tx_rx_cal_radio_saveregs[(core * 11) +
24092                                                                  4]);
24093
24094                         write_radio_reg(pi,
24095                                         RADIO_2056_TX_TX_SSI_MUX | jtag_core,
24096                                         pi->
24097                                         tx_rx_cal_radio_saveregs[(core * 11) +
24098                                                                  5]);
24099
24100                         write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
24101                                         pi->
24102                                         tx_rx_cal_radio_saveregs[(core * 11) +
24103                                                                  6]);
24104
24105                         write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
24106                                         pi->
24107                                         tx_rx_cal_radio_saveregs[(core * 11) +
24108                                                                  7]);
24109
24110                         write_radio_reg(pi,
24111                                         RADIO_2056_TX_TSSI_MISC1 | jtag_core,
24112                                         pi->
24113                                         tx_rx_cal_radio_saveregs[(core * 11) +
24114                                                                  8]);
24115
24116                         write_radio_reg(pi,
24117                                         RADIO_2056_TX_TSSI_MISC2 | jtag_core,
24118                                         pi->
24119                                         tx_rx_cal_radio_saveregs[(core * 11) +
24120                                                                  9]);
24121
24122                         write_radio_reg(pi,
24123                                         RADIO_2056_TX_TSSI_MISC3 | jtag_core,
24124                                         pi->
24125                                         tx_rx_cal_radio_saveregs[(core * 11) +
24126                                                                  10]);
24127                 }
24128         } else {
24129
24130                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
24131                                 pi->tx_rx_cal_radio_saveregs[0]);
24132                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
24133                                 pi->tx_rx_cal_radio_saveregs[1]);
24134                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
24135                                 pi->tx_rx_cal_radio_saveregs[2]);
24136                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
24137                                 pi->tx_rx_cal_radio_saveregs[3]);
24138                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
24139                                 pi->tx_rx_cal_radio_saveregs[4]);
24140                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
24141                                 pi->tx_rx_cal_radio_saveregs[5]);
24142         }
24143 }
24144
24145 static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
24146 {
24147         u16 val, mask;
24148
24149         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24150                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24151                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24152
24153                 mask = ((0x3 << 8) | (0x3 << 10));
24154                 val = (0x2 << 8);
24155                 val |= (0x2 << 10);
24156                 mod_phy_reg(pi, 0xa6, mask, val);
24157                 mod_phy_reg(pi, 0xa7, mask, val);
24158
24159                 val = read_phy_reg(pi, 0x8f);
24160                 pi->tx_rx_cal_phy_saveregs[2] = val;
24161                 val |= ((0x1 << 9) | (0x1 << 10));
24162                 write_phy_reg(pi, 0x8f, val);
24163
24164                 val = read_phy_reg(pi, 0xa5);
24165                 pi->tx_rx_cal_phy_saveregs[3] = val;
24166                 val |= ((0x1 << 9) | (0x1 << 10));
24167                 write_phy_reg(pi, 0xa5, val);
24168
24169                 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
24170                 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
24171
24172                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24173                                         &val);
24174                 pi->tx_rx_cal_phy_saveregs[5] = val;
24175                 val = 0;
24176                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24177                                          &val);
24178
24179                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24180                                         &val);
24181                 pi->tx_rx_cal_phy_saveregs[6] = val;
24182                 val = 0;
24183                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24184                                          &val);
24185
24186                 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
24187                 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
24188
24189                 if (!(pi->use_int_tx_iqlo_cal_nphy))
24190                         wlc_phy_rfctrlintc_override_nphy(
24191                                 pi,
24192                                 NPHY_RfctrlIntc_override_PA,
24193                                 1,
24194                                 RADIO_MIMO_CORESEL_CORE1
24195                                 |
24196                                 RADIO_MIMO_CORESEL_CORE2);
24197                 else
24198                         wlc_phy_rfctrlintc_override_nphy(
24199                                 pi,
24200                                 NPHY_RfctrlIntc_override_PA,
24201                                 0,
24202                                 RADIO_MIMO_CORESEL_CORE1
24203                                 |
24204                                 RADIO_MIMO_CORESEL_CORE2);
24205
24206                 wlc_phy_rfctrlintc_override_nphy(pi,
24207                                                  NPHY_RfctrlIntc_override_TRSW,
24208                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
24209                 wlc_phy_rfctrlintc_override_nphy(pi,
24210                                                  NPHY_RfctrlIntc_override_TRSW,
24211                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
24212
24213                 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
24214                 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
24215                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
24216                             0x29b, (0x1 << 0), (0) << 0);
24217
24218                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
24219                             0x29b, (0x1 << 0), (0) << 0);
24220
24221                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24222                     || NREV_GE(pi->pubpi.phy_rev, 8))
24223                         wlc_phy_rfctrl_override_nphy_rev7(
24224                                 pi, (0x1 << 7),
24225                                 wlc_phy_read_lpf_bw_ctl_nphy
24226                                         (pi,
24227                                         0), 0, 0,
24228                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24229
24230                 if (pi->use_int_tx_iqlo_cal_nphy
24231                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24232
24233                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24234
24235                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24236                                               1 << 4);
24237
24238                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24239                                         mod_radio_reg(
24240                                                 pi,
24241                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24242                                                 1, 0);
24243                                         mod_radio_reg(
24244                                                 pi,
24245                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24246                                                 1, 0);
24247                                 } else {
24248                                         mod_radio_reg(
24249                                              pi,
24250                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24251                                              1, 0);
24252                                         mod_radio_reg(
24253                                              pi,
24254                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24255                                              1, 0);
24256                                 }
24257                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24258                                 wlc_phy_rfctrl_override_nphy_rev7(
24259                                         pi,
24260                                         (0x1 << 3), 0,
24261                                         0x3, 0,
24262                                         NPHY_REV7_RFCTRLOVERRIDE_ID0);
24263                         }
24264                 }
24265         } else {
24266                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24267                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24268
24269                 mask = ((0x3 << 12) | (0x3 << 14));
24270                 val = (0x2 << 12);
24271                 val |= (0x2 << 14);
24272                 mod_phy_reg(pi, 0xa6, mask, val);
24273                 mod_phy_reg(pi, 0xa7, mask, val);
24274
24275                 val = read_phy_reg(pi, 0xa5);
24276                 pi->tx_rx_cal_phy_saveregs[2] = val;
24277                 val |= ((0x1 << 12) | (0x1 << 13));
24278                 write_phy_reg(pi, 0xa5, val);
24279
24280                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24281                                         &val);
24282                 pi->tx_rx_cal_phy_saveregs[3] = val;
24283                 val |= 0x2000;
24284                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24285                                          &val);
24286
24287                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24288                                         &val);
24289                 pi->tx_rx_cal_phy_saveregs[4] = val;
24290                 val |= 0x2000;
24291                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24292                                          &val);
24293
24294                 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24295                 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24296                 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24297                 write_phy_reg(pi, 0x91, val);
24298                 write_phy_reg(pi, 0x92, val);
24299         }
24300 }
24301
24302 static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24303 {
24304         u16 mask;
24305
24306         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24307                 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24308                 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24309                 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24310                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24311                 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24312
24313                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24314                                          &pi->tx_rx_cal_phy_saveregs[5]);
24315                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24316                                          &pi->tx_rx_cal_phy_saveregs[6]);
24317
24318                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24319                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24320
24321                 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24322                 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24323
24324                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24325                     || NREV_GE(pi->pubpi.phy_rev, 8))
24326                         wlc_phy_rfctrl_override_nphy_rev7(
24327                                 pi, (0x1 << 7), 0, 0,
24328                                 1,
24329                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24330
24331                 wlc_phy_resetcca_nphy(pi);
24332
24333                 if (pi->use_int_tx_iqlo_cal_nphy
24334                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24335
24336                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24337                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24338                                         mod_radio_reg(
24339                                                 pi,
24340                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24341                                                 1, 1);
24342                                         mod_radio_reg(
24343                                                 pi,
24344                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24345                                                 1, 1);
24346                                 } else {
24347                                         mod_radio_reg(
24348                                              pi,
24349                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24350                                              1, 1);
24351                                         mod_radio_reg(
24352                                              pi,
24353                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24354                                              1, 1);
24355                                 }
24356
24357                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24358                                               0);
24359                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24360                                 wlc_phy_rfctrl_override_nphy_rev7(
24361                                         pi,
24362                                         (0x1 << 3), 0,
24363                                         0x3, 1,
24364                                         NPHY_REV7_RFCTRLOVERRIDE_ID0);
24365                         }
24366                 }
24367         } else {
24368                 mask = ((0x3 << 12) | (0x3 << 14));
24369                 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24370                 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24371                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24372
24373                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24374                                          &pi->tx_rx_cal_phy_saveregs[3]);
24375
24376                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24377                                          &pi->tx_rx_cal_phy_saveregs[4]);
24378
24379                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24380                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24381         }
24382 }
24383
24384 void
24385 wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24386 {
24387         u16 tssi_reg;
24388         s32 temp, pwrindex[2];
24389         s32 idle_tssi[2];
24390         s32 rssi_buf[4];
24391         s32 tssival[2];
24392         u8 tssi_type;
24393
24394         tssi_reg = read_phy_reg(pi, 0x1e9);
24395
24396         temp = (s32) (tssi_reg & 0x3f);
24397         idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24398
24399         temp = (s32) ((tssi_reg >> 8) & 0x3f);
24400         idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24401
24402         tssi_type =
24403                 CHSPEC_IS5G(pi->radio_chanspec) ?
24404                 (u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24405
24406         wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24407
24408         tssival[0] = rssi_buf[0] / ((s32) num_samps);
24409         tssival[1] = rssi_buf[2] / ((s32) num_samps);
24410
24411         pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24412         pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24413
24414         if (pwrindex[0] < 0)
24415                 pwrindex[0] = 0;
24416         else if (pwrindex[0] > 63)
24417                 pwrindex[0] = 63;
24418
24419         if (pwrindex[1] < 0)
24420                 pwrindex[1] = 0;
24421         else if (pwrindex[1] > 63)
24422                 pwrindex[1] = 63;
24423
24424         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24425                                 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24426         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24427                                 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24428 }
24429
24430 static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24431 {
24432         int index;
24433         u32 bbmult_scale;
24434         u16 bbmult;
24435         u16 tblentry;
24436
24437         struct nphy_txiqcal_ladder ladder_lo[] = {
24438                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24439                 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24440                 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24441         };
24442
24443         struct nphy_txiqcal_ladder ladder_iq[] = {
24444                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24445                 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24446                 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24447         };
24448
24449         bbmult = (core == PHY_CORE_0) ?
24450                  ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24451                  (pi->nphy_txcal_bbmult & 0xff);
24452
24453         for (index = 0; index < 18; index++) {
24454                 bbmult_scale = ladder_lo[index].percent * bbmult;
24455                 bbmult_scale /= 100;
24456
24457                 tblentry =
24458                         ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24459                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24460                                          &tblentry);
24461
24462                 bbmult_scale = ladder_iq[index].percent * bbmult;
24463                 bbmult_scale /= 100;
24464
24465                 tblentry =
24466                         ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24467                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24468                                          16, &tblentry);
24469         }
24470 }
24471
24472 static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24473 {
24474         u16 tmp;
24475         tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24476
24477         tmp = (tmp & (0x7f << 8)) >> 8;
24478         return (u8) tmp;
24479 }
24480
24481 static void
24482 wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24483 {
24484         mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24485
24486         if (NREV_GT(pi->pubpi.phy_rev, 1))
24487                 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24488 }
24489
24490 static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24491 {
24492         u16 m0m1;
24493
24494         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24495
24496         return m0m1;
24497 }
24498
24499 static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24500 {
24501         u16 m0m1 = (u16) ((m0 << 8) | m1);
24502
24503         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24504         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24505 }
24506
24507 static void
24508 wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24509                             struct nphy_papd_restore_state *state, u8 core)
24510 {
24511         s32 tone_freq;
24512         u8 off_core;
24513         u16 mixgain = 0;
24514
24515         off_core = core ^ 0x1;
24516         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24517
24518                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24519                     || NREV_GE(pi->pubpi.phy_rev, 8))
24520                         wlc_phy_rfctrl_override_nphy_rev7(
24521                                 pi, (0x1 << 7),
24522                                 wlc_phy_read_lpf_bw_ctl_nphy
24523                                         (pi,
24524                                         0), 0, 0,
24525                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24526
24527                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24528                         if (pi->pubpi.radiorev == 5)
24529                                 mixgain = (core == 0) ? 0x20 : 0x00;
24530                         else if ((pi->pubpi.radiorev == 7)
24531                                  || (pi->pubpi.radiorev == 8))
24532                                 mixgain = 0x00;
24533                         else if ((pi->pubpi.radiorev <= 4)
24534                                  || (pi->pubpi.radiorev == 6))
24535                                 mixgain = 0x00;
24536                 } else {
24537                         if ((pi->pubpi.radiorev == 4) ||
24538                             (pi->pubpi.radiorev == 6))
24539                                 mixgain = 0x50;
24540                         else if ((pi->pubpi.radiorev == 3)
24541                                  || (pi->pubpi.radiorev == 7)
24542                                  || (pi->pubpi.radiorev == 8))
24543                                 mixgain = 0x0;
24544                 }
24545
24546                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24547                                                   mixgain, (1 << core), 0,
24548                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24549
24550                 wlc_phy_rfctrl_override_1tomany_nphy(
24551                         pi,
24552                         NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24553                         1, (1 << core), 0);
24554                 wlc_phy_rfctrl_override_1tomany_nphy(
24555                         pi,
24556                         NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24557                         0, (1 << off_core), 0);
24558
24559                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24560                                                   0, 0x3, 0,
24561                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24562                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24563                                                   (1 << core), 0,
24564                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24565                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24566                                                   (1 << core), 0,
24567                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24568                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24569                                                   (1 << core), 0,
24570                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24571                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24572                                                   (1 << core), 0,
24573                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24574                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24575                                                   (1 << core), 0,
24576                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24577                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24578                                                   (1 << core), 0,
24579                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24580                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24581                                                   (1 << core), 0,
24582                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24583
24584                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24585                                                   0, (1 << core), 0,
24586                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24587                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24588                                                   (1 << core), 0,
24589                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24590
24591                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24592                                                     0xa6 : 0xa7);
24593                 state->afeoverride[core] =
24594                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24595                 state->afectrl[off_core] =
24596                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24597                 state->afeoverride[off_core] =
24598                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24599
24600                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24601                             (0x1 << 2), 0);
24602                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24603                                  0xa5), (0x1 << 2), (0x1 << 2));
24604
24605                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24606                             (0x1 << 2), (0x1 << 2));
24607                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24608                                  0x8f), (0x1 << 2), (0x1 << 2));
24609
24610                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24611                         state->pwrup[core] =
24612                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24613                                                 TXRXCOUPLE_2G_PWRUP);
24614                         state->atten[core] =
24615                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24616                                                 TXRXCOUPLE_2G_ATTEN);
24617                         state->pwrup[off_core] =
24618                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24619                                                 TXRXCOUPLE_2G_PWRUP);
24620                         state->atten[off_core] =
24621                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24622                                                 TXRXCOUPLE_2G_ATTEN);
24623
24624                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24625                                          TXRXCOUPLE_2G_PWRUP, 0xc);
24626
24627                         if ((pi->pubpi.radiorev == 3) ||
24628                             (pi->pubpi.radiorev == 4) ||
24629                             (pi->pubpi.radiorev == 6))
24630                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24631                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
24632                         else if (pi->pubpi.radiorev == 5)
24633                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24634                                                  TXRXCOUPLE_2G_ATTEN,
24635                                                  (core == 0) ? 0xf7 : 0xf2);
24636                         else if ((pi->pubpi.radiorev == 7)
24637                                  || (pi->pubpi.radiorev == 8))
24638                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24639                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
24640
24641                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24642                                          TXRXCOUPLE_2G_PWRUP, 0x0);
24643                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24644                                          TXRXCOUPLE_2G_ATTEN, 0xff);
24645                 } else {
24646                         state->pwrup[core] =
24647                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24648                                                 TXRXCOUPLE_5G_PWRUP);
24649                         state->atten[core] =
24650                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24651                                                 TXRXCOUPLE_5G_ATTEN);
24652                         state->pwrup[off_core] =
24653                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24654                                                 TXRXCOUPLE_5G_PWRUP);
24655                         state->atten[off_core] =
24656                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24657                                                 TXRXCOUPLE_5G_ATTEN);
24658
24659                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24660                                          TXRXCOUPLE_5G_PWRUP, 0xc);
24661
24662                         if ((pi->pubpi.radiorev == 7)
24663                             || (pi->pubpi.radiorev == 8))
24664                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24665                                                  TXRXCOUPLE_5G_ATTEN, 0xf4);
24666
24667                         else
24668                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24669                                                  TXRXCOUPLE_5G_ATTEN, 0xf0);
24670
24671                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24672                                          TXRXCOUPLE_5G_PWRUP, 0x0);
24673                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24674                                          TXRXCOUPLE_5G_ATTEN, 0xff);
24675                 }
24676
24677                 tone_freq = 4000;
24678
24679                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24680
24681                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24682                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24683
24684                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24685                             0x2a4, (0x1 << 13), (1) << 13);
24686
24687                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24688                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24689
24690                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24691                             0x2a4, (0x1 << 13), (0) << 13);
24692
24693         } else {
24694
24695                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24696
24697                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24698
24699                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24700
24701                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24702                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24703
24704                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24705                                                     0xa6 : 0xa7);
24706                 state->afeoverride[core] =
24707                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24708
24709                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24710                             (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24711                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24712                                  0xa5),
24713                             (0x1 << 0) |
24714                             (0x1 << 1) |
24715                             (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24716
24717                 state->vga_master[core] =
24718                         READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24719                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24720                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24721                         state->fbmix[core] =
24722                                 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24723                                                 TXFBMIX_G);
24724                         state->intpa_master[core] =
24725                                 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24726                                                 INTPAG_MASTER);
24727
24728                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24729                                          0x03);
24730                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24731                                          INTPAG_MASTER, 0x04);
24732                 } else {
24733                         state->fbmix[core] =
24734                                 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24735                                                 TXFBMIX_A);
24736                         state->intpa_master[core] =
24737                                 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24738                                                 INTPAA_MASTER);
24739
24740                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24741                                          0x03);
24742                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24743                                          INTPAA_MASTER, 0x04);
24744
24745                 }
24746
24747                 tone_freq = 4000;
24748
24749                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24750
24751                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24752                             0x29b, (0x1 << 0), (1) << 0);
24753
24754                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24755                             0x29b, (0x1 << 0), (0) << 0);
24756
24757                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24758         }
24759 }
24760
24761 static void
24762 wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24763                               struct nphy_papd_restore_state *state)
24764 {
24765         u8 core;
24766
24767         wlc_phy_stopplayback_nphy(pi);
24768
24769         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24770
24771                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24772
24773                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24774                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24775                                                  TXRXCOUPLE_2G_PWRUP, 0);
24776                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24777                                                  TXRXCOUPLE_2G_ATTEN,
24778                                                  state->atten[core]);
24779                         } else {
24780                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24781                                                  TXRXCOUPLE_5G_PWRUP, 0);
24782                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24783                                                  TXRXCOUPLE_5G_ATTEN,
24784                                                  state->atten[core]);
24785                         }
24786                 }
24787
24788                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24789                         wlc_phy_rfctrl_override_nphy_rev7(
24790                                 pi, (0x1 << 2),
24791                                 1, 0x3, 0,
24792                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24793                 else
24794                         wlc_phy_rfctrl_override_nphy_rev7(
24795                                 pi, (0x1 << 2),
24796                                 0, 0x3, 1,
24797                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24798
24799                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24800                                                   0, 0x3, 1,
24801                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24802                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24803                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24804                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24805                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24806                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24807                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24808                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24809                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24810                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24811                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24812                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24813                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24814                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24815                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24816                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24817                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24818                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24819                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24820                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24821                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24822                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24823                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24824                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24825                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24826                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24827                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24828                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24829                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24830                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24831                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24832
24833                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24834
24835                         write_phy_reg(pi, (core == PHY_CORE_0) ?
24836                                       0xa6 : 0xa7, state->afectrl[core]);
24837                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24838                                       0xa5, state->afeoverride[core]);
24839                 }
24840
24841                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24842                                             (state->mm & 0xff));
24843
24844                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24845                     || NREV_GE(pi->pubpi.phy_rev, 8))
24846                         wlc_phy_rfctrl_override_nphy_rev7(
24847                                 pi, (0x1 << 7), 0, 0,
24848                                 1,
24849                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24850         } else {
24851                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24852                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24853                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24854
24855                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24856                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24857
24858                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24859
24860                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24861                                          state->vga_master[core]);
24862                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24863                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24864                                                  TXFBMIX_G, state->fbmix[core]);
24865                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24866                                                  INTPAG_MASTER,
24867                                                  state->intpa_master[core]);
24868                         } else {
24869                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24870                                                  TXFBMIX_A, state->fbmix[core]);
24871                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24872                                                  INTPAA_MASTER,
24873                                                  state->intpa_master[core]);
24874                         }
24875
24876                         write_phy_reg(pi, (core == PHY_CORE_0) ?
24877                                       0xa6 : 0xa7, state->afectrl[core]);
24878                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24879                                       0xa5, state->afeoverride[core]);
24880                 }
24881
24882                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24883                                             (state->mm & 0xff));
24884
24885                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24886         }
24887 }
24888
24889 static void
24890 wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24891                 u32 end)
24892 {
24893         u32 *buf, *src, *dst, sz;
24894
24895         sz = end - start + 1;
24896
24897         buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24898         if (NULL == buf)
24899                 return;
24900
24901         src = buf;
24902         dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24903
24904         wlc_phy_table_read_nphy(pi,
24905                                 (core ==
24906                                  PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24907                                  NPHY_TBL_ID_EPSILONTBL1),
24908                                 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24909
24910         do {
24911                 u32 phy_a1, phy_a2;
24912                 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24913
24914                 phy_a1 = end - min(end, (winsz >> 1));
24915                 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24916                                end + (winsz >> 1));
24917                 phy_a3 = phy_a2 - phy_a1 + 1;
24918                 phy_a6 = 0;
24919                 phy_a7 = 0;
24920
24921                 do {
24922                         wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24923                                                     &phy_a5);
24924                         phy_a6 += phy_a4;
24925                         phy_a7 += phy_a5;
24926                 } while (phy_a2-- != phy_a1);
24927
24928                 phy_a6 /= phy_a3;
24929                 phy_a7 /= phy_a3;
24930                 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24931         } while (end-- != start);
24932
24933         wlc_phy_table_write_nphy(pi,
24934                                  (core ==
24935                                   PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24936                                  NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24937
24938         kfree(buf);
24939 }
24940
24941 static void
24942 wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24943                 enum phy_cal_mode cal_mode, u8 core)
24944 {
24945         u16 phy_a1, phy_a2, phy_a3;
24946         u16 phy_a4, phy_a5;
24947         bool phy_a6;
24948         u8 phy_a7, m[2];
24949         u32 phy_a8 = 0;
24950         struct nphy_txgains phy_a9;
24951
24952         if (NREV_LT(pi->pubpi.phy_rev, 3))
24953                 return;
24954
24955         phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24956
24957         phy_a6 = ((cal_mode == CAL_GCTRL)
24958                   || (cal_mode == CAL_SOFT)) ? true : false;
24959
24960         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24961
24962                 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24963
24964                 if (CHSPEC_IS2G(pi->radio_chanspec))
24965                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
24966                                   (phy_a9.txgm[core] << 12) |
24967                                   (phy_a9.pga[core] << 8) |
24968                                   (txgains->gains.pad[core] << 3) |
24969                                   (phy_a9.ipa[core]));
24970                 else
24971                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
24972                                   (phy_a9.txgm[core] << 12) |
24973                                   (txgains->gains.pga[core] << 8) |
24974                                   (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24975
24976                 wlc_phy_rfctrl_override_1tomany_nphy(
24977                         pi,
24978                         NPHY_REV7_RfctrlOverride_cmd_txgain,
24979                         phy_a5, (1 << core), 0);
24980
24981                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24982                         if ((pi->pubpi.radiorev <= 4)
24983                             || (pi->pubpi.radiorev == 6))
24984                                 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24985                                           60 : 79;
24986                         else
24987                                 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24988                                           45 : 64;
24989                 } else {
24990                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24991                 }
24992
24993                 m[phy_a7] = 0;
24994                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24995
24996                 phy_a2 = 63;
24997
24998                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24999                         if ((pi->pubpi.radiorev == 4)
25000                             || (pi->pubpi.radiorev == 6)) {
25001                                 phy_a1 = 30;
25002                                 phy_a3 = 30;
25003                         } else {
25004                                 phy_a1 = 25;
25005                                 phy_a3 = 25;
25006                         }
25007                 } else {
25008                         if ((pi->pubpi.radiorev == 5)
25009                             || (pi->pubpi.radiorev == 7)
25010                             || (pi->pubpi.radiorev == 8)) {
25011                                 phy_a1 = 25;
25012                                 phy_a3 = 25;
25013                         } else {
25014                                 phy_a1 = 35;
25015                                 phy_a3 = 35;
25016                         }
25017                 }
25018
25019                 if (cal_mode == CAL_GCTRL) {
25020                         if ((pi->pubpi.radiorev == 5)
25021                             && (CHSPEC_IS2G(pi->radio_chanspec)))
25022                                 phy_a1 = 55;
25023                         else if (((pi->pubpi.radiorev == 7) &&
25024                                   (CHSPEC_IS2G(pi->radio_chanspec))) ||
25025                                  ((pi->pubpi.radiorev == 8) &&
25026                                   (CHSPEC_IS2G(pi->radio_chanspec))))
25027                                 phy_a1 = 60;
25028                         else
25029                                 phy_a1 = 63;
25030
25031                 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
25032
25033                         phy_a1 = 35;
25034                         phy_a3 = 35;
25035                 }
25036
25037                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
25038                             0x29b, (0x1 << 0), (1) << 0);
25039
25040                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
25041                             0x29b, (0x1 << 0), (0) << 0);
25042
25043                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25044                             0x2a4, (0x1 << 13), (1) << 13);
25045
25046                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25047                             0x2a4, (0x1 << 13), (0) << 13);
25048
25049                 write_phy_reg(pi, 0x2a1, 0x80);
25050                 write_phy_reg(pi, 0x2a2, 0x100);
25051
25052                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25053                             0x2a4, (0x7 << 4), (11) << 4);
25054
25055                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25056                             0x2a4, (0x7 << 8), (11) << 8);
25057
25058                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25059                             0x2a4, (0x7 << 0), (0x3) << 0);
25060
25061                 write_phy_reg(pi, 0x2e5, 0x20);
25062
25063                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
25064
25065                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
25066
25067                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
25068
25069                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25070                                                   1, ((core == 0) ? 1 : 2), 0,
25071                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
25072                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25073                                                   0, ((core == 0) ? 2 : 1), 0,
25074                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
25075
25076                 write_phy_reg(pi, 0x2be, 1);
25077                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
25078
25079                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25080                                                   0, 0x3, 0,
25081                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
25082
25083                 wlc_phy_table_write_nphy(pi,
25084                                          (core ==
25085                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
25086                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
25087                                          32, &phy_a8);
25088
25089                 if (cal_mode != CAL_GCTRL) {
25090                         if (CHSPEC_IS5G(pi->radio_chanspec))
25091                                 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
25092                 }
25093
25094                 wlc_phy_rfctrl_override_1tomany_nphy(
25095                         pi,
25096                         NPHY_REV7_RfctrlOverride_cmd_txgain,
25097                         phy_a5, (1 << core), 1);
25098
25099         } else {
25100
25101                 if (txgains) {
25102                         if (txgains->useindex) {
25103                                 phy_a4 = 15 - ((txgains->index) >> 3);
25104                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25105                                         if (NREV_GE(pi->pubpi.phy_rev, 6))
25106                                                 phy_a5 = 0x00f7 | (phy_a4 << 8);
25107
25108                                         else
25109                                         if (NREV_IS(pi->pubpi.phy_rev, 5))
25110                                                 phy_a5 = 0x10f7 | (phy_a4 << 8);
25111                                         else
25112                                                 phy_a5 = 0x50f7 | (phy_a4 << 8);
25113                                 } else {
25114                                         phy_a5 = 0x70f7 | (phy_a4 << 8);
25115                                 }
25116                                 wlc_phy_rfctrl_override_nphy(pi,
25117                                                              (0x1 << 13),
25118                                                              phy_a5,
25119                                                              (1 << core), 0);
25120                         } else {
25121                                 wlc_phy_rfctrl_override_nphy(pi,
25122                                                              (0x1 << 13),
25123                                                              0x5bf7,
25124                                                              (1 << core), 0);
25125                         }
25126                 }
25127
25128                 if (CHSPEC_IS2G(pi->radio_chanspec))
25129                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
25130                 else
25131                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
25132
25133                 m[phy_a7] = 0;
25134                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
25135
25136                 phy_a2 = 63;
25137
25138                 if (cal_mode == CAL_FULL) {
25139                         phy_a1 = 25;
25140                         phy_a3 = 25;
25141                 } else if (cal_mode == CAL_SOFT) {
25142                         phy_a1 = 25;
25143                         phy_a3 = 25;
25144                 } else if (cal_mode == CAL_GCTRL) {
25145                         phy_a1 = 63;
25146                         phy_a3 = 25;
25147                 } else {
25148
25149                         phy_a1 = 25;
25150                         phy_a3 = 25;
25151                 }
25152
25153                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
25154                             0x29b, (0x1 << 0), (1) << 0);
25155
25156                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
25157                             0x29b, (0x1 << 0), (0) << 0);
25158
25159                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25160                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25161                                     0x2a4, (0x1 << 13), (1) << 13);
25162
25163                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25164                                     0x2a4, (0x1 << 13), (0) << 13);
25165
25166                         write_phy_reg(pi, 0x2a1, 0x20);
25167                         write_phy_reg(pi, 0x2a2, 0x60);
25168
25169                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25170                                     0x2a4, (0xf << 4), (9) << 4);
25171
25172                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25173                                     0x2a4, (0xf << 8), (9) << 8);
25174
25175                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25176                                     0x2a4, (0xf << 0), (0x2) << 0);
25177
25178                         write_phy_reg(pi, 0x2e5, 0x20);
25179                 } else {
25180                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25181                                     0x2a4, (0x1 << 11), (1) << 11);
25182
25183                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25184                                     0x2a4, (0x1 << 11), (0) << 11);
25185
25186                         write_phy_reg(pi, 0x2a1, 0x80);
25187                         write_phy_reg(pi, 0x2a2, 0x600);
25188
25189                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25190                                     0x2a4, (0x7 << 4), (0) << 4);
25191
25192                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25193                                     0x2a4, (0x7 << 8), (0) << 8);
25194
25195                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25196                                     0x2a4, (0x7 << 0), (0x3) << 0);
25197
25198                         mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
25199
25200                 }
25201
25202                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
25203
25204                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
25205
25206                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
25207
25208                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
25209
25210                 write_phy_reg(pi, 0x2be, 1);
25211                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
25212
25213                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
25214
25215                 wlc_phy_table_write_nphy(pi,
25216                                          (core ==
25217                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
25218                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
25219                                          32, &phy_a8);
25220
25221                 if (cal_mode != CAL_GCTRL)
25222                         wlc_phy_a1_nphy(pi, core, 5, 0, 40);
25223         }
25224 }
25225
25226 static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
25227 {
25228         int phy_a1;
25229         int phy_a2;
25230         bool phy_a3;
25231         struct nphy_ipa_txcalgains phy_a4;
25232         bool phy_a5 = false;
25233         bool phy_a6 = true;
25234         s32 phy_a7, phy_a8;
25235         u32 phy_a9;
25236         int phy_a10;
25237         bool phy_a11 = false;
25238         int phy_a12;
25239         u8 phy_a13 = 0;
25240         u8 phy_a14;
25241         u8 *phy_a15 = NULL;
25242
25243         phy_a4.useindex = true;
25244         phy_a12 = start_gain;
25245
25246         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25247
25248                 phy_a2 = 20;
25249                 phy_a1 = 1;
25250
25251                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25252                         if (pi->pubpi.radiorev == 5) {
25253
25254                                 phy_a15 = pad_gain_codes_used_2057rev5;
25255                                 phy_a13 =
25256                                         sizeof(pad_gain_codes_used_2057rev5) /
25257                                         sizeof(pad_gain_codes_used_2057rev5
25258                                                 [0]) - 1;
25259
25260                         } else if ((pi->pubpi.radiorev == 7)
25261                                    || (pi->pubpi.radiorev == 8)) {
25262
25263                                 phy_a15 = pad_gain_codes_used_2057rev7;
25264                                 phy_a13 =
25265                                         sizeof(pad_gain_codes_used_2057rev7) /
25266                                         sizeof(pad_gain_codes_used_2057rev7
25267                                                 [0]) - 1;
25268
25269                         } else {
25270
25271                                 phy_a15 = pad_all_gain_codes_2057;
25272                                 phy_a13 = sizeof(pad_all_gain_codes_2057) /
25273                                           sizeof(pad_all_gain_codes_2057[0]) -
25274                                           1;
25275                         }
25276
25277                 } else {
25278
25279                         phy_a15 = pga_all_gain_codes_2057;
25280                         phy_a13 = sizeof(pga_all_gain_codes_2057) /
25281                                   sizeof(pga_all_gain_codes_2057[0]) - 1;
25282                 }
25283
25284                 phy_a14 = 0;
25285
25286                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25287                         if (CHSPEC_IS2G(pi->radio_chanspec))
25288                                 phy_a4.gains.pad[core] =
25289                                         (u16) phy_a15[phy_a12];
25290                         else
25291                                 phy_a4.gains.pga[core] =
25292                                         (u16) phy_a15[phy_a12];
25293
25294                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25295
25296                         wlc_phy_table_read_nphy(pi,
25297                                                 (core ==
25298                                                  PHY_CORE_0 ?
25299                                                  NPHY_TBL_ID_EPSILONTBL0 :
25300                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
25301                                                 63, 32, &phy_a9);
25302
25303                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25304
25305                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25306                                   (phy_a8 == 4095) || (phy_a8 == -4096));
25307
25308                         if (!phy_a6 && (phy_a3 != phy_a5)) {
25309                                 if (!phy_a3)
25310                                         phy_a12 -= (u8) phy_a1;
25311
25312                                 phy_a11 = true;
25313                                 break;
25314                         }
25315
25316                         if (phy_a3)
25317                                 phy_a12 += (u8) phy_a1;
25318                         else
25319                                 phy_a12 -= (u8) phy_a1;
25320
25321                         if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25322                                 if (phy_a12 < phy_a14)
25323                                         phy_a12 = phy_a14;
25324                                 else
25325                                         phy_a12 = phy_a13;
25326
25327                                 phy_a11 = true;
25328                                 break;
25329                         }
25330
25331                         phy_a6 = false;
25332                         phy_a5 = phy_a3;
25333                 }
25334
25335         } else {
25336                 phy_a2 = 10;
25337                 phy_a1 = 8;
25338                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25339                         phy_a4.index = (u8) phy_a12;
25340                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25341
25342                         wlc_phy_table_read_nphy(pi,
25343                                                 (core ==
25344                                                  PHY_CORE_0 ?
25345                                                  NPHY_TBL_ID_EPSILONTBL0 :
25346                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
25347                                                 63, 32, &phy_a9);
25348
25349                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25350
25351                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25352                                   (phy_a8 == 4095) || (phy_a8 == -4096));
25353
25354                         if (!phy_a6 && (phy_a3 != phy_a5)) {
25355                                 if (!phy_a3)
25356                                         phy_a12 -= (u8) phy_a1;
25357
25358                                 phy_a11 = true;
25359                                 break;
25360                         }
25361
25362                         if (phy_a3)
25363                                 phy_a12 += (u8) phy_a1;
25364                         else
25365                                 phy_a12 -= (u8) phy_a1;
25366
25367                         if ((phy_a12 < 0) || (phy_a12 > 127)) {
25368                                 if (phy_a12 < 0)
25369                                         phy_a12 = 0;
25370                                 else
25371                                         phy_a12 = 127;
25372
25373                                 phy_a11 = true;
25374                                 break;
25375                         }
25376
25377                         phy_a6 = false;
25378                         phy_a5 = phy_a3;
25379                 }
25380
25381         }
25382
25383         if (NREV_GE(pi->pubpi.phy_rev, 7))
25384                 return (u8) phy_a15[phy_a12];
25385         else
25386                 return (u8) phy_a12;
25387
25388 }
25389
25390 static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25391 {
25392         struct nphy_ipa_txcalgains phy_b1[2];
25393         struct nphy_papd_restore_state phy_b2;
25394         bool phy_b3;
25395         u8 phy_b4;
25396         u8 phy_b5;
25397         s16 phy_b6, phy_b7, phy_b8;
25398         u16 phy_b9;
25399         s16 phy_b10, phy_b11, phy_b12;
25400
25401         phy_b11 = 0;
25402         phy_b12 = 0;
25403         phy_b7 = 0;
25404         phy_b8 = 0;
25405         phy_b6 = 0;
25406
25407         if (pi->nphy_papd_skip == 1)
25408                 return;
25409
25410         phy_b3 = (0 == (R_REG(&pi->regs->maccontrol) & MCTL_EN_MAC));
25411         if (!phy_b3)
25412                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25413
25414         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25415
25416         pi->nphy_force_papd_cal = false;
25417
25418         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25419                 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25420                         wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25421
25422         pi->nphy_papd_last_cal = pi->sh->now;
25423         pi->nphy_papd_recal_counter++;
25424
25425         phy_b4 = pi->nphy_txpwrctrl;
25426         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25427
25428         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25429                                  nphy_papd_scaltbl);
25430         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25431                                  nphy_papd_scaltbl);
25432
25433         phy_b9 = read_phy_reg(pi, 0x01);
25434         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25435
25436         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25437                 s32 i, val = 0;
25438                 for (i = 0; i < 64; i++)
25439                         wlc_phy_table_write_nphy(pi,
25440                                                  ((phy_b5 ==
25441                                                    PHY_CORE_0) ?
25442                                                   NPHY_TBL_ID_EPSILONTBL0 :
25443                                                   NPHY_TBL_ID_EPSILONTBL1), 1,
25444                                                  i, 32, &val);
25445         }
25446
25447         wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25448
25449         phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25450         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25451                 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25452
25453                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25454                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25455                                 if ((pi->pubpi.radiorev == 3)
25456                                     || (pi->pubpi.radiorev == 4)
25457                                     || (pi->pubpi.radiorev == 6)) {
25458                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25459                                                 23;
25460                                 } else if (pi->pubpi.radiorev == 5) {
25461                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25462                                                 0;
25463                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25464                                                 wlc_phy_a3_nphy(
25465                                                         pi,
25466                                                         pi->
25467                                                         nphy_papd_cal_gain_index
25468                                                         [phy_b5],
25469                                                         phy_b5);
25470
25471                                 } else if ((pi->pubpi.radiorev == 7)
25472                                            || (pi->pubpi.radiorev == 8)) {
25473
25474                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25475                                                 0;
25476                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25477                                                 wlc_phy_a3_nphy(
25478                                                         pi,
25479                                                         pi->
25480                                                         nphy_papd_cal_gain_index
25481                                                         [phy_b5],
25482                                                         phy_b5);
25483
25484                                 }
25485
25486                                 phy_b1[phy_b5].gains.pad[phy_b5] =
25487                                         pi->nphy_papd_cal_gain_index[phy_b5];
25488
25489                         } else {
25490                                 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25491                                 pi->nphy_papd_cal_gain_index[phy_b5] =
25492                                         wlc_phy_a3_nphy(
25493                                                 pi,
25494                                                 pi->
25495                                                 nphy_papd_cal_gain_index
25496                                                 [phy_b5], phy_b5);
25497                                 phy_b1[phy_b5].gains.pga[phy_b5] =
25498                                         pi->nphy_papd_cal_gain_index[phy_b5];
25499                         }
25500                 } else {
25501                         phy_b1[phy_b5].useindex = true;
25502                         phy_b1[phy_b5].index = 16;
25503                         phy_b1[phy_b5].index =
25504                                 wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25505                                                 phy_b5);
25506
25507                         pi->nphy_papd_cal_gain_index[phy_b5] =
25508                                 15 - ((phy_b1[phy_b5].index) >> 3);
25509                 }
25510
25511                 switch (pi->nphy_papd_cal_type) {
25512                 case 0:
25513                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25514                         break;
25515                 case 1:
25516                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25517                         break;
25518                 }
25519
25520                 if (NREV_GE(pi->pubpi.phy_rev, 7))
25521                         wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25522         }
25523
25524         if (NREV_LT(pi->pubpi.phy_rev, 7))
25525                 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25526
25527         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25528                 int eps_offset = 0;
25529
25530                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25531                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25532                                 if (pi->pubpi.radiorev == 3)
25533                                         eps_offset = -2;
25534                                 else if (pi->pubpi.radiorev == 5)
25535                                         eps_offset = 3;
25536                                 else
25537                                         eps_offset = -1;
25538                         } else {
25539                                 eps_offset = 2;
25540                         }
25541
25542                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25543                                 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25544                                 phy_b10 = 0;
25545                                 if ((pi->pubpi.radiorev == 3) ||
25546                                     (pi->pubpi.radiorev == 4) ||
25547                                     (pi->pubpi.radiorev == 6)) {
25548                                         phy_b12 = -(
25549                                             nphy_papd_padgain_dlt_2g_2057rev3n4
25550                                                              [phy_b8] + 1) / 2;
25551                                         phy_b10 = -1;
25552                                 } else if (pi->pubpi.radiorev == 5) {
25553                                         phy_b12 = -(
25554                                             nphy_papd_padgain_dlt_2g_2057rev5
25555                                                              [phy_b8] + 1) / 2;
25556                                 } else if ((pi->pubpi.radiorev == 7) ||
25557                                            (pi->pubpi.radiorev == 8)) {
25558                                         phy_b12 = -(
25559                                             nphy_papd_padgain_dlt_2g_2057rev7
25560                                                              [phy_b8] + 1) / 2;
25561                                 }
25562                         } else {
25563                                 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25564                                 if ((pi->pubpi.radiorev == 3) ||
25565                                     (pi->pubpi.radiorev == 4) ||
25566                                     (pi->pubpi.radiorev == 6))
25567                                         phy_b11 =
25568                                                 -(nphy_papd_pgagain_dlt_5g_2057
25569                                                   [phy_b7]
25570                                                   + 1) / 2;
25571                                 else if ((pi->pubpi.radiorev == 7)
25572                                          || (pi->pubpi.radiorev == 8))
25573                                         phy_b11 = -(
25574                                               nphy_papd_pgagain_dlt_5g_2057rev7
25575                                                              [phy_b7] + 1) / 2;
25576
25577                                 phy_b10 = -9;
25578                         }
25579
25580                         if (CHSPEC_IS2G(pi->radio_chanspec))
25581                                 phy_b6 =
25582                                         -60 + 27 + eps_offset + phy_b12 +
25583                                         phy_b10;
25584                         else
25585                                 phy_b6 =
25586                                         -60 + 27 + eps_offset + phy_b11 +
25587                                         phy_b10;
25588
25589                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25590                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
25591
25592                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25593                 } else {
25594                         if (NREV_LT(pi->pubpi.phy_rev, 5))
25595                                 eps_offset = 4;
25596                         else
25597                                 eps_offset = 2;
25598
25599                         phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25600
25601                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25602                                 phy_b11 =
25603                                         -(nphy_papd_pga_gain_delta_ipa_2g[
25604                                                   phy_b7] +
25605                                           1) / 2;
25606                                 phy_b10 = 0;
25607                         } else {
25608                                 phy_b11 =
25609                                         -(nphy_papd_pga_gain_delta_ipa_5g[
25610                                                   phy_b7] +
25611                                           1) / 2;
25612                                 phy_b10 = -9;
25613                         }
25614
25615                         phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25616
25617                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25618                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
25619
25620                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25621                 }
25622         }
25623
25624         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25625                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25626
25627         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25628                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25629
25630         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25631                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25632                             0x2a4, (0x1 << 13), (0) << 13);
25633
25634                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25635                             0x2a4, (0x1 << 13), (0) << 13);
25636
25637         } else {
25638                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25639                             0x2a4, (0x1 << 11), (0) << 11);
25640
25641                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25642                             0x2a4, (0x1 << 11), (0) << 11);
25643
25644         }
25645         pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25646
25647         write_phy_reg(pi, 0x01, phy_b9);
25648
25649         wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25650
25651         wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25652         if (phy_b4 == PHY_TPC_HW_OFF) {
25653                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25654                                          (s8) (pi->nphy_txpwrindex[0].
25655                                                index_internal), false);
25656                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25657                                          (s8) (pi->nphy_txpwrindex[1].
25658                                                index_internal), false);
25659         }
25660
25661         wlc_phy_stay_in_carriersearch_nphy(pi, false);
25662
25663         if (!phy_b3)
25664                 wlapi_enable_mac(pi->sh->physhim);
25665 }
25666
25667 void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25668 {
25669         struct nphy_txgains target_gain;
25670         u8 tx_pwr_ctrl_state;
25671         bool fullcal = true;
25672         bool restore_tx_gain = false;
25673         bool mphase;
25674
25675         if (PHY_MUTED(pi))
25676                 return;
25677
25678         if (caltype == PHY_PERICAL_AUTO)
25679                 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25680         else if (caltype == PHY_PERICAL_PARTIAL)
25681                 fullcal = false;
25682
25683         if (pi->cal_type_override != PHY_PERICAL_AUTO)
25684                 fullcal =
25685                         (pi->cal_type_override ==
25686                          PHY_PERICAL_FULL) ? true : false;
25687
25688         if ((pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT)) {
25689                 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25690                         wlc_phy_cal_perical_mphase_restart(pi);
25691         }
25692
25693         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL))
25694                 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25695
25696         wlapi_suspend_mac_and_wait(pi->sh->physhim);
25697
25698         wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25699
25700         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25701             (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25702                 pi->nphy_cal_orig_pwr_idx[0] =
25703                         (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25704                 pi->nphy_cal_orig_pwr_idx[1] =
25705                         (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25706
25707                 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25708                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25709                                                 0x110, 16,
25710                                                 pi->nphy_cal_orig_tx_gain);
25711                 } else {
25712                         pi->nphy_cal_orig_tx_gain[0] = 0;
25713                         pi->nphy_cal_orig_tx_gain[1] = 0;
25714                 }
25715         }
25716         target_gain = wlc_phy_get_tx_gain_nphy(pi);
25717         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25718         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25719
25720         if (pi->antsel_type == ANTSEL_2x3)
25721                 wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25722
25723         mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25724         if (!mphase) {
25725
25726                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25727                         wlc_phy_precal_txgain_nphy(pi);
25728                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25729                         restore_tx_gain = true;
25730
25731                         target_gain = pi->nphy_cal_target_gain;
25732                 }
25733                 if (0 ==
25734                     wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25735                                             mphase)) {
25736                         if (PHY_IPA(pi))
25737                                 wlc_phy_a4(pi, true);
25738
25739                         wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25740                         wlapi_enable_mac(pi->sh->physhim);
25741                         wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25742                                              10000);
25743                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
25744                         wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25745
25746                         if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25747                                         (pi->first_cal_after_assoc ||
25748                                         (pi->cal_type_override ==
25749                                          PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25750                                 wlc_phy_savecal_nphy(pi);
25751
25752                                 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25753
25754                                 pi->nphy_perical_last = pi->sh->now;
25755                         }
25756                 }
25757                 if (caltype != PHY_PERICAL_AUTO)
25758                         wlc_phy_rssi_cal_nphy(pi);
25759
25760                 if (pi->first_cal_after_assoc
25761                     || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25762                         pi->first_cal_after_assoc = false;
25763                         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25764                         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25765                 }
25766
25767                 if (NREV_GE(pi->pubpi.phy_rev, 3))
25768                         wlc_phy_radio205x_vcocal_nphy(pi);
25769         } else {
25770                 switch (pi->mphase_cal_phase_id) {
25771                 case MPHASE_CAL_STATE_INIT:
25772                         pi->nphy_perical_last = pi->sh->now;
25773                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25774
25775                         if (NREV_GE(pi->pubpi.phy_rev, 3))
25776                                 wlc_phy_precal_txgain_nphy(pi);
25777
25778                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25779                         pi->mphase_cal_phase_id++;
25780                         break;
25781
25782                 case MPHASE_CAL_STATE_TXPHASE0:
25783                 case MPHASE_CAL_STATE_TXPHASE1:
25784                 case MPHASE_CAL_STATE_TXPHASE2:
25785                 case MPHASE_CAL_STATE_TXPHASE3:
25786                 case MPHASE_CAL_STATE_TXPHASE4:
25787                 case MPHASE_CAL_STATE_TXPHASE5:
25788                         if ((pi->radar_percal_mask & 0x10) != 0)
25789                                 pi->nphy_rxcal_active = true;
25790
25791                         if (wlc_phy_cal_txiqlo_nphy
25792                                     (pi, pi->nphy_cal_target_gain, fullcal,
25793                                     true) != 0) {
25794
25795                                 wlc_phy_cal_perical_mphase_reset(pi);
25796                                 break;
25797                         }
25798
25799                         if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25800                             (pi->mphase_cal_phase_id ==
25801                              MPHASE_CAL_STATE_TXPHASE4))
25802                                 pi->mphase_cal_phase_id += 2;
25803                         else
25804                                 pi->mphase_cal_phase_id++;
25805                         break;
25806
25807                 case MPHASE_CAL_STATE_PAPDCAL:
25808                         if ((pi->radar_percal_mask & 0x2) != 0)
25809                                 pi->nphy_rxcal_active = true;
25810
25811                         if (PHY_IPA(pi))
25812                                 wlc_phy_a4(pi, true);
25813
25814                         pi->mphase_cal_phase_id++;
25815                         break;
25816
25817                 case MPHASE_CAL_STATE_RXCAL:
25818                         if ((pi->radar_percal_mask & 0x1) != 0)
25819                                 pi->nphy_rxcal_active = true;
25820                         if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25821                                                   (pi->first_cal_after_assoc ||
25822                                                    (pi->cal_type_override ==
25823                                                     PHY_PERICAL_FULL)) ? 2 : 0,
25824                                                   false) == 0)
25825                                 wlc_phy_savecal_nphy(pi);
25826
25827                         pi->mphase_cal_phase_id++;
25828                         break;
25829
25830                 case MPHASE_CAL_STATE_RSSICAL:
25831                         if ((pi->radar_percal_mask & 0x4) != 0)
25832                                 pi->nphy_rxcal_active = true;
25833                         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25834                         wlc_phy_rssi_cal_nphy(pi);
25835
25836                         if (NREV_GE(pi->pubpi.phy_rev, 3))
25837                                 wlc_phy_radio205x_vcocal_nphy(pi);
25838
25839                         restore_tx_gain = true;
25840
25841                         if (pi->first_cal_after_assoc)
25842                                 pi->mphase_cal_phase_id++;
25843                         else
25844                                 wlc_phy_cal_perical_mphase_reset(pi);
25845
25846                         break;
25847
25848                 case MPHASE_CAL_STATE_IDLETSSI:
25849                         if ((pi->radar_percal_mask & 0x8) != 0)
25850                                 pi->nphy_rxcal_active = true;
25851
25852                         if (pi->first_cal_after_assoc) {
25853                                 pi->first_cal_after_assoc = false;
25854                                 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25855                                 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25856                         }
25857
25858                         wlc_phy_cal_perical_mphase_reset(pi);
25859                         break;
25860
25861                 default:
25862                         wlc_phy_cal_perical_mphase_reset(pi);
25863                         break;
25864                 }
25865         }
25866
25867         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25868                 if (restore_tx_gain) {
25869                         if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25870
25871                                 wlc_phy_txpwr_index_nphy(pi, 1,
25872                                                          pi->
25873                                                          nphy_cal_orig_pwr_idx
25874                                                          [0], false);
25875                                 wlc_phy_txpwr_index_nphy(pi, 2,
25876                                                          pi->
25877                                                          nphy_cal_orig_pwr_idx
25878                                                          [1], false);
25879
25880                                 pi->nphy_txpwrindex[0].index = -1;
25881                                 pi->nphy_txpwrindex[1].index = -1;
25882                         } else {
25883                                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25884                                                          (s8) (pi->
25885                                                                nphy_txpwrindex
25886                                                                [0].
25887                                                                index_internal),
25888                                                          false);
25889                                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25890                                                          (s8) (pi->
25891                                                                nphy_txpwrindex
25892                                                                [1].
25893                                                                index_internal),
25894                                                          false);
25895                         }
25896                 }
25897         }
25898
25899         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25900         wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25901         wlapi_enable_mac(pi->sh->physhim);
25902 }
25903
25904 int
25905 wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25906                         bool fullcal, bool mphase)
25907 {
25908         u16 val;
25909         u16 tbl_buf[11];
25910         u8 cal_cnt;
25911         u16 cal_cmd;
25912         u8 num_cals, max_cal_cmds;
25913         u16 core_no, cal_type;
25914         u16 diq_start = 0;
25915         u8 phy_bw;
25916         u16 max_val;
25917         u16 tone_freq;
25918         u16 gain_save[2];
25919         u16 cal_gain[2];
25920         struct nphy_iqcal_params cal_params[2];
25921         u32 tbl_len;
25922         void *tbl_ptr;
25923         bool ladder_updated[2];
25924         u8 mphase_cal_lastphase = 0;
25925         int bcmerror = 0;
25926         bool phyhang_avoid_state = false;
25927
25928         u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
25929                 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25930                 0x1902,
25931                 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25932                 0x6407
25933         };
25934
25935         u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
25936                 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25937                 0x3200,
25938                 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25939                 0x6407
25940         };
25941
25942         u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
25943                 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25944                 0x1202,
25945                 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25946                 0x4707
25947         };
25948
25949         u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
25950                 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25951                 0x2300,
25952                 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25953                 0x4707
25954         };
25955
25956         u16 tbl_tx_iqlo_cal_startcoefs[] = {
25957                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25958                 0x0000
25959         };
25960
25961         u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
25962                 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25963                 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25964         };
25965
25966         u16 tbl_tx_iqlo_cal_cmds_recal[] = {
25967                 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25968                 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25969         };
25970
25971         u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
25972                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25973                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25974                 0x0000
25975         };
25976
25977         u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
25978                 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25979                 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25980         };
25981
25982         u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
25983                 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25984                 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25985         };
25986
25987         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25988
25989         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25990                 phyhang_avoid_state = pi->phyhang_avoid;
25991                 pi->phyhang_avoid = false;
25992         }
25993
25994         if (CHSPEC_IS40(pi->radio_chanspec))
25995                 phy_bw = 40;
25996         else
25997                 phy_bw = 20;
25998
25999         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
26000
26001         for (core_no = 0; core_no <= 1; core_no++) {
26002                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
26003                                               &cal_params[core_no]);
26004                 cal_gain[core_no] = cal_params[core_no].cal_gain;
26005         }
26006
26007         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
26008
26009         wlc_phy_txcal_radio_setup_nphy(pi);
26010
26011         wlc_phy_txcal_physetup_nphy(pi);
26012
26013         ladder_updated[0] = ladder_updated[1] = false;
26014         if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
26015               (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
26016                && (CHSPEC_IS2G(pi->radio_chanspec))))) {
26017
26018                 if (phy_bw == 40) {
26019                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
26020                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
26021                 } else {
26022                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
26023                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
26024                 }
26025                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
26026                                          16, tbl_ptr);
26027
26028                 if (phy_bw == 40) {
26029                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
26030                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
26031                 } else {
26032                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
26033                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
26034                 }
26035                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
26036                                          16, tbl_ptr);
26037         }
26038
26039         if (NREV_GE(pi->pubpi.phy_rev, 7))
26040                 write_phy_reg(pi, 0xc2, 0x8ad9);
26041         else
26042                 write_phy_reg(pi, 0xc2, 0x8aa9);
26043
26044         max_val = 250;
26045         tone_freq = (phy_bw == 20) ? 2500 : 5000;
26046
26047         if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
26048                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
26049                 bcmerror = 0;
26050         } else {
26051                 bcmerror =
26052                         wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
26053                                              false);
26054         }
26055
26056         if (bcmerror == 0) {
26057
26058                 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
26059                         tbl_ptr = pi->mphase_txcal_bestcoeffs;
26060                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
26061                         if (NREV_LT(pi->pubpi.phy_rev, 3))
26062                                 tbl_len -= 2;
26063                 } else {
26064                         if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
26065
26066                                 tbl_ptr = pi->nphy_txiqlocal_bestc;
26067                                 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
26068                                 if (NREV_LT(pi->pubpi.phy_rev, 3))
26069                                         tbl_len -= 2;
26070                         } else {
26071
26072                                 fullcal = true;
26073
26074                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26075                                         tbl_ptr =
26076                                             tbl_tx_iqlo_cal_startcoefs_nphyrev3;
26077                                         tbl_len = ARRAY_SIZE(
26078                                            tbl_tx_iqlo_cal_startcoefs_nphyrev3);
26079                                 } else {
26080                                         tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
26081                                         tbl_len = ARRAY_SIZE(
26082                                                     tbl_tx_iqlo_cal_startcoefs);
26083                                 }
26084                         }
26085                 }
26086                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
26087                                          16, tbl_ptr);
26088
26089                 if (fullcal) {
26090                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26091                                        ARRAY_SIZE(
26092                                 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
26093                                        ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
26094                 } else {
26095                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26096                                        ARRAY_SIZE(
26097                                 tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
26098                                        ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
26099                 }
26100
26101                 if (mphase) {
26102                         cal_cnt = pi->mphase_txcal_cmdidx;
26103                         if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
26104                                 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
26105                         else
26106                                 num_cals = max_cal_cmds;
26107                 } else {
26108                         cal_cnt = 0;
26109                         num_cals = max_cal_cmds;
26110                 }
26111
26112                 for (; cal_cnt < num_cals; cal_cnt++) {
26113
26114                         if (fullcal) {
26115                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26116                                           tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
26117                                           [cal_cnt] :
26118                                           tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
26119                         } else {
26120                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26121                                           tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
26122                                         cal_cnt]
26123                                           : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
26124                         }
26125
26126                         core_no = ((cal_cmd & 0x3000) >> 12);
26127                         cal_type = ((cal_cmd & 0x0F00) >> 8);
26128
26129                         if (NREV_GE(pi->pubpi.phy_rev, 6) ||
26130                             (NREV_IS(pi->pubpi.phy_rev, 5) &&
26131                              PHY_IPA(pi)
26132                              && (CHSPEC_IS2G(pi->radio_chanspec)))) {
26133                                 if (!ladder_updated[core_no]) {
26134                                         wlc_phy_update_txcal_ladder_nphy(
26135                                                 pi,
26136                                                 core_no);
26137                                         ladder_updated[core_no] = true;
26138                                 }
26139                         }
26140
26141                         val =
26142                                 (cal_params[core_no].
26143                                  ncorr[cal_type] << 8) | NPHY_N_GCTL;
26144                         write_phy_reg(pi, 0xc1, val);
26145
26146                         if ((cal_type == 1) || (cal_type == 3)
26147                             || (cal_type == 4)) {
26148
26149                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26150                                                         1, 69 + core_no, 16,
26151                                                         tbl_buf);
26152
26153                                 diq_start = tbl_buf[0];
26154
26155                                 tbl_buf[0] = 0;
26156                                 wlc_phy_table_write_nphy(pi,
26157                                                          NPHY_TBL_ID_IQLOCAL, 1,
26158                                                          69 + core_no, 16,
26159                                                          tbl_buf);
26160                         }
26161
26162                         write_phy_reg(pi, 0xc0, cal_cmd);
26163
26164                         SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
26165                                  20000);
26166                         if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
26167                                  "HW error: txiq calib"))
26168                                 return -EIO;
26169
26170                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26171                                                 tbl_len, 96, 16, tbl_buf);
26172                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26173                                                  tbl_len, 64, 16, tbl_buf);
26174
26175                         if ((cal_type == 1) || (cal_type == 3)
26176                             || (cal_type == 4)) {
26177
26178                                 tbl_buf[0] = diq_start;
26179
26180                         }
26181
26182                 }
26183
26184                 if (mphase) {
26185                         pi->mphase_txcal_cmdidx = num_cals;
26186                         if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
26187                                 pi->mphase_txcal_cmdidx = 0;
26188                 }
26189
26190                 mphase_cal_lastphase =
26191                         (NREV_LE(pi->pubpi.phy_rev, 2)) ?
26192                         MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
26193
26194                 if (!mphase
26195                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
26196
26197                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
26198                                                 16, tbl_buf);
26199                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26200                                                  16, tbl_buf);
26201
26202                         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26203
26204                                 tbl_buf[0] = 0;
26205                                 tbl_buf[1] = 0;
26206                                 tbl_buf[2] = 0;
26207                                 tbl_buf[3] = 0;
26208
26209                         }
26210                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26211                                                  16, tbl_buf);
26212
26213                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
26214                                                 16, tbl_buf);
26215                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26216                                                  16, tbl_buf);
26217
26218                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26219                                                  16, tbl_buf);
26220
26221                         tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
26222                         if (NREV_LT(pi->pubpi.phy_rev, 3))
26223                                 tbl_len -= 2;
26224
26225                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26226                                                 tbl_len, 96, 16,
26227                                                 pi->nphy_txiqlocal_bestc);
26228
26229                         pi->nphy_txiqlocal_coeffsvalid = true;
26230                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
26231                 } else {
26232                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
26233                         if (NREV_LT(pi->pubpi.phy_rev, 3))
26234                                 tbl_len -= 2;
26235
26236                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26237                                                 tbl_len, 96, 16,
26238                                                 pi->mphase_txcal_bestcoeffs);
26239                 }
26240
26241                 wlc_phy_stopplayback_nphy(pi);
26242
26243                 write_phy_reg(pi, 0xc2, 0x0000);
26244
26245         }
26246
26247         wlc_phy_txcal_phycleanup_nphy(pi);
26248
26249         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26250                                  gain_save);
26251
26252         wlc_phy_txcal_radio_cleanup_nphy(pi);
26253
26254         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26255                 if (!mphase
26256                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
26257                         wlc_phy_tx_iq_war_nphy(pi);
26258         }
26259
26260         if (NREV_GE(pi->pubpi.phy_rev, 4))
26261                 pi->phyhang_avoid = phyhang_avoid_state;
26262
26263         wlc_phy_stay_in_carriersearch_nphy(pi, false);
26264
26265         return bcmerror;
26266 }
26267
26268 static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
26269 {
26270         u16 tbl_buf[7];
26271
26272         if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
26273             (pi->nphy_txiqlocal_coeffsvalid)) {
26274                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26275                                         ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
26276
26277                 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26278                     (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26279                     (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26280                     (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26281
26282                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26283                                                  16, pi->nphy_txiqlocal_bestc);
26284
26285                         tbl_buf[0] = 0;
26286                         tbl_buf[1] = 0;
26287                         tbl_buf[2] = 0;
26288                         tbl_buf[3] = 0;
26289                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26290                                                  16, tbl_buf);
26291
26292                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26293                                                  16,
26294                                                  &pi->nphy_txiqlocal_bestc[5]);
26295
26296                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26297                                                  16,
26298                                                  &pi->nphy_txiqlocal_bestc[5]);
26299                 }
26300         }
26301 }
26302
26303 void
26304 wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26305                           struct nphy_iq_comp *pcomp)
26306 {
26307         if (write) {
26308                 write_phy_reg(pi, 0x9a, pcomp->a0);
26309                 write_phy_reg(pi, 0x9b, pcomp->b0);
26310                 write_phy_reg(pi, 0x9c, pcomp->a1);
26311                 write_phy_reg(pi, 0x9d, pcomp->b1);
26312         } else {
26313                 pcomp->a0 = read_phy_reg(pi, 0x9a);
26314                 pcomp->b0 = read_phy_reg(pi, 0x9b);
26315                 pcomp->a1 = read_phy_reg(pi, 0x9c);
26316                 pcomp->b1 = read_phy_reg(pi, 0x9d);
26317         }
26318 }
26319
26320 void
26321 wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26322                        u16 num_samps, u8 wait_time, u8 wait_for_crs)
26323 {
26324         u8 core;
26325
26326         write_phy_reg(pi, 0x12b, num_samps);
26327         mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26328         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26329                     (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26330
26331         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26332
26333         SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26334                  10000);
26335         if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26336                  "HW error: rxiq est"))
26337                 return;
26338
26339         if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26340                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26341                         est[core].i_pwr =
26342                                 (read_phy_reg(pi,
26343                                               NPHY_IqestipwrAccHi(core)) << 16)
26344                                 | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26345                         est[core].q_pwr =
26346                                 (read_phy_reg(pi,
26347                                               NPHY_IqestqpwrAccHi(core)) << 16)
26348                                 | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26349                         est[core].iq_prod =
26350                                 (read_phy_reg(pi,
26351                                               NPHY_IqestIqAccHi(core)) << 16) |
26352                                 read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26353                 }
26354         }
26355 }
26356
26357 #define CAL_RETRY_CNT 2
26358 static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26359 {
26360         u8 curr_core;
26361         struct phy_iq_est est[PHY_CORE_MAX];
26362         struct nphy_iq_comp old_comp, new_comp;
26363         s32 iq = 0;
26364         u32 ii = 0, qq = 0;
26365         s16 iq_nbits, qq_nbits, brsh, arsh;
26366         s32 a, b, temp;
26367         int bcmerror = 0;
26368         uint cal_retry = 0;
26369
26370         if (core_mask == 0x0)
26371                 return;
26372
26373         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26374         new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26375         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26376
26377 cal_try:
26378         wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26379
26380         new_comp = old_comp;
26381
26382         for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26383
26384                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26385                         iq = est[curr_core].iq_prod;
26386                         ii = est[curr_core].i_pwr;
26387                         qq = est[curr_core].q_pwr;
26388                 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26389                         iq = est[curr_core].iq_prod;
26390                         ii = est[curr_core].i_pwr;
26391                         qq = est[curr_core].q_pwr;
26392                 } else {
26393                         continue;
26394                 }
26395
26396                 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26397                         bcmerror = -EBADE;
26398                         break;
26399                 }
26400
26401                 iq_nbits = wlc_phy_nbits(iq);
26402                 qq_nbits = wlc_phy_nbits(qq);
26403
26404                 arsh = 10 - (30 - iq_nbits);
26405                 if (arsh >= 0) {
26406                         a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26407                         temp = (s32) (ii >> arsh);
26408                         if (temp == 0) {
26409                                 bcmerror = -EBADE;
26410                                 break;
26411                         }
26412                 } else {
26413                         a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26414                         temp = (s32) (ii << -arsh);
26415                         if (temp == 0) {
26416                                 bcmerror = -EBADE;
26417                                 break;
26418                         }
26419                 }
26420
26421                 a /= temp;
26422
26423                 brsh = qq_nbits - 31 + 20;
26424                 if (brsh >= 0) {
26425                         b = (qq << (31 - qq_nbits));
26426                         temp = (s32) (ii >> brsh);
26427                         if (temp == 0) {
26428                                 bcmerror = -EBADE;
26429                                 break;
26430                         }
26431                 } else {
26432                         b = (qq << (31 - qq_nbits));
26433                         temp = (s32) (ii << -brsh);
26434                         if (temp == 0) {
26435                                 bcmerror = -EBADE;
26436                                 break;
26437                         }
26438                 }
26439                 b /= temp;
26440                 b -= a * a;
26441                 b = (s32) int_sqrt((unsigned long) b);
26442                 b -= (1 << 10);
26443
26444                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26445                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26446                                 new_comp.a0 = (s16) a & 0x3ff;
26447                                 new_comp.b0 = (s16) b & 0x3ff;
26448                         } else {
26449
26450                                 new_comp.a0 = (s16) b & 0x3ff;
26451                                 new_comp.b0 = (s16) a & 0x3ff;
26452                         }
26453                 }
26454                 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26455                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26456                                 new_comp.a1 = (s16) a & 0x3ff;
26457                                 new_comp.b1 = (s16) b & 0x3ff;
26458                         } else {
26459
26460                                 new_comp.a1 = (s16) b & 0x3ff;
26461                                 new_comp.b1 = (s16) a & 0x3ff;
26462                         }
26463                 }
26464         }
26465
26466         if (bcmerror != 0) {
26467                 printk(KERN_DEBUG "%s: Failed, cnt = %d\n", __func__,
26468                        cal_retry);
26469
26470                 if (cal_retry < CAL_RETRY_CNT) {
26471                         cal_retry++;
26472                         goto cal_try;
26473                 }
26474
26475                 new_comp = old_comp;
26476         }
26477
26478         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26479 }
26480
26481 static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26482 {
26483         u16 offtune_val;
26484         u16 bias_g = 0;
26485         u16 bias_a = 0;
26486
26487         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26488                 if (rx_core == PHY_CORE_0) {
26489                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26490                                 pi->tx_rx_cal_radio_saveregs[0] =
26491                                         read_radio_reg(pi,
26492                                             RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26493                                 pi->tx_rx_cal_radio_saveregs[1] =
26494                                         read_radio_reg(pi,
26495                                             RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26496
26497                                 write_radio_reg(pi,
26498                                         RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26499                                         0x3);
26500                                 write_radio_reg(pi,
26501                                         RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26502                                         0xaf);
26503
26504                         } else {
26505                                 pi->tx_rx_cal_radio_saveregs[0] =
26506                                         read_radio_reg(pi,
26507                                             RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26508                                 pi->tx_rx_cal_radio_saveregs[1] =
26509                                         read_radio_reg(pi,
26510                                             RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26511
26512                                 write_radio_reg(
26513                                         pi,
26514                                         RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26515                                         0x3);
26516                                 write_radio_reg(
26517                                         pi,
26518                                         RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26519                                         0x7f);
26520                         }
26521
26522                 } else {
26523                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26524                                 pi->tx_rx_cal_radio_saveregs[0] =
26525                                         read_radio_reg(pi,
26526                                             RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26527                                 pi->tx_rx_cal_radio_saveregs[1] =
26528                                         read_radio_reg(pi,
26529                                             RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26530
26531                                 write_radio_reg(
26532                                         pi,
26533                                         RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26534                                         0x3);
26535                                 write_radio_reg(
26536                                         pi,
26537                                         RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26538                                         0xaf);
26539
26540                         } else {
26541                                 pi->tx_rx_cal_radio_saveregs[0] =
26542                                         read_radio_reg(pi,
26543                                             RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26544                                 pi->tx_rx_cal_radio_saveregs[1] =
26545                                         read_radio_reg(pi,
26546                                             RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26547
26548                                 write_radio_reg(pi,
26549                                         RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26550                                         0x3);
26551                                 write_radio_reg(pi,
26552                                         RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26553                                         0x7f);
26554                         }
26555                 }
26556
26557         } else {
26558                 if (rx_core == PHY_CORE_0) {
26559                         pi->tx_rx_cal_radio_saveregs[0] =
26560                                 read_radio_reg(pi,
26561                                                RADIO_2056_TX_RXIQCAL_TXMUX |
26562                                                RADIO_2056_TX1);
26563                         pi->tx_rx_cal_radio_saveregs[1] =
26564                                 read_radio_reg(pi,
26565                                                RADIO_2056_RX_RXIQCAL_RXMUX |
26566                                                RADIO_2056_RX0);
26567
26568                         if (pi->pubpi.radiorev >= 5) {
26569                                 pi->tx_rx_cal_radio_saveregs[2] =
26570                                         read_radio_reg(pi,
26571                                                        RADIO_2056_RX_RXSPARE2 |
26572                                                        RADIO_2056_RX0);
26573                                 pi->tx_rx_cal_radio_saveregs[3] =
26574                                         read_radio_reg(pi,
26575                                                        RADIO_2056_TX_TXSPARE2 |
26576                                                        RADIO_2056_TX1);
26577                         }
26578
26579                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26580
26581                                 if (pi->pubpi.radiorev >= 5) {
26582                                         pi->tx_rx_cal_radio_saveregs[4] =
26583                                                 read_radio_reg(pi,
26584                                                       RADIO_2056_RX_LNAA_MASTER
26585                                                       | RADIO_2056_RX0);
26586
26587                                         write_radio_reg(
26588                                                 pi,
26589                                                 RADIO_2056_RX_LNAA_MASTER
26590                                                 | RADIO_2056_RX0, 0x40);
26591
26592                                         write_radio_reg(pi,
26593                                                 RADIO_2056_TX_TXSPARE2 |
26594                                                 RADIO_2056_TX1, bias_a);
26595
26596                                         write_radio_reg(pi,
26597                                                 RADIO_2056_RX_RXSPARE2 |
26598                                                 RADIO_2056_RX0, bias_a);
26599                                 } else {
26600                                         pi->tx_rx_cal_radio_saveregs[4] =
26601                                                 read_radio_reg(pi,
26602                                                         RADIO_2056_RX_LNAA_TUNE
26603                                                         | RADIO_2056_RX0);
26604
26605                                         offtune_val =
26606                                                 (pi->tx_rx_cal_radio_saveregs
26607                                                  [2] & 0xF0) >> 8;
26608                                         offtune_val =
26609                                                 (offtune_val <= 0x7) ? 0xF : 0;
26610
26611                                         mod_radio_reg(pi,
26612                                                       RADIO_2056_RX_LNAA_TUNE |
26613                                                       RADIO_2056_RX0, 0xF0,
26614                                                       (offtune_val << 8));
26615                                 }
26616
26617                                 write_radio_reg(pi,
26618                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26619                                                 RADIO_2056_TX1, 0x9);
26620                                 write_radio_reg(pi,
26621                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26622                                                 RADIO_2056_RX0, 0x9);
26623                         } else {
26624                                 if (pi->pubpi.radiorev >= 5) {
26625                                         pi->tx_rx_cal_radio_saveregs[4] =
26626                                                 read_radio_reg(
26627                                                       pi,
26628                                                       RADIO_2056_RX_LNAG_MASTER
26629                                                     | RADIO_2056_RX0);
26630
26631                                         write_radio_reg(
26632                                                 pi,
26633                                                 RADIO_2056_RX_LNAG_MASTER
26634                                                 | RADIO_2056_RX0, 0x40);
26635
26636                                         write_radio_reg(
26637                                                 pi,
26638                                                 RADIO_2056_TX_TXSPARE2
26639                                                 |
26640                                                 RADIO_2056_TX1, bias_g);
26641
26642                                         write_radio_reg(
26643                                                 pi,
26644                                                 RADIO_2056_RX_RXSPARE2
26645                                                 |
26646                                                 RADIO_2056_RX0, bias_g);
26647
26648                                 } else {
26649                                         pi->tx_rx_cal_radio_saveregs[4] =
26650                                                 read_radio_reg(
26651                                                         pi,
26652                                                         RADIO_2056_RX_LNAG_TUNE
26653                                                         | RADIO_2056_RX0);
26654
26655                                         offtune_val =
26656                                                 (pi->
26657                                                  tx_rx_cal_radio_saveregs[2] &
26658                                                  0xF0) >> 8;
26659                                         offtune_val =
26660                                                 (offtune_val <= 0x7) ? 0xF : 0;
26661
26662                                         mod_radio_reg(pi,
26663                                                       RADIO_2056_RX_LNAG_TUNE |
26664                                                       RADIO_2056_RX0, 0xF0,
26665                                                       (offtune_val << 8));
26666                                 }
26667
26668                                 write_radio_reg(pi,
26669                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26670                                                 RADIO_2056_TX1, 0x6);
26671                                 write_radio_reg(pi,
26672                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26673                                                 RADIO_2056_RX0, 0x6);
26674                         }
26675
26676                 } else {
26677                         pi->tx_rx_cal_radio_saveregs[0] =
26678                                 read_radio_reg(pi,
26679                                                RADIO_2056_TX_RXIQCAL_TXMUX |
26680                                                RADIO_2056_TX0);
26681                         pi->tx_rx_cal_radio_saveregs[1] =
26682                                 read_radio_reg(pi,
26683                                                RADIO_2056_RX_RXIQCAL_RXMUX |
26684                                                RADIO_2056_RX1);
26685
26686                         if (pi->pubpi.radiorev >= 5) {
26687                                 pi->tx_rx_cal_radio_saveregs[2] =
26688                                         read_radio_reg(pi,
26689                                                        RADIO_2056_RX_RXSPARE2 |
26690                                                        RADIO_2056_RX1);
26691                                 pi->tx_rx_cal_radio_saveregs[3] =
26692                                         read_radio_reg(pi,
26693                                                        RADIO_2056_TX_TXSPARE2 |
26694                                                        RADIO_2056_TX0);
26695                         }
26696
26697                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26698
26699                                 if (pi->pubpi.radiorev >= 5) {
26700                                         pi->tx_rx_cal_radio_saveregs[4] =
26701                                                 read_radio_reg(
26702                                                        pi,
26703                                                        RADIO_2056_RX_LNAA_MASTER
26704                                                        | RADIO_2056_RX1);
26705
26706                                         write_radio_reg(
26707                                                 pi,
26708                                                 RADIO_2056_RX_LNAA_MASTER |
26709                                                 RADIO_2056_RX1, 0x40);
26710
26711                                         write_radio_reg(
26712                                                 pi,
26713                                                 RADIO_2056_TX_TXSPARE2
26714                                                 |
26715                                                 RADIO_2056_TX0, bias_a);
26716
26717                                         write_radio_reg(
26718                                                 pi,
26719                                                 RADIO_2056_RX_RXSPARE2
26720                                                 |
26721                                                 RADIO_2056_RX1, bias_a);
26722                                 } else {
26723                                         pi->tx_rx_cal_radio_saveregs[4] =
26724                                                 read_radio_reg(
26725                                                         pi,
26726                                                         RADIO_2056_RX_LNAA_TUNE
26727                                                         | RADIO_2056_RX1);
26728
26729                                         offtune_val =
26730                                                 (pi->
26731                                                  tx_rx_cal_radio_saveregs[2] &
26732                                                  0xF0) >> 8;
26733                                         offtune_val =
26734                                                 (offtune_val <= 0x7) ? 0xF : 0;
26735
26736                                         mod_radio_reg(pi,
26737                                                       RADIO_2056_RX_LNAA_TUNE |
26738                                                       RADIO_2056_RX1, 0xF0,
26739                                                       (offtune_val << 8));
26740                                 }
26741
26742                                 write_radio_reg(pi,
26743                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26744                                                 RADIO_2056_TX0, 0x9);
26745                                 write_radio_reg(pi,
26746                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26747                                                 RADIO_2056_RX1, 0x9);
26748                         } else {
26749                                 if (pi->pubpi.radiorev >= 5) {
26750                                         pi->tx_rx_cal_radio_saveregs[4] =
26751                                                 read_radio_reg(
26752                                                       pi,
26753                                                       RADIO_2056_RX_LNAG_MASTER
26754                                                     | RADIO_2056_RX1);
26755
26756                                         write_radio_reg(
26757                                                 pi,
26758                                                 RADIO_2056_RX_LNAG_MASTER
26759                                                 | RADIO_2056_RX1, 0x40);
26760
26761                                         write_radio_reg(
26762                                                 pi,
26763                                                 RADIO_2056_TX_TXSPARE2
26764                                                 |
26765                                                 RADIO_2056_TX0, bias_g);
26766
26767                                         write_radio_reg(
26768                                                 pi,
26769                                                 RADIO_2056_RX_RXSPARE2
26770                                                 |
26771                                                 RADIO_2056_RX1, bias_g);
26772                                 } else {
26773                                         pi->tx_rx_cal_radio_saveregs[4] =
26774                                                 read_radio_reg(
26775                                                         pi,
26776                                                         RADIO_2056_RX_LNAG_TUNE
26777                                                         | RADIO_2056_RX1);
26778
26779                                         offtune_val =
26780                                                 (pi->
26781                                                  tx_rx_cal_radio_saveregs[2] &
26782                                                  0xF0) >> 8;
26783                                         offtune_val =
26784                                                 (offtune_val <= 0x7) ? 0xF : 0;
26785
26786                                         mod_radio_reg(pi,
26787                                                       RADIO_2056_RX_LNAG_TUNE |
26788                                                       RADIO_2056_RX1, 0xF0,
26789                                                       (offtune_val << 8));
26790                                 }
26791
26792                                 write_radio_reg(pi,
26793                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26794                                                 RADIO_2056_TX0, 0x6);
26795                                 write_radio_reg(pi,
26796                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26797                                                 RADIO_2056_RX1, 0x6);
26798                         }
26799                 }
26800         }
26801 }
26802
26803 static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26804 {
26805         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26806                 if (rx_core == PHY_CORE_0) {
26807                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26808                                 write_radio_reg(
26809                                         pi,
26810                                         RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26811                                         pi->
26812                                         tx_rx_cal_radio_saveregs[0]);
26813                                 write_radio_reg(
26814                                         pi,
26815                                         RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26816                                         pi->
26817                                         tx_rx_cal_radio_saveregs[1]);
26818
26819                         } else {
26820                                 write_radio_reg(
26821                                         pi,
26822                                         RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26823                                         pi->
26824                                         tx_rx_cal_radio_saveregs[0]);
26825                                 write_radio_reg(
26826                                         pi,
26827                                         RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26828                                         pi->
26829                                         tx_rx_cal_radio_saveregs[1]);
26830                         }
26831
26832                 } else {
26833                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26834                                 write_radio_reg(
26835                                         pi,
26836                                         RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26837                                         pi->
26838                                         tx_rx_cal_radio_saveregs[0]);
26839                                 write_radio_reg(
26840                                         pi,
26841                                         RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26842                                         pi->
26843                                         tx_rx_cal_radio_saveregs[1]);
26844
26845                         } else {
26846                                 write_radio_reg(
26847                                         pi,
26848                                         RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26849                                         pi->
26850                                         tx_rx_cal_radio_saveregs[0]);
26851                                 write_radio_reg(
26852                                         pi,
26853                                         RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26854                                         pi->
26855                                         tx_rx_cal_radio_saveregs[1]);
26856                         }
26857                 }
26858
26859         } else {
26860                 if (rx_core == PHY_CORE_0) {
26861                         write_radio_reg(pi,
26862                                         RADIO_2056_TX_RXIQCAL_TXMUX |
26863                                         RADIO_2056_TX1,
26864                                         pi->tx_rx_cal_radio_saveregs[0]);
26865
26866                         write_radio_reg(pi,
26867                                         RADIO_2056_RX_RXIQCAL_RXMUX |
26868                                         RADIO_2056_RX0,
26869                                         pi->tx_rx_cal_radio_saveregs[1]);
26870
26871                         if (pi->pubpi.radiorev >= 5) {
26872                                 write_radio_reg(pi,
26873                                                 RADIO_2056_RX_RXSPARE2 |
26874                                                 RADIO_2056_RX0,
26875                                                 pi->
26876                                                 tx_rx_cal_radio_saveregs[2]);
26877
26878                                 write_radio_reg(pi,
26879                                                 RADIO_2056_TX_TXSPARE2 |
26880                                                 RADIO_2056_TX1,
26881                                                 pi->
26882                                                 tx_rx_cal_radio_saveregs[3]);
26883                         }
26884
26885                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26886                                 if (pi->pubpi.radiorev >= 5)
26887                                         write_radio_reg(
26888                                                 pi,
26889                                                 RADIO_2056_RX_LNAA_MASTER
26890                                                 | RADIO_2056_RX0,
26891                                                 pi->
26892                                                 tx_rx_cal_radio_saveregs
26893                                                 [4]);
26894                                 else
26895                                         write_radio_reg(
26896                                                 pi,
26897                                                 RADIO_2056_RX_LNAA_TUNE
26898                                                 | RADIO_2056_RX0,
26899                                                 pi->
26900                                                 tx_rx_cal_radio_saveregs
26901                                                 [4]);
26902                         } else {
26903                                 if (pi->pubpi.radiorev >= 5)
26904                                         write_radio_reg(
26905                                                 pi,
26906                                                 RADIO_2056_RX_LNAG_MASTER
26907                                                 | RADIO_2056_RX0,
26908                                                 pi->
26909                                                 tx_rx_cal_radio_saveregs
26910                                                 [4]);
26911                                 else
26912                                         write_radio_reg(
26913                                                 pi,
26914                                                 RADIO_2056_RX_LNAG_TUNE
26915                                                 | RADIO_2056_RX0,
26916                                                 pi->
26917                                                 tx_rx_cal_radio_saveregs
26918                                                 [4]);
26919                         }
26920
26921                 } else {
26922                         write_radio_reg(pi,
26923                                         RADIO_2056_TX_RXIQCAL_TXMUX |
26924                                         RADIO_2056_TX0,
26925                                         pi->tx_rx_cal_radio_saveregs[0]);
26926
26927                         write_radio_reg(pi,
26928                                         RADIO_2056_RX_RXIQCAL_RXMUX |
26929                                         RADIO_2056_RX1,
26930                                         pi->tx_rx_cal_radio_saveregs[1]);
26931
26932                         if (pi->pubpi.radiorev >= 5) {
26933                                 write_radio_reg(pi,
26934                                                 RADIO_2056_RX_RXSPARE2 |
26935                                                 RADIO_2056_RX1,
26936                                                 pi->
26937                                                 tx_rx_cal_radio_saveregs[2]);
26938
26939                                 write_radio_reg(pi,
26940                                                 RADIO_2056_TX_TXSPARE2 |
26941                                                 RADIO_2056_TX0,
26942                                                 pi->
26943                                                 tx_rx_cal_radio_saveregs[3]);
26944                         }
26945
26946                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26947                                 if (pi->pubpi.radiorev >= 5)
26948                                         write_radio_reg(
26949                                                 pi,
26950                                                 RADIO_2056_RX_LNAA_MASTER
26951                                                 | RADIO_2056_RX1,
26952                                                 pi->
26953                                                 tx_rx_cal_radio_saveregs
26954                                                 [4]);
26955                                 else
26956                                         write_radio_reg(
26957                                                 pi,
26958                                                 RADIO_2056_RX_LNAA_TUNE
26959                                                 | RADIO_2056_RX1,
26960                                                 pi->
26961                                                 tx_rx_cal_radio_saveregs
26962                                                 [4]);
26963                         } else {
26964                                 if (pi->pubpi.radiorev >= 5)
26965                                         write_radio_reg(
26966                                                 pi,
26967                                                 RADIO_2056_RX_LNAG_MASTER
26968                                                 | RADIO_2056_RX1,
26969                                                 pi->
26970                                                 tx_rx_cal_radio_saveregs
26971                                                 [4]);
26972                                 else
26973                                         write_radio_reg(
26974                                                 pi,
26975                                                 RADIO_2056_RX_LNAG_TUNE
26976                                                 | RADIO_2056_RX1,
26977                                                 pi->
26978                                                 tx_rx_cal_radio_saveregs
26979                                                 [4]);
26980                         }
26981                 }
26982         }
26983 }
26984
26985 static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26986 {
26987         u8 tx_core;
26988         u16 rx_antval, tx_antval;
26989
26990         if (NREV_GE(pi->pubpi.phy_rev, 7))
26991                 tx_core = rx_core;
26992         else
26993                 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26994
26995         pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26996         pi->tx_rx_cal_phy_saveregs[1] =
26997                 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26998         pi->tx_rx_cal_phy_saveregs[2] =
26999                 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
27000         pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
27001         pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
27002         pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
27003         pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
27004         pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
27005         pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
27006         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27007                 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
27008                 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
27009                 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
27010                 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
27011         }
27012
27013         pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
27014         pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
27015         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
27016                     0x29b, (0x1 << 0), (0) << 0);
27017
27018         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
27019                     0x29b, (0x1 << 0), (0) << 0);
27020
27021         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27022
27023                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27024
27025                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
27026
27027         } else {
27028
27029                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27030                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27031                 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
27032                 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
27033         }
27034
27035         mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
27036         mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
27037                     (0x1 << 2), (0x1 << 2));
27038         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27039                 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27040                             (0x1 << 0) | (0x1 << 1), 0);
27041                 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27042                             0x8f : 0xa5,
27043                             (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
27044         }
27045
27046         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
27047                                          RADIO_MIMO_CORESEL_CORE1 |
27048                                          RADIO_MIMO_CORESEL_CORE2);
27049
27050         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27051                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
27052                                                   0, 0, 0,
27053                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
27054                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
27055                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
27056                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
27057                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
27058                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
27059                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
27060                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
27061                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
27062                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
27063                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
27064                 if (CHSPEC_IS40(pi->radio_chanspec))
27065                         wlc_phy_rfctrl_override_nphy_rev7(
27066                                 pi,
27067                                 (0x1 << 7),
27068                                 2, 0, 0,
27069                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
27070                 else
27071                         wlc_phy_rfctrl_override_nphy_rev7(
27072                                 pi,
27073                                 (0x1 << 7),
27074                                 0, 0, 0,
27075                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
27076
27077                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
27078                                                   0, 0, 0,
27079                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
27080                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
27081                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
27082         } else {
27083                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
27084         }
27085
27086         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
27087
27088         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27089
27090                 wlc_phy_rfctrlintc_override_nphy(pi,
27091                                                  NPHY_RfctrlIntc_override_TRSW,
27092                                                  0x1, rx_core + 1);
27093         } else {
27094
27095                 if (rx_core == PHY_CORE_0) {
27096                         rx_antval = 0x1;
27097                         tx_antval = 0x8;
27098                 } else {
27099                         rx_antval = 0x4;
27100                         tx_antval = 0x2;
27101                 }
27102
27103                 wlc_phy_rfctrlintc_override_nphy(pi,
27104                                                  NPHY_RfctrlIntc_override_TRSW,
27105                                                  rx_antval, rx_core + 1);
27106                 wlc_phy_rfctrlintc_override_nphy(pi,
27107                                                  NPHY_RfctrlIntc_override_TRSW,
27108                                                  tx_antval, tx_core + 1);
27109         }
27110 }
27111
27112 static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
27113 {
27114
27115         write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
27116         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
27117                       pi->tx_rx_cal_phy_saveregs[1]);
27118         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
27119                       pi->tx_rx_cal_phy_saveregs[2]);
27120         write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
27121         write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
27122
27123         write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
27124         write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
27125         write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
27126         write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
27127         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27128                 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
27129                 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
27130                 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
27131                 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
27132         }
27133
27134         write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
27135         write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
27136 }
27137
27138 static void
27139 wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
27140                                  u16 *rxgain, u8 cal_type)
27141 {
27142
27143         u16 num_samps;
27144         struct phy_iq_est est[PHY_CORE_MAX];
27145         u8 tx_core;
27146         struct nphy_iq_comp save_comp, zero_comp;
27147         u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
27148             thresh_pwr = 10000;
27149         s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
27150         bool gainctrl_done = false;
27151         u8 mix_tia_gain = 3;
27152         s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
27153         s8 curr_gaintbl_index = 3;
27154         u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
27155         const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
27156         u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
27157         int fine_gain_idx;
27158         s8 txpwrindex;
27159         u16 nphy_rxcal_txgain[2];
27160
27161         if (NREV_GE(pi->pubpi.phy_rev, 7))
27162                 tx_core = rx_core;
27163         else
27164                 tx_core = 1 - rx_core;
27165
27166         num_samps = 1024;
27167         desired_log2_pwr = (cal_type == 0) ? 13 : 13;
27168
27169         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
27170         zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
27171         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
27172
27173         if (CHSPEC_IS5G(pi->radio_chanspec)) {
27174                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27175                         mix_tia_gain = 3;
27176                 else if (NREV_GE(pi->pubpi.phy_rev, 4))
27177                         mix_tia_gain = 4;
27178                 else
27179                         mix_tia_gain = 6;
27180                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27181                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
27182                 else
27183                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
27184         } else {
27185                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27186                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
27187                 else
27188                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
27189         }
27190
27191         do {
27192
27193                 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
27194                         0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
27195                 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
27196                 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
27197                 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
27198                 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
27199                 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
27200
27201                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27202                         wlc_phy_rfctrl_override_1tomany_nphy(
27203                                 pi,
27204                                 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27205                                 ((lpf_biq1 << 12) |
27206                                  (lpf_biq0 << 8) |
27207                                  (mix_tia_gain << 4) | (lna2 << 2)
27208                                  | lna1), 0x3, 0);
27209                 else
27210                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27211                                                      ((hpvga << 12) |
27212                                                       (lpf_biq1 << 10) |
27213                                                       (lpf_biq0 << 8) |
27214                                                       (mix_tia_gain << 4) |
27215                                                       (lna2 << 2) | lna1), 0x3,
27216                                                      0);
27217
27218                 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
27219
27220                 if (txpwrindex == -1) {
27221                         nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
27222                         nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
27223                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
27224                                                  2, 0x110, 16,
27225                                                  nphy_rxcal_txgain);
27226                 } else {
27227                         wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
27228                                                  false);
27229                 }
27230
27231                 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
27232                                      NPHY_RXCAL_TONEFREQ_40MHz :
27233                                      NPHY_RXCAL_TONEFREQ_20MHz,
27234                                      NPHY_RXCAL_TONEAMP, 0, cal_type, false);
27235
27236                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27237                 i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
27238                 q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
27239                 curr_pwr = i_pwr + q_pwr;
27240
27241                 switch (gainctrl_dirn) {
27242                 case NPHY_RXCAL_GAIN_INIT:
27243                         if (curr_pwr > thresh_pwr) {
27244                                 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
27245                                 prev_gaintbl_index = curr_gaintbl_index;
27246                                 curr_gaintbl_index--;
27247                         } else {
27248                                 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
27249                                 prev_gaintbl_index = curr_gaintbl_index;
27250                                 curr_gaintbl_index++;
27251                         }
27252                         break;
27253
27254                 case NPHY_RXCAL_GAIN_UP:
27255                         if (curr_pwr > thresh_pwr) {
27256                                 gainctrl_done = true;
27257                                 optim_pwr = prev_pwr;
27258                                 optim_gaintbl_index = prev_gaintbl_index;
27259                         } else {
27260                                 prev_gaintbl_index = curr_gaintbl_index;
27261                                 curr_gaintbl_index++;
27262                         }
27263                         break;
27264
27265                 case NPHY_RXCAL_GAIN_DOWN:
27266                         if (curr_pwr > thresh_pwr) {
27267                                 prev_gaintbl_index = curr_gaintbl_index;
27268                                 curr_gaintbl_index--;
27269                         } else {
27270                                 gainctrl_done = true;
27271                                 optim_pwr = curr_pwr;
27272                                 optim_gaintbl_index = curr_gaintbl_index;
27273                         }
27274                         break;
27275
27276                 default:
27277                         break;
27278                 }
27279
27280                 if ((curr_gaintbl_index < 0) ||
27281                     (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27282                         gainctrl_done = true;
27283                         optim_pwr = curr_pwr;
27284                         optim_gaintbl_index = prev_gaintbl_index;
27285                 } else {
27286                         prev_pwr = curr_pwr;
27287                 }
27288
27289                 wlc_phy_stopplayback_nphy(pi);
27290         } while (!gainctrl_done);
27291
27292         hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27293         lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27294         lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27295         lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27296         lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27297         txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27298
27299         actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27300         delta_pwr = desired_log2_pwr - actual_log2_pwr;
27301
27302         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27303                 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27304
27305                 if (fine_gain_idx + (int)lpf_biq0 > 10)
27306                         lpf_biq1 = 10 - lpf_biq0;
27307                 else
27308                         lpf_biq1 = (u16) max(fine_gain_idx, 0);
27309
27310                 wlc_phy_rfctrl_override_1tomany_nphy(
27311                         pi,
27312                         NPHY_REV7_RfctrlOverride_cmd_rxgain,
27313                         ((lpf_biq1 << 12) |
27314                          (lpf_biq0 << 8) |
27315                          (mix_tia_gain << 4) |
27316                          (lna2 << 2) | lna1), 0x3,
27317                         0);
27318         } else {
27319                 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27320                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27321                                              ((hpvga << 12) |
27322                                               (lpf_biq1 << 10) |
27323                                               (lpf_biq0 << 8) |
27324                                               (mix_tia_gain << 4) |
27325                                               (lna2 << 2) |
27326                                               lna1), 0x3, 0);
27327         }
27328
27329         if (rxgain != NULL) {
27330                 *rxgain++ = lna1;
27331                 *rxgain++ = lna2;
27332                 *rxgain++ = mix_tia_gain;
27333                 *rxgain++ = lpf_biq0;
27334                 *rxgain++ = lpf_biq1;
27335                 *rxgain = hpvga;
27336         }
27337
27338         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27339 }
27340
27341 static void
27342 wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27343                             u8 cal_type)
27344 {
27345         wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27346 }
27347
27348 static u8
27349 wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27350 {
27351         u32 target_bws[2] = { 9500, 21000 };
27352         u32 ref_tones[2] = { 3000, 6000 };
27353         u32 target_bw, ref_tone;
27354
27355         u32 target_pwr_ratios[2] = { 28606, 18468 };
27356         u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27357
27358         u16 start_rccal_ovr_val = 128;
27359         u16 txlpf_rccal_lpc_ovr_val = 128;
27360         u16 rxlpf_rccal_hpc_ovr_val = 159;
27361
27362         u16 orig_txlpf_rccal_lpc_ovr_val;
27363         u16 orig_rxlpf_rccal_hpc_ovr_val;
27364         u16 radio_addr_offset_rx;
27365         u16 radio_addr_offset_tx;
27366         u16 orig_dcBypass;
27367         u16 orig_RxStrnFilt40Num[6];
27368         u16 orig_RxStrnFilt40Den[4];
27369         u16 orig_rfctrloverride[2];
27370         u16 orig_rfctrlauxreg[2];
27371         u16 orig_rfctrlrssiothers;
27372         u16 tx_lpf_bw = 4;
27373
27374         u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27375         u16 lpf_hpc = 7, hpvga_hpc = 7;
27376
27377         s8 rccal_stepsize;
27378         u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27379         u32 ref_iq_vals = 0, target_iq_vals = 0;
27380         u16 num_samps, log_num_samps = 10;
27381         struct phy_iq_est est[PHY_CORE_MAX];
27382
27383         if (NREV_GE(pi->pubpi.phy_rev, 7))
27384                 return 0;
27385
27386         num_samps = (1 << log_num_samps);
27387
27388         if (CHSPEC_IS40(pi->radio_chanspec)) {
27389                 target_bw = target_bws[1];
27390                 target_pwr_ratio = target_pwr_ratios[1];
27391                 ref_tone = ref_tones[1];
27392                 rx_lpf_bw = rx_lpf_bws[1];
27393         } else {
27394                 target_bw = target_bws[0];
27395                 target_pwr_ratio = target_pwr_ratios[0];
27396                 ref_tone = ref_tones[0];
27397                 rx_lpf_bw = rx_lpf_bws[0];
27398         }
27399
27400         if (core_idx == 0) {
27401                 radio_addr_offset_rx = RADIO_2056_RX0;
27402                 radio_addr_offset_tx =
27403                         (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27404         } else {
27405                 radio_addr_offset_rx = RADIO_2056_RX1;
27406                 radio_addr_offset_tx =
27407                         (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27408         }
27409
27410         orig_txlpf_rccal_lpc_ovr_val =
27411                 read_radio_reg(pi,
27412                                (RADIO_2056_TX_TXLPF_RCCAL |
27413                                 radio_addr_offset_tx));
27414         orig_rxlpf_rccal_hpc_ovr_val =
27415                 read_radio_reg(pi,
27416                                (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27417                                 radio_addr_offset_rx));
27418
27419         orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27420
27421         orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27422         orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27423         orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27424         orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27425         orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27426         orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27427         orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27428         orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27429         orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27430         orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27431
27432         orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27433         orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27434         orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27435         orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27436         orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27437
27438         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27439                         txlpf_rccal_lpc_ovr_val);
27440
27441         write_radio_reg(pi,
27442                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27443                         rxlpf_rccal_hpc_ovr_val);
27444
27445         mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27446
27447         write_phy_reg(pi, 0x267, 0x02d4);
27448         write_phy_reg(pi, 0x268, 0x0000);
27449         write_phy_reg(pi, 0x269, 0x0000);
27450         write_phy_reg(pi, 0x26a, 0x0000);
27451         write_phy_reg(pi, 0x26b, 0x0000);
27452         write_phy_reg(pi, 0x26c, 0x02d4);
27453         write_phy_reg(pi, 0x26d, 0x0000);
27454         write_phy_reg(pi, 0x26e, 0x0000);
27455         write_phy_reg(pi, 0x26f, 0x0000);
27456         write_phy_reg(pi, 0x270, 0x0000);
27457
27458         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27459         or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27460         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27461         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27462
27463         mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27464                     (0x7 << 10), (tx_lpf_bw << 10));
27465         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27466                     (0x7 << 0), (hpvga_hpc << 0));
27467         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27468                     (0x7 << 4), (lpf_hpc << 4));
27469         mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27470                     (0x7 << 8), (rx_lpf_bw << 8));
27471
27472         rccal_stepsize = 16;
27473         rccal_val = start_rccal_ovr_val + rccal_stepsize;
27474
27475         while (rccal_stepsize >= 0) {
27476                 write_radio_reg(pi,
27477                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27478                                  radio_addr_offset_rx), rccal_val);
27479
27480                 if (rccal_stepsize == 16) {
27481
27482                         wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27483                                              0, 1, false);
27484                         udelay(2);
27485
27486                         wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27487
27488                         if (core_idx == 0)
27489                                 ref_iq_vals =
27490                                         max_t(u32, (est[0].i_pwr +
27491                                                     est[0].q_pwr) >>
27492                                               (log_num_samps + 1),
27493                                               1);
27494                         else
27495                                 ref_iq_vals =
27496                                         max_t(u32, (est[1].i_pwr +
27497                                                     est[1].q_pwr) >>
27498                                               (log_num_samps + 1),
27499                                               1);
27500
27501                         wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27502                                              0, 1, false);
27503                         udelay(2);
27504                 }
27505
27506                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27507
27508                 if (core_idx == 0)
27509                         target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27510                                          (log_num_samps + 1);
27511                 else
27512                         target_iq_vals =
27513                                 (est[1].i_pwr +
27514                                  est[1].q_pwr) >> (log_num_samps + 1);
27515
27516                 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27517
27518                 if (rccal_stepsize == 0)
27519                         rccal_stepsize--;
27520                 else if (rccal_stepsize == 1) {
27521                         last_rccal_val = rccal_val;
27522                         rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27523                         last_pwr_ratio = pwr_ratio;
27524                         rccal_stepsize--;
27525                 } else {
27526                         rccal_stepsize = (rccal_stepsize >> 1);
27527                         rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27528                                       rccal_stepsize : (-rccal_stepsize));
27529                 }
27530
27531                 if (rccal_stepsize == -1) {
27532                         best_rccal_val =
27533                                 (abs((int)last_pwr_ratio -
27534                                      (int)target_pwr_ratio) <
27535                                  abs((int)pwr_ratio -
27536                                      (int)target_pwr_ratio)) ? last_rccal_val :
27537                                 rccal_val;
27538
27539                         if (CHSPEC_IS40(pi->radio_chanspec)) {
27540                                 if ((best_rccal_val > 140)
27541                                     || (best_rccal_val < 135))
27542                                         best_rccal_val = 138;
27543                         } else {
27544                                 if ((best_rccal_val > 142)
27545                                     || (best_rccal_val < 137))
27546                                         best_rccal_val = 140;
27547                         }
27548
27549                         write_radio_reg(pi,
27550                                         (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27551                                          radio_addr_offset_rx), best_rccal_val);
27552                 }
27553         }
27554
27555         wlc_phy_stopplayback_nphy(pi);
27556
27557         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27558                         orig_txlpf_rccal_lpc_ovr_val);
27559         write_radio_reg(pi,
27560                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27561                         orig_rxlpf_rccal_hpc_ovr_val);
27562
27563         mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27564
27565         write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27566         write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27567         write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27568         write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27569         write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27570         write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27571         write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27572         write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27573         write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27574         write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27575
27576         write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27577         write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27578         write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27579         write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27580         write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27581
27582         pi->nphy_anarxlpf_adjusted = false;
27583
27584         return best_rccal_val - 0x80;
27585 }
27586
27587 #define WAIT_FOR_SCOPE  4000
27588 static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27589                                       struct nphy_txgains target_gain,
27590                                       u8 cal_type, bool debug)
27591 {
27592         u16 orig_BBConfig;
27593         u8 core_no, rx_core;
27594         u8 best_rccal[2];
27595         u16 gain_save[2];
27596         u16 cal_gain[2];
27597         struct nphy_iqcal_params cal_params[2];
27598         u8 rxcore_state;
27599         s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27600         s8 txlpf_idac;
27601         bool phyhang_avoid_state = false;
27602         bool skip_rxiqcal = false;
27603
27604         orig_BBConfig = read_phy_reg(pi, 0x01);
27605         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27606
27607         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27608
27609         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27610                 phyhang_avoid_state = pi->phyhang_avoid;
27611                 pi->phyhang_avoid = false;
27612         }
27613
27614         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27615
27616         for (core_no = 0; core_no <= 1; core_no++) {
27617                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27618                                               &cal_params[core_no]);
27619                 cal_gain[core_no] = cal_params[core_no].cal_gain;
27620         }
27621
27622         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27623
27624         rxcore_state = wlc_phy_rxcore_getstate_nphy(
27625                 (struct brcms_phy_pub *) pi);
27626
27627         for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27628
27629                 skip_rxiqcal =
27630                         ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27631
27632                 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27633
27634                 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27635
27636                 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27637
27638                         wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27639
27640                         wlc_phy_tx_tone_nphy(pi,
27641                                              (CHSPEC_IS40(
27642                                                       pi->radio_chanspec)) ?
27643                                              NPHY_RXCAL_TONEFREQ_40MHz :
27644                                              NPHY_RXCAL_TONEFREQ_20MHz,
27645                                              NPHY_RXCAL_TONEAMP, 0, cal_type,
27646                                              false);
27647
27648                         if (debug)
27649                                 mdelay(WAIT_FOR_SCOPE);
27650
27651                         wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27652                         wlc_phy_stopplayback_nphy(pi);
27653                 }
27654
27655                 if (((cal_type == 1) || (cal_type == 2))
27656                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
27657
27658                         if (rx_core == PHY_CORE_1) {
27659
27660                                 if (rxcore_state == 1)
27661                                         wlc_phy_rxcore_setstate_nphy(
27662                                                 (struct brcms_phy_pub *) pi, 3);
27663
27664                                 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27665                                                             1);
27666
27667                                 best_rccal[rx_core] =
27668                                         wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27669                                 pi->nphy_rccal_value = best_rccal[rx_core];
27670
27671                                 if (rxcore_state == 1)
27672                                         wlc_phy_rxcore_setstate_nphy(
27673                                                 (struct brcms_phy_pub *) pi,
27674                                                 rxcore_state);
27675                         }
27676                 }
27677
27678                 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27679
27680                 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27681                 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27682         }
27683
27684         if ((cal_type == 1) || (cal_type == 2)) {
27685
27686                 best_rccal[0] = best_rccal[1];
27687                 write_radio_reg(pi,
27688                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27689                                  RADIO_2056_RX0), (best_rccal[0] | 0x80));
27690
27691                 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27692                         rxlpf_rccal_hpc =
27693                                 (((int)best_rccal[rx_core] - 12) >> 1) + 10;
27694                         txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27695
27696                         if (PHY_IPA(pi)) {
27697                                 txlpf_rccal_lpc +=
27698                                         (pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27699                                 txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27700                                              0x0e : 0x13;
27701                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27702                                                  TXLPF_IDAC_4, txlpf_idac);
27703                         }
27704
27705                         rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27706                                               0);
27707                         txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27708                                               0);
27709
27710                         write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27711                                              ((rx_core ==
27712                                                PHY_CORE_0) ? RADIO_2056_RX0 :
27713                                               RADIO_2056_RX1)),
27714                                         (rxlpf_rccal_hpc | 0x80));
27715
27716                         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27717                                              ((rx_core ==
27718                                                PHY_CORE_0) ? RADIO_2056_TX0 :
27719                                               RADIO_2056_TX1)),
27720                                         (txlpf_rccal_lpc | 0x80));
27721                 }
27722         }
27723
27724         write_phy_reg(pi, 0x01, orig_BBConfig);
27725
27726         wlc_phy_resetcca_nphy(pi);
27727
27728         if (NREV_GE(pi->pubpi.phy_rev, 7))
27729                 wlc_phy_rfctrl_override_1tomany_nphy(
27730                         pi,
27731                         NPHY_REV7_RfctrlOverride_cmd_rxgain,
27732                         0, 0x3, 1);
27733         else
27734                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27735
27736         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27737
27738         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27739                                  gain_save);
27740
27741         if (NREV_GE(pi->pubpi.phy_rev, 4))
27742                 pi->phyhang_avoid = phyhang_avoid_state;
27743
27744         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27745
27746         return 0;
27747 }
27748
27749 static int
27750 wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27751                            struct nphy_txgains target_gain, bool debug)
27752 {
27753         struct phy_iq_est est[PHY_CORE_MAX];
27754         u8 core_num, rx_core, tx_core;
27755         u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27756         u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27757         u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27758         s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27759         s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27760         u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27761         u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27762         u16 num_samps;
27763         u32 i_pwr, q_pwr, tot_pwr[3];
27764         u8 gain_pass, use_hpf_num;
27765         u16 mask, val1, val2;
27766         u16 core_no;
27767         u16 gain_save[2];
27768         u16 cal_gain[2];
27769         struct nphy_iqcal_params cal_params[2];
27770         u8 phy_bw;
27771         int bcmerror = 0;
27772         bool first_playtone = true;
27773
27774         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27775
27776         if (NREV_LT(pi->pubpi.phy_rev, 2))
27777                 wlc_phy_reapply_txcal_coeffs_nphy(pi);
27778
27779         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27780
27781         for (core_no = 0; core_no <= 1; core_no++) {
27782                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27783                                               &cal_params[core_no]);
27784                 cal_gain[core_no] = cal_params[core_no].cal_gain;
27785         }
27786
27787         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27788
27789         num_samps = 1024;
27790         desired_log2_pwr = 13;
27791
27792         for (core_num = 0; core_num < 2; core_num++) {
27793
27794                 rx_core = core_num;
27795                 tx_core = 1 - core_num;
27796
27797                 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27798                 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27799                                                 0xa6 : 0xa7);
27800                 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27801                 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27802                                                  0x91 : 0x92);
27803                 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27804                                                  0x91 : 0x92);
27805
27806                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27807                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27808
27809                 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27810                            ((0x1 << 1) | (0x1 << 2)));
27811                 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27812
27813                 if (((pi->nphy_rxcalparams) & 0xff000000))
27814                         write_phy_reg(pi,
27815                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27816                                       (CHSPEC_IS5G(pi->radio_chanspec) ?
27817                                         0x140 : 0x110));
27818                 else
27819                         write_phy_reg(pi,
27820                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27821                                       (CHSPEC_IS5G(pi->radio_chanspec) ?
27822                                        0x180 : 0x120));
27823
27824                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27825                               (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27826                                0x114));
27827
27828                 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27829                 if (rx_core == PHY_CORE_0) {
27830                         val1 = RADIO_2055_COUPLE_RX_MASK;
27831                         val2 = RADIO_2055_COUPLE_TX_MASK;
27832                 } else {
27833                         val1 = RADIO_2055_COUPLE_TX_MASK;
27834                         val2 = RADIO_2055_COUPLE_RX_MASK;
27835                 }
27836
27837                 if ((pi->nphy_rxcalparams & 0x10000)) {
27838                         mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27839                                       val1);
27840                         mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27841                                       val2);
27842                 }
27843
27844                 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27845
27846                         if (debug)
27847                                 mdelay(WAIT_FOR_SCOPE);
27848
27849                         if (gain_pass < 3) {
27850                                 curr_lna = lna_vals[gain_pass];
27851                                 curr_hpf1 = hpf1_vals[gain_pass];
27852                                 curr_hpf2 = hpf2_vals[gain_pass];
27853                         } else {
27854
27855                                 if (tot_pwr[1] > 10000) {
27856                                         curr_lna = lna_vals[2];
27857                                         curr_hpf1 = hpf1_vals[2];
27858                                         curr_hpf2 = hpf2_vals[2];
27859                                         use_hpf_num = 1;
27860                                         curr_hpf = curr_hpf1;
27861                                         actual_log2_pwr =
27862                                                 wlc_phy_nbits(tot_pwr[2]);
27863                                 } else {
27864                                         if (tot_pwr[0] > 10000) {
27865                                                 curr_lna = lna_vals[1];
27866                                                 curr_hpf1 = hpf1_vals[1];
27867                                                 curr_hpf2 = hpf2_vals[1];
27868                                                 use_hpf_num = 1;
27869                                                 curr_hpf = curr_hpf1;
27870                                                 actual_log2_pwr =
27871                                                         wlc_phy_nbits(
27872                                                                 tot_pwr[1]);
27873                                         } else {
27874                                                 curr_lna = lna_vals[0];
27875                                                 curr_hpf1 = hpf1_vals[0];
27876                                                 curr_hpf2 = hpf2_vals[0];
27877                                                 use_hpf_num = 2;
27878                                                 curr_hpf = curr_hpf2;
27879                                                 actual_log2_pwr =
27880                                                         wlc_phy_nbits(
27881                                                                 tot_pwr[0]);
27882                                         }
27883                                 }
27884
27885                                 hpf_change = desired_log2_pwr - actual_log2_pwr;
27886                                 curr_hpf += hpf_change;
27887                                 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27888                                 if (use_hpf_num == 1)
27889                                         curr_hpf1 = curr_hpf;
27890                                 else
27891                                         curr_hpf2 = curr_hpf;
27892                         }
27893
27894                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27895                                                      ((curr_hpf2 << 8) |
27896                                                       (curr_hpf1 << 4) |
27897                                                       (curr_lna << 2)), 0x3, 0);
27898                         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27899
27900                         wlc_phy_stopplayback_nphy(pi);
27901
27902                         if (first_playtone) {
27903                                 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27904                                                 (u16) (pi->nphy_rxcalparams &
27905                                                        0xffff), 0, 0, true);
27906                                 first_playtone = false;
27907                         } else {
27908                                 phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27909                                           40 : 20;
27910                                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27911                                                         0, 0, 0, true);
27912                         }
27913
27914                         if (bcmerror == 0) {
27915                                 if (gain_pass < 3) {
27916
27917                                         wlc_phy_rx_iq_est_nphy(pi, est,
27918                                                                num_samps, 32,
27919                                                                0);
27920                                         i_pwr = (est[rx_core].i_pwr +
27921                                                  num_samps / 2) / num_samps;
27922                                         q_pwr = (est[rx_core].q_pwr +
27923                                                  num_samps / 2) / num_samps;
27924                                         tot_pwr[gain_pass] = i_pwr + q_pwr;
27925                                 } else {
27926
27927                                         wlc_phy_calc_rx_iq_comp_nphy(pi,
27928                                                                      (1 <<
27929                                                                       rx_core));
27930                                 }
27931
27932                                 wlc_phy_stopplayback_nphy(pi);
27933                         }
27934
27935                         if (bcmerror != 0)
27936                                 break;
27937                 }
27938
27939                 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27940                 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27941
27942                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27943                               0x92, orig_RfctrlIntcTx);
27944                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27945                               0x92, orig_RfctrlIntcRx);
27946                 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27947                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27948                               0xa7, orig_AfectrlCore);
27949                 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27950
27951                 if (bcmerror != 0)
27952                         break;
27953         }
27954
27955         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27956         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27957
27958         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27959                                  gain_save);
27960
27961         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27962
27963         return bcmerror;
27964 }
27965
27966 int
27967 wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27968                       u8 cal_type, bool debug)
27969 {
27970         if (NREV_GE(pi->pubpi.phy_rev, 7))
27971                 cal_type = 0;
27972
27973         if (NREV_GE(pi->pubpi.phy_rev, 3))
27974                 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27975                                                   debug);
27976         else
27977                 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27978 }
27979
27980 void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27981 {
27982         uint core;
27983         u32 txgain;
27984         u16 rad_gain, dac_gain, bbmult, m1m2;
27985         u8 txpi[2], chan_freq_range;
27986         s32 rfpwr_offset;
27987
27988         if (pi->phyhang_avoid)
27989                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27990
27991         if (pi->sh->sromrev < 4) {
27992                 txpi[0] = txpi[1] = 72;
27993         } else {
27994
27995                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27996                 switch (chan_freq_range) {
27997                 case WL_CHAN_FREQ_RANGE_2G:
27998                         txpi[0] = pi->nphy_txpid2g[0];
27999                         txpi[1] = pi->nphy_txpid2g[1];
28000                         break;
28001                 case WL_CHAN_FREQ_RANGE_5GL:
28002                         txpi[0] = pi->nphy_txpid5gl[0];
28003                         txpi[1] = pi->nphy_txpid5gl[1];
28004                         break;
28005                 case WL_CHAN_FREQ_RANGE_5GM:
28006                         txpi[0] = pi->nphy_txpid5g[0];
28007                         txpi[1] = pi->nphy_txpid5g[1];
28008                         break;
28009                 case WL_CHAN_FREQ_RANGE_5GH:
28010                         txpi[0] = pi->nphy_txpid5gh[0];
28011                         txpi[1] = pi->nphy_txpid5gh[1];
28012                         break;
28013                 default:
28014                         txpi[0] = txpi[1] = 91;
28015                         break;
28016                 }
28017         }
28018
28019         if (NREV_GE(pi->pubpi.phy_rev, 7))
28020                 txpi[0] = txpi[1] = 30;
28021         else if (NREV_GE(pi->pubpi.phy_rev, 3))
28022                 txpi[0] = txpi[1] = 40;
28023
28024         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
28025
28026                 if ((txpi[0] < 40) || (txpi[0] > 100) ||
28027                     (txpi[1] < 40) || (txpi[1] > 100))
28028                         txpi[0] = txpi[1] = 91;
28029         }
28030
28031         pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
28032         pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
28033         pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
28034         pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
28035
28036         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28037                 uint phyrev = pi->pubpi.phy_rev;
28038
28039                 if (NREV_GE(phyrev, 3)) {
28040                         if (PHY_IPA(pi)) {
28041                                 u32 *tx_gaintbl =
28042                                         wlc_phy_get_ipa_gaintbl_nphy(pi);
28043                                 txgain = tx_gaintbl[txpi[core]];
28044                         } else {
28045                                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28046                                         if (NREV_IS(phyrev, 3)) {
28047                                                 txgain =
28048                                                       nphy_tpc_5GHz_txgain_rev3
28049                                                                    [txpi[core]];
28050                                         } else if (NREV_IS(phyrev, 4)) {
28051                                                 txgain = (
28052                                                   pi->srom_fem5g.extpagain ==
28053                                                   3) ?
28054                                                   nphy_tpc_5GHz_txgain_HiPwrEPA
28055                                                  [txpi[core]] :
28056                                                  nphy_tpc_5GHz_txgain_rev4
28057                                                  [txpi[core]];
28058                                         } else {
28059                                                 txgain =
28060                                                       nphy_tpc_5GHz_txgain_rev5
28061                                                                    [txpi[core]];
28062                                         }
28063                                 } else {
28064                                         if (NREV_GE(phyrev, 5) &&
28065                                             (pi->srom_fem2g.extpagain == 3)) {
28066                                                 txgain =
28067                                                         nphy_tpc_txgain_HiPwrEPA
28068                                                         [txpi[core]];
28069                                         } else {
28070                                                 txgain = nphy_tpc_txgain_rev3
28071                                                          [txpi[core]];
28072                                         }
28073                                 }
28074                         }
28075                 } else {
28076                         txgain = nphy_tpc_txgain[txpi[core]];
28077                 }
28078
28079                 if (NREV_GE(phyrev, 3))
28080                         rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
28081                 else
28082                         rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
28083
28084                 if (NREV_GE(phyrev, 7))
28085                         dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
28086                 else
28087                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28088
28089                 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28090
28091                 if (NREV_GE(phyrev, 3))
28092                         mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28093                                          0xa5), (0x1 << 8), (0x1 << 8));
28094                 else
28095                         mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28096
28097                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
28098
28099                 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28100                                          &rad_gain);
28101
28102                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28103                 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28104                 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
28105                 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28106
28107                 if (PHY_IPA(pi)) {
28108                         wlc_phy_table_read_nphy(pi,
28109                                                 (core ==
28110                                                  PHY_CORE_0 ?
28111                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
28112                                                  NPHY_TBL_ID_CORE2TXPWRCTL), 1,
28113                                                 576 + txpi[core], 32,
28114                                                 &rfpwr_offset);
28115
28116                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28117                                     0x29b, (0x1ff << 4),
28118                                     ((s16) rfpwr_offset) << 4);
28119
28120                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28121                                     0x29b, (0x1 << 2), (1) << 2);
28122
28123                 }
28124         }
28125
28126         and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
28127
28128         if (pi->phyhang_avoid)
28129                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28130 }
28131
28132 static void
28133 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
28134                                 u8 tmp_max_pwr, u8 rate_start,
28135                                 u8 rate_end)
28136 {
28137         u8 rate;
28138         u8 word_num, nibble_num;
28139         u8 tmp_nibble;
28140
28141         for (rate = rate_start; rate <= rate_end; rate++) {
28142                 word_num = (rate - rate_start) >> 2;
28143                 nibble_num = (rate - rate_start) & 0x3;
28144                 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
28145
28146                 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
28147         }
28148 }
28149
28150 static void
28151 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
28152                             u8 rate_start, u8 rate_end)
28153 {
28154         u8 rate;
28155
28156         for (rate = rate_start; rate <= rate_end; rate++)
28157                 srom_max[rate] -= 2 * pwr_offset;
28158 }
28159
28160 void
28161 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
28162                                 u8 rate_mcs_end, u8 rate_ofdm_start)
28163 {
28164         u8 rate1, rate2;
28165
28166         rate2 = rate_ofdm_start;
28167         for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
28168                 power[rate1] = power[rate2];
28169                 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
28170         }
28171         power[rate_mcs_end] = power[rate_mcs_end - 1];
28172 }
28173
28174 void
28175 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
28176                                 u8 rate_ofdm_end, u8 rate_mcs_start)
28177 {
28178         u8 rate1, rate2;
28179
28180         for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
28181              rate1 <= rate_ofdm_end; rate1++, rate2++) {
28182                 power[rate1] = power[rate2];
28183                 if (rate1 == rate_ofdm_start)
28184                         power[++rate1] = power[rate2];
28185         }
28186 }
28187
28188 void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
28189 {
28190         uint rate1, rate2, band_num;
28191         u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
28192         u8 tmp_max_pwr = 0;
28193         u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
28194         u8 *tx_srom_max_rate = NULL;
28195
28196         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
28197              band_num++) {
28198                 switch (band_num) {
28199                 case 0:
28200
28201                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
28202                                           pi->nphy_pwrctrl_info[1].max_pwr_2g);
28203
28204                         pwr_offsets1[0] = pi->cck2gpo;
28205                         wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
28206                                                         pwr_offsets1,
28207                                                         tmp_max_pwr,
28208                                                         TXP_FIRST_CCK,
28209                                                         TXP_LAST_CCK);
28210
28211                         pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
28212                         pwr_offsets1[1] =
28213                                 (u16) (pi->ofdm2gpo >> 16) & 0xffff;
28214
28215                         pwr_offsets2 = pi->mcs2gpo;
28216
28217                         tmp_cddpo = pi->cdd2gpo;
28218                         tmp_stbcpo = pi->stbc2gpo;
28219                         tmp_bw40po = pi->bw402gpo;
28220
28221                         tx_srom_max_rate = pi->tx_srom_max_rate_2g;
28222                         break;
28223                 case 1:
28224
28225                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
28226                                           pi->nphy_pwrctrl_info[1].max_pwr_5gm);
28227
28228                         pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
28229                         pwr_offsets1[1] =
28230                                 (u16) (pi->ofdm5gpo >> 16) & 0xffff;
28231
28232                         pwr_offsets2 = pi->mcs5gpo;
28233
28234                         tmp_cddpo = pi->cdd5gpo;
28235                         tmp_stbcpo = pi->stbc5gpo;
28236                         tmp_bw40po = pi->bw405gpo;
28237
28238                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
28239                         break;
28240                 case 2:
28241
28242                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
28243                                           pi->nphy_pwrctrl_info[1].max_pwr_5gl);
28244
28245                         pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
28246                         pwr_offsets1[1] =
28247                                 (u16) (pi->ofdm5glpo >> 16) & 0xffff;
28248
28249                         pwr_offsets2 = pi->mcs5glpo;
28250
28251                         tmp_cddpo = pi->cdd5glpo;
28252                         tmp_stbcpo = pi->stbc5glpo;
28253                         tmp_bw40po = pi->bw405glpo;
28254
28255                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
28256                         break;
28257                 case 3:
28258
28259                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
28260                                           pi->nphy_pwrctrl_info[1].max_pwr_5gh);
28261
28262                         pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
28263                         pwr_offsets1[1] =
28264                                 (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
28265
28266                         pwr_offsets2 = pi->mcs5ghpo;
28267
28268                         tmp_cddpo = pi->cdd5ghpo;
28269                         tmp_stbcpo = pi->stbc5ghpo;
28270                         tmp_bw40po = pi->bw405ghpo;
28271
28272                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
28273                         break;
28274                 }
28275
28276                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
28277                                                 tmp_max_pwr, TXP_FIRST_OFDM,
28278                                                 TXP_LAST_OFDM);
28279
28280                 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
28281                                                 TXP_FIRST_MCS_20_SISO,
28282                                                 TXP_LAST_MCS_20_SISO,
28283                                                 TXP_FIRST_OFDM);
28284
28285                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28286                                                 tmp_max_pwr,
28287                                                 TXP_FIRST_MCS_20_CDD,
28288                                                 TXP_LAST_MCS_20_CDD);
28289
28290                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28291                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28292                                                     TXP_FIRST_MCS_20_CDD,
28293                                                     TXP_LAST_MCS_20_CDD);
28294
28295                 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28296                                                 TXP_FIRST_OFDM_20_CDD,
28297                                                 TXP_LAST_OFDM_20_CDD,
28298                                                 TXP_FIRST_MCS_20_CDD);
28299
28300                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28301                                                 tmp_max_pwr,
28302                                                 TXP_FIRST_MCS_20_STBC,
28303                                                 TXP_LAST_MCS_20_STBC);
28304
28305                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28306                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28307                                                     tmp_stbcpo,
28308                                                     TXP_FIRST_MCS_20_STBC,
28309                                                     TXP_LAST_MCS_20_STBC);
28310
28311                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28312                                                 &pwr_offsets2[2], tmp_max_pwr,
28313                                                 TXP_FIRST_MCS_20_SDM,
28314                                                 TXP_LAST_MCS_20_SDM);
28315
28316                 if (NPHY_IS_SROM_REINTERPRET) {
28317
28318                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28319                                                         &pwr_offsets2[4],
28320                                                         tmp_max_pwr,
28321                                                         TXP_FIRST_MCS_40_SISO,
28322                                                         TXP_LAST_MCS_40_SISO);
28323
28324                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28325                                                         TXP_FIRST_OFDM_40_SISO,
28326                                                         TXP_LAST_OFDM_40_SISO,
28327                                                         TXP_FIRST_MCS_40_SISO);
28328
28329                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28330                                                         &pwr_offsets2[4],
28331                                                         tmp_max_pwr,
28332                                                         TXP_FIRST_MCS_40_CDD,
28333                                                         TXP_LAST_MCS_40_CDD);
28334
28335                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28336                                                     TXP_FIRST_MCS_40_CDD,
28337                                                     TXP_LAST_MCS_40_CDD);
28338
28339                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28340                                                         TXP_FIRST_OFDM_40_CDD,
28341                                                         TXP_LAST_OFDM_40_CDD,
28342                                                         TXP_FIRST_MCS_40_CDD);
28343
28344                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28345                                                         &pwr_offsets2[4],
28346                                                         tmp_max_pwr,
28347                                                         TXP_FIRST_MCS_40_STBC,
28348                                                         TXP_LAST_MCS_40_STBC);
28349
28350                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28351                                                     tmp_stbcpo,
28352                                                     TXP_FIRST_MCS_40_STBC,
28353                                                     TXP_LAST_MCS_40_STBC);
28354
28355                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28356                                                         &pwr_offsets2[6],
28357                                                         tmp_max_pwr,
28358                                                         TXP_FIRST_MCS_40_SDM,
28359                                                         TXP_LAST_MCS_40_SDM);
28360                 } else {
28361
28362                         for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28363                                      TXP_FIRST_OFDM;
28364                              rate1 <= TXP_LAST_MCS_40_SDM;
28365                              rate1++, rate2++)
28366                                 tx_srom_max_rate[rate1] =
28367                                         tx_srom_max_rate[rate2];
28368                 }
28369
28370                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28371                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28372                                                     tmp_bw40po,
28373                                                     TXP_FIRST_OFDM_40_SISO,
28374                                                     TXP_LAST_MCS_40_SDM);
28375
28376                 tx_srom_max_rate[TXP_MCS_32] =
28377                         tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28378         }
28379
28380         return;
28381 }
28382
28383 void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28384 {
28385         u8 tx_pwr_ctrl_state;
28386         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28387         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28388
28389         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28390
28391         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28392                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28393                 (void)R_REG(&pi->regs->maccontrol);
28394                 udelay(1);
28395         }
28396
28397         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28398
28399         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28400                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28401 }
28402
28403 static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28404 {
28405         return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28406                                             (0x1 << 14) | (0x1 << 13));
28407 }
28408
28409 u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28410 {
28411         u16 tmp;
28412         u16 pwr_idx[2];
28413
28414         if (wlc_phy_txpwr_ison_nphy(pi)) {
28415                 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28416                 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28417
28418                 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28419         } else {
28420                 tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28421                         << 8) |
28422                         (pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28423         }
28424
28425         return tmp;
28426 }
28427
28428 void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28429 {
28430         if (PHY_IPA(pi)
28431             && (pi->nphy_force_papd_cal
28432                 || (wlc_phy_txpwr_ison_nphy(pi)
28433                     &&
28434                     (((u32)
28435                       abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28436                           pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28437                      || ((u32)
28438                          abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28439                              pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28440                 wlc_phy_a4(pi, true);
28441 }
28442
28443 void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28444 {
28445         u16 mask = 0, val = 0, ishw = 0;
28446         u8 ctr;
28447         uint core;
28448         u32 tbl_offset;
28449         u32 tbl_len;
28450         u16 regval[84];
28451
28452         if (pi->phyhang_avoid)
28453                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28454
28455         switch (ctrl_type) {
28456         case PHY_TPC_HW_OFF:
28457         case PHY_TPC_HW_ON:
28458                 pi->nphy_txpwrctrl = ctrl_type;
28459                 break;
28460         default:
28461                 break;
28462         }
28463
28464         if (ctrl_type == PHY_TPC_HW_OFF) {
28465                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28466
28467                         if (wlc_phy_txpwr_ison_nphy(pi)) {
28468                                 for (core = 0; core < pi->pubpi.phy_corenum;
28469                                      core++)
28470                                         pi->nphy_txpwr_idx[core] =
28471                                                 wlc_phy_txpwr_idx_cur_get_nphy(
28472                                                         pi,
28473                                                         (u8) core);
28474                         }
28475
28476                 }
28477
28478                 tbl_len = 84;
28479                 tbl_offset = 64;
28480                 for (ctr = 0; ctr < tbl_len; ctr++)
28481                         regval[ctr] = 0;
28482                 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28483                                          regval);
28484                 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28485                                          regval);
28486
28487                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28488                         and_phy_reg(pi, 0x1e7,
28489                                     (u16) (~((0x1 << 15) |
28490                                              (0x1 << 14) | (0x1 << 13))));
28491                 else
28492                         and_phy_reg(pi, 0x1e7,
28493                                     (u16) (~((0x1 << 14) | (0x1 << 13))));
28494
28495                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28496                         or_phy_reg(pi, 0x8f, (0x1 << 8));
28497                         or_phy_reg(pi, 0xa5, (0x1 << 8));
28498                 } else {
28499                         or_phy_reg(pi, 0xa5, (0x1 << 14));
28500                 }
28501
28502                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28503                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28504                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28505                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28506
28507                 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28508                     pi->bw == WL_CHANSPEC_BW_40)
28509                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28510                                        MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28511
28512         } else {
28513
28514                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28515                                          8, pi->adj_pwr_tbl_nphy);
28516                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28517                                          8, pi->adj_pwr_tbl_nphy);
28518
28519                 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28520                 mask = (0x1 << 14) | (0x1 << 13);
28521                 val = (ishw << 14) | (ishw << 13);
28522
28523                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28524                         mask |= (0x1 << 15);
28525                         val |= (ishw << 15);
28526                 }
28527
28528                 mod_phy_reg(pi, 0x1e7, mask, val);
28529
28530                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28531                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28532                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28533                                 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28534                         } else {
28535                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28536                                 if (NREV_GT(pi->pubpi.phy_rev, 1))
28537                                         mod_phy_reg(pi, 0x222,
28538                                                     (0xff << 0), 0x64);
28539                         }
28540                 }
28541
28542                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28543                         if ((pi->nphy_txpwr_idx[0] != 128)
28544                             && (pi->nphy_txpwr_idx[1] != 128))
28545                                 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28546                                                                pi->
28547                                                                nphy_txpwr_idx
28548                                                                [0],
28549                                                                pi->
28550                                                                nphy_txpwr_idx
28551                                                                [1]);
28552                 }
28553
28554                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28555                         and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28556                         and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28557                 } else {
28558                         and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28559                 }
28560
28561                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28562                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28563                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28564                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28565
28566                 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28567                     pi->bw == WL_CHANSPEC_BW_40)
28568                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28569                                        0x0, BRCM_BAND_ALL);
28570
28571                 if (PHY_IPA(pi)) {
28572                         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28573                                     0x29b, (0x1 << 2), (0) << 2);
28574
28575                         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28576                                     0x29b, (0x1 << 2), (0) << 2);
28577
28578                 }
28579
28580         }
28581
28582         if (pi->phyhang_avoid)
28583                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28584 }
28585
28586 void
28587 wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28588                          bool restore_cals)
28589 {
28590         u8 core, txpwrctl_tbl;
28591         u16 tx_ind0, iq_ind0, lo_ind0;
28592         u16 m1m2;
28593         u32 txgain;
28594         u16 rad_gain, dac_gain;
28595         u8 bbmult;
28596         u32 iqcomp;
28597         u16 iqcomp_a, iqcomp_b;
28598         u32 locomp;
28599         u16 tmpval;
28600         u8 tx_pwr_ctrl_state;
28601         s32 rfpwr_offset;
28602         u16 regval[2];
28603
28604         if (pi->phyhang_avoid)
28605                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28606
28607         tx_ind0 = 192;
28608         iq_ind0 = 320;
28609         lo_ind0 = 448;
28610
28611         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28612
28613                 if ((core_mask & (1 << core)) == 0)
28614                         continue;
28615
28616                 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28617
28618                 if (txpwrindex < 0) {
28619                         if (pi->nphy_txpwrindex[core].index < 0)
28620                                 continue;
28621
28622                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28623                                 mod_phy_reg(pi, 0x8f,
28624                                             (0x1 << 8),
28625                                             pi->nphy_txpwrindex[core].
28626                                             AfectrlOverride);
28627                                 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28628                                             pi->nphy_txpwrindex[core].
28629                                             AfectrlOverride);
28630                         } else {
28631                                 mod_phy_reg(pi, 0xa5,
28632                                             (0x1 << 14),
28633                                             pi->nphy_txpwrindex[core].
28634                                             AfectrlOverride);
28635                         }
28636
28637                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28638                                       0xaa : 0xab,
28639                                       pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28640
28641                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28642                                                  &pi->nphy_txpwrindex[core].
28643                                                  rad_gain);
28644
28645                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28646                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28647                         m1m2 |= ((core == PHY_CORE_0) ?
28648                                  (pi->nphy_txpwrindex[core].bbmult << 8) :
28649                                  (pi->nphy_txpwrindex[core].bbmult << 0));
28650                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28651
28652                         if (restore_cals) {
28653                                 wlc_phy_table_write_nphy(
28654                                         pi, 15, 2, (80 + 2 * core), 16,
28655                                         &pi->nphy_txpwrindex[core].iqcomp_a);
28656                                 wlc_phy_table_write_nphy(
28657                                         pi, 15, 1, (85 + core), 16,
28658                                         &pi->nphy_txpwrindex[core].locomp);
28659                                 wlc_phy_table_write_nphy(
28660                                         pi, 15, 1, (93 + core), 16,
28661                                         &pi->nphy_txpwrindex[core].locomp);
28662                         }
28663
28664                         wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28665
28666                         pi->nphy_txpwrindex[core].index_internal =
28667                                 pi->nphy_txpwrindex[core].index_internal_save;
28668                 } else {
28669
28670                         if (pi->nphy_txpwrindex[core].index < 0) {
28671
28672                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28673                                         mod_phy_reg(pi, 0x8f,
28674                                                     (0x1 << 8),
28675                                                     pi->nphy_txpwrindex[core].
28676                                                     AfectrlOverride);
28677                                         mod_phy_reg(pi, 0xa5, (0x1 << 8),
28678                                                     pi->nphy_txpwrindex[core].
28679                                                     AfectrlOverride);
28680                                 } else {
28681                                         pi->nphy_txpwrindex[core].
28682                                         AfectrlOverride =
28683                                                 read_phy_reg(pi, 0xa5);
28684                                 }
28685
28686                                 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28687                                         read_phy_reg(pi, (core == PHY_CORE_0) ?
28688                                                          0xaa : 0xab);
28689
28690                                 wlc_phy_table_read_nphy(pi, 7, 1,
28691                                                         (0x110 + core), 16,
28692                                                         &pi->
28693                                                         nphy_txpwrindex[core].
28694                                                         rad_gain);
28695
28696                                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28697                                                         &tmpval);
28698                                 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28699                                 tmpval &= 0xff;
28700                                 pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28701
28702                                 wlc_phy_table_read_nphy(pi, 15, 2,
28703                                                         (80 + 2 * core), 16,
28704                                                         &pi->
28705                                                         nphy_txpwrindex[core].
28706                                                         iqcomp_a);
28707
28708                                 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28709                                                         16,
28710                                                         &pi->
28711                                                         nphy_txpwrindex[core].
28712                                                         locomp);
28713
28714                                 pi->nphy_txpwrindex[core].index_internal_save =
28715                                         pi->nphy_txpwrindex[core].
28716                                         index_internal;
28717                         }
28718
28719                         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28720                         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28721
28722                         if (NREV_IS(pi->pubpi.phy_rev, 1))
28723                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28724
28725                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28726                                                 (tx_ind0 + txpwrindex), 32,
28727                                                 &txgain);
28728
28729                         if (NREV_GE(pi->pubpi.phy_rev, 3))
28730                                 rad_gain = (txgain >> 16) &
28731                                            ((1 << (32 - 16 + 1)) - 1);
28732                         else
28733                                 rad_gain = (txgain >> 16) &
28734                                            ((1 << (28 - 16 + 1)) - 1);
28735
28736                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28737                         bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28738
28739                         if (NREV_GE(pi->pubpi.phy_rev, 3))
28740                                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28741                                                  0xa5), (0x1 << 8), (0x1 << 8));
28742                         else
28743                                 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28744
28745                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28746                                       0xaa : 0xab, dac_gain);
28747
28748                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28749                                                  &rad_gain);
28750
28751                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28752                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28753                         m1m2 |= ((core == PHY_CORE_0) ?
28754                                 (bbmult << 8) : (bbmult << 0));
28755
28756                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28757
28758                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28759                                                 (iq_ind0 + txpwrindex), 32,
28760                                                 &iqcomp);
28761                         iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28762                         iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28763
28764                         if (restore_cals) {
28765                                 regval[0] = (u16) iqcomp_a;
28766                                 regval[1] = (u16) iqcomp_b;
28767                                 wlc_phy_table_write_nphy(pi, 15, 2,
28768                                                          (80 + 2 * core), 16,
28769                                                          regval);
28770                         }
28771
28772                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28773                                                 (lo_ind0 + txpwrindex), 32,
28774                                                 &locomp);
28775                         if (restore_cals)
28776                                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28777                                                          16, &locomp);
28778
28779                         if (NREV_IS(pi->pubpi.phy_rev, 1))
28780                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28781
28782                         if (PHY_IPA(pi)) {
28783                                 wlc_phy_table_read_nphy(pi,
28784                                                 (core == PHY_CORE_0 ?
28785                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
28786                                                  NPHY_TBL_ID_CORE2TXPWRCTL),
28787                                                 1, 576 + txpwrindex, 32,
28788                                                 &rfpwr_offset);
28789
28790                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28791                                             0x29b, (0x1ff << 4),
28792                                             ((s16) rfpwr_offset) << 4);
28793
28794                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28795                                             0x29b, (0x1 << 2), (1) << 2);
28796
28797                         }
28798
28799                         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28800                 }
28801
28802                 pi->nphy_txpwrindex[core].index = txpwrindex;
28803         }
28804
28805         if (pi->phyhang_avoid)
28806                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28807 }
28808
28809 void
28810 wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28811                                    u8 txp_rate_idx)
28812 {
28813         u8 chan_freq_range;
28814
28815         chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28816         switch (chan_freq_range) {
28817         case WL_CHAN_FREQ_RANGE_2G:
28818                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28819                 break;
28820         case WL_CHAN_FREQ_RANGE_5GM:
28821                 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28822                 break;
28823         case WL_CHAN_FREQ_RANGE_5GL:
28824                 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28825                 break;
28826         case WL_CHAN_FREQ_RANGE_5GH:
28827                 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28828                 break;
28829         default:
28830                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28831                 break;
28832         }
28833
28834         return;
28835 }
28836
28837 void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28838 {
28839         u16 clip_off[] = { 0xffff, 0xffff };
28840
28841         if (enable) {
28842                 if (pi->nphy_deaf_count == 0) {
28843                         pi->classifier_state =
28844                                 wlc_phy_classifier_nphy(pi, 0, 0);
28845                         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28846                         wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28847                         wlc_phy_clip_det_nphy(pi, 1, clip_off);
28848                 }
28849
28850                 pi->nphy_deaf_count++;
28851
28852                 wlc_phy_resetcca_nphy(pi);
28853
28854         } else {
28855                 pi->nphy_deaf_count--;
28856
28857                 if (pi->nphy_deaf_count == 0) {
28858                         wlc_phy_classifier_nphy(pi, (0x7 << 0),
28859                                                 pi->classifier_state);
28860                         wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28861                 }
28862         }
28863 }
28864
28865 void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28866 {
28867         wlapi_suspend_mac_and_wait(pi->sh->physhim);
28868
28869         if (mode) {
28870                 if (pi->nphy_deaf_count == 0)
28871                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
28872         } else if (pi->nphy_deaf_count > 0) {
28873                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28874         }
28875
28876         wlapi_enable_mac(pi->sh->physhim);
28877 }